1.场景
场景类在Cocos2d-x中用CCScene表示,单独的一个场景实际上只是一个空壳,里面什么东西都没有,我们需要向里面加入层,精灵,菜单等元素。我们都玩过一些手机或电脑游戏,在进入游戏之前,都会有一个开始界面,里面有开始游戏,读取存档,游戏设置等选项,每当你选择了一个选项,都会跳转到相应的界面,比如点击了开始游戏就会跳转到游戏的界面,那么开始的界面实际上就是一个场景,游戏界面是另外一个场景,而开始游戏以及游戏设置这些按钮不过是添加到场景中的一些元素。我们可以脑残的认为,游戏里面每一次的画面跳转就是一个场景,当然实际中也并不完全是这样。
2.导演
一个游戏中会包含很多个场景,那么如何有效的管理这些场景确实是一个麻烦,Cocos2d-x中提供了一个CCDirector类来负责管理他们,CCDirector也被称为导演类,有加载场景,切换场景等功能。
2.1 加载场景
刚进入游戏的时候,必须有一个初始的场景,加载初始场景的方式代码清单如下所示:
CCDirector::sharedDirector()->runWithScene(pScene);
runWithScene只在加载第一个场景的时候使用
2.2 切换场景
如果我们想要做一个游戏,点击开始游戏之后切换到游戏的场景,就需要使用如下方法代码:
CCDirector::sharedDirector()->replaceScene(pScene);
2.3 场景切换的特效
CCDirector::sharedDirector()->replaceScene(CCTransitionSlideInT::create(2.0f,theOtherScene::scene()));
CCTransitionSlideInT是Cocos2d-x提供的一个场景类,这个场景类又包含了子场景,通过CCTransitionSlideInT的create函数就可以创建具备该动画的场景。create函数共有两个参数 (float t ,CCScene* scene),其中2.0f是动画播放的时间,theOtherScene::scene()是将要显示的场景类。
Cocos2d-x的场景切换特效有很多种,这些特效是通过派生自CCScene的CCTransitionScene系列场景特效类实现的,大家可以自行尝试或查看官方Demo的SceneTest部分
2.4场景的推进和弹出
我们之前所做的场景切换用到的是replaceScene函数,该函数在进行场景切换时,会使旧的场景释放掉,即释放该场景所占用的内存空间,当你再次访问到该场景时场景会重新加载。但是有些时候我们切换场景的时候并不希望它被释放掉,而是保留现场,以便于一会我们再切换回来,此时我们可以用到另外两种场景切换方式:推进和弹出。
推进场景的代码如下所示:
CCDirector::sharedDirector->pushScene(theOtherScene::scene());
推荐一款游戏,还不错
http://www.wotui123.com/wb008.htm?from=168264&gid=3
本文出自 “Linux运维” 博客,请务必保留此出处http://2853725.blog.51cto.com/2843725/1562559
原文地址:http://2853725.blog.51cto.com/2843725/1562559