Cocos2d-x基础:TestCpp之场景切换
来源:互联网 发布:anaconda linux 编辑:程序博客网 时间:2024/04/20 11:06
TransitionsTest.h 文件:
有一个场景类TransitionsTestScene,还有两个布景层类TestLayer1、TestLayer2。
在主菜单选择了TransitionsTest菜单项后,首先运行以下代码,从默认的场景切换到“场景切换示例的场景”来:
void TransitionsTestScene::runThisTest(){ CCLayer * pLayer = new TestLayer1(); addChild(pLayer); pLayer->release(); CCDirector::sharedDirector()->replaceScene(this);}调用布景层1的构造函数,在布景层中加入一个背景图片、Label文字、三个切换菜单项,代码如下:
TestLayer1::TestLayer1(void){ float x,y; CCSize size = CCDirector::sharedDirector()->getWinSize(); x = size.width; y = size.height; CCSprite* bg1 = CCSprite::create(s_back1); bg1->setPosition( ccp(size.width/2, size.height/2) ); addChild(bg1, -1); CCLabelTTF* title = CCLabelTTF::create( (transitions[s_nSceneIdx]).c_str(), "Thonburi", 32 ); addChild(title); title->setColor( ccc3(255,32,32) ); title->setPosition( ccp(x/2, y-100) ); CCLabelTTF* label = CCLabelTTF::create("SCENE 1", "Marker Felt", 38); label->setColor( ccc3(16,16,255)); label->setPosition( ccp(x/2,y/2)); addChild( label); // menu CCMenuItemImage *item1 = CCMenuItemImage::create(s_pPathB1, s_pPathB2, this, menu_selector(TestLayer1::backCallback) ); CCMenuItemImage *item2 = CCMenuItemImage::create(s_pPathR1, s_pPathR2, this, menu_selector(TestLayer1::restartCallback) ); CCMenuItemImage *item3 = CCMenuItemImage::create(s_pPathF1, s_pPathF2, this, menu_selector(TestLayer1::nextCallback) ); CCMenu *menu = CCMenu::create(item1, item2, item3, NULL); menu->setPosition( CCPointZero ); item1->setPosition(ccp(VisibleRect::center().x - item2->getContentSize().width*2, VisibleRect::bottom().y+item2->getContentSize().height/2)); item2->setPosition(ccp(VisibleRect::center().x, VisibleRect::bottom().y+item2->getContentSize().height/2)); item3->setPosition(ccp(VisibleRect::center().x + item2->getContentSize().width*2, VisibleRect::bottom().y+item2->getContentSize().height/2)); addChild(menu, 1); schedule( schedule_selector(TestLayer1::step), 1.0f); }当我们按下向右或向左的菜单项后,就会调用下面的回调函数,进行场景的切换,代码如下:
void TestLayer1::nextCallback(CCObject* pSender){ s_nSceneIdx++; s_nSceneIdx = s_nSceneIdx % MAX_LAYER; CCScene* s = new TransitionsTestScene(); CCLayer* pLayer = new TestLayer2(); s->addChild(pLayer); CCScene* pScene = createTransition(s_nSceneIdx, TRANSITION_DURATION, s); s->release(); pLayer->release(); if (pScene) { CCDirector::sharedDirector()->replaceScene(pScene); }}上面代码的执行过程:
(1)创建新场景、布景层
(2)将布景层放入场景中
(3)包装创建的新场景,增加切换效果
(4)替换场景。
OK,如果正常点写切换场景这个效果的话,是这么写的:
CCScene* s = new CCScene();testLayer* pLayer = new testLayer();s->addChild(pLayer);pLayer->release();if (s){CCDirector::sharedDirector()->pushScene(CCTransitionSlideInT::create(2,s));}我这写法也有点戳~ 写法有千奇百怪,但执行过程都是这些。123按顺序来。
最后,注意一点,pushScene只是将新场景放到栈顶,显示出来,旧场景依然存在(在内存中),所以一般是使用replaceScene。
没有最好的方法,只有最适合的方法,所以实际情况,自己把握咯~
- Cocos2d-x基础:TestCpp之场景切换
- Cocos2d-x 2.0 TestCpp之场景切换动画深入分析
- Cocos2d-x 2.0 TestCpp之场景切换动画深入分析
- Cocos2d-x 2.0 TestCpp之场景切换动画深入分析
- Cocos2d-x基础:TestCpp之ActionsTest
- Cocos2d-x之场景切换
- Cocos2d-x之场景切换
- Cocos2d-x 之场景切换
- Cocos2d-x基础:TestCpp之项目结构分析
- cocos2d-x学习之场景切换
- cocos2d-x 之 场景间切换效果
- cocos2d-x 场景切换
- cocos2d-x 场景切换
- cocos2d-x 场景切换
- Cocos2d-x场景切换
- cocos2d-x场景切换
- cocos2d-x的TestCpp分析之TransitionsTest
- cocos2d-x(2):场景管理函数切换管理基础学习
- Repeater中不能用ImageButton显示图片用什么来代替最好我的个人建议
- 二进制形式中1的个数
- ASM实例操作
- CX-ONE 4.0 序列号
- HDU 4337 King Arthur's Knights(暴力dfs)
- Cocos2d-x基础:TestCpp之场景切换
- java.lang.SecurityException: User has not given permission to device UsbDevice
- 一个失败软件项目的思考
- fedora 学习日志
- RMAN 备份与恢复 实例
- 如何实现窗口阴影效果 (SysShadow、分层窗口、DWM)
- ThreadLocal 线程内的数据共享(线程间隔离)
- UVA 784 (13.08.09)
- http 协议