Cocos2dx 场景自动切换

Cocos2dx 场景自动切换,第1张

概述最近开始着手开发一个手游,把遇到的一些技术性问题解决方案记录一下。 一般情况我们点开一个游戏的时候,首先会出现展现开发团队的slogan的场景,然后会自动切换到资源加载场景或者菜单。 这样场景的自动切换在cocos2dx中如何实现呢,首先先来说说场景切换的问题。 cocos2dx中有一个大总管Director,由它来管理场景的切换。我们来看看创建新项目后,cocos自动为我们生成的代码,在AppD

最近开始着手开发一个手游,把遇到的一些技术性问题解决方案记录一下。

一般情况我们点开一个游戏的时候,首先会出现展现开发团队的slogan的场景,然后会自动切换到资源加载场景或者菜单。

这样场景的自动切换在cocos2dx中如何实现呢,首先先来说说场景切换的问题。

cocos2dx中有一个大总管Director,由它来管理场景的切换。我们来看看创建新项目后,cocos自动为我们生成的代码,在AppDelegate.cpp中有这样一段:

auto scene = HelloWorld::createScene();director->runWithScene(scene);


首先创建了一个HelloWorld的场景对象,然后大总管director调用runWithScene方法来展示这个场景,只有在程序启动调用一个场景时才会使用runWithScene这个方法。

切换场景使用的方法是replaceScene,看一个例子:

auto new_scene = NewScene::createScene();<pre name="code" >Director::getInstance()->replaceScene(new_scene);
 
getInstance()方法获得了一个director的实例,上面那个例子里面的director就是这样的一个实例。

在切换场景的过程中还可以添加特效,例如蹦蹦跳跳地切换:

Director::getInstance()->replaceScene(TransitionJumpZoom::create(1,new_scene));
传入的两个参数分别是切换所用时间以及切换到的场景对象。在官方的demo中有很多场景切换特效的例子,如果感兴趣可以一一尝试。


接下来就说一下如何进行自动切换,其实在cocos中说到自动调用什么,大家就都不陌生了,第一时间想到的就是定时器,cocos中的定时器有三种,因为不是本文重点,就不一一介绍着三种了,只说一下用到的一种:

scheduleOnce(schedule_selector(被调用函数),时间)

这是一种只执行一次的定时器,在设置了这种定时器以后,经过设定的时间,就会自动调用schedule_selector中的函数,使用这个定时器,就可以很方便地实现场景的自动切换了。

例如本文一开始提到的展现完开发团队slogan后。自动切换到另一个场景,我们可以在前一个scene的init函数最后设置这个定时器:

this->scheduleOnce(schedule_selector(HelloWorld::changeScene),2.0f);


使用这个定时器调用切换场景的函数changeScene,这里注意这个函数的参数列表一定要是一个float类型的参数例如:

voID changeScene(float dt);


我们在这个函数里面实现切换场景的代码即可:

voID HelloWorld::changeScene(float dt){    auto load_scene = new_Scene::createScene();    Director::getInstance()->replaceScene(TransitionJumpZoom::create(1,new_scene));}
PS.replaceScene会将原来的场景释放掉,有些时候我们需要原来的场景暂停,在完成新场景后返回,例如在游戏过程中进入设置界面修改一下声音什么的,这时使用replaceScene就不合适了,cocos中进行场景切换还有popScene和pushScene两种方法,我将在后面的blog中进行使用讲解。 总结

以上是内存溢出为你收集整理的Cocos2dx 场景自动切换全部内容,希望文章能够帮你解决Cocos2dx 场景自动切换所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1047093.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存