如何实现场景自动切换?我尝试了多种方法,例如在AppDelegate.cpp文件中的applicationDidFinishLaunching()函数中。
想在导演>中运行WithScene(pLandlords);直接用 replaceScene() 函数替换场景被证明是不可行的;
有没有想过在init()和onEnter()函数中使用时间调度来实现场景自动切换,但答案仍然是否定的。最后发现,通过在向导操作中实现函数回调操作,可以在函数
回调操作中定义回调函数
可以将场景替换在其函数体类中(可以使用场景自动切换来实现简单的动画效果)。
[实现场景自动切换]。
(1) 定义枚举常量以识别精灵
枚举
kTag=1,
};
在 init() 函数中创建精灵中,截图是代码的函数部分
(2) 通过 onEnter() 函数中的 kTag 获取精灵对象,并创建一个动作序列(必须包含函数回调动作)。
这里增加了一个延时动作(也称为空动作)程序开发,使场景的自动过渡更好、更明显。
voidLandlords::onEnter()
CCLayer::onEnter();CCSprite*
pSprite=(CCSprite*)getChildByTag(kTag);
pSprite->runAction(CCSequence::create(CCDelayTime::create(2)cocos 场景切换动画,CCCallFunc::create(this,
callfunc_selector(房东::ShowBack))cocos 场景切换动画,空));
(3) 回调操作是对回调函数 Landlords::ShowBack 的引用,该函数在其头文件中说明
然后在实现该功能时切换场景(切换场景时可以添加过渡动画效果)。
voidLandlords::ShowBack()
切换到用户登录屏幕
CCScene*pHost=HostScene::scene();
CCDirector::sharedDirector()->replaceScene(pHost);
这里不介绍 HostScene 类3D交通工具,它主要用于布景,可以替换为任何场景。
【跑步效果】
由于向导执行的动作不同,运行效果也会不同,此实例的运行效果是延迟2秒后自动切换到另一个场景:(如图所示)。
其他效果:切换场景时可以自定义场景动画过渡,自行试用
【总结】实现
场景自动切换存在诸多误区,最终发现回调函数动作是用来实现没有动画的简单动画效果的。
(注:图片资源不宜用于商业目的,以免造成不必要的麻烦)。
完整来源: