Cocos2dx作为一个游戏框架。其中游戏中的视觉部分由场景,层,精灵组成。
a. 导演: 游戏框架的执行者。负责场景切换,初始化游戏(游戏开始),游戏销毁(游戏结束)
Cocos2dx中的导演类是Director。
其中导演类常用的功能:
1. 获得导演类对象: auto director = Director::getInstance();
2. 打开或者关闭FBS: Director::getInstance()->setDisplayStates(true);
3. 设置刷新频率: Director::getInstance()->setAnimationInterval(1.0/60);
4. 运行某一个场景: Director::runWithScene(Scene);
5. 退出游戏: Director::getInstance()->end();
6. 暂停游戏: Director::getInstance()->pause(); -------> 当暂停游戏时, 仍然会绘制画面,但是会停止所有的动作,效果和定时器,并且帧率会下降到4FPS,节省电和内存资源。
7. 返回游戏: Director::getInstance()->resume();
8. 获得屏幕大小: Director::getInstance()->getVisibleSize();
b. 场景: 相当于舞台剧中的一幕。场景相当于容器,存放需要渲染的层。
场景切换: 由A场景切换到B场景,游戏中非常常见。
场景的由来: 从内存的角度,当我们把游戏中的图片资源加载到游戏菜单界面中, 图片资源会放到内存中。切换游戏进行界面的时候, 经常会销毁游戏菜单界面中的资源,
再重新加载游戏进行时的图片资源,可以减少内存的使用。怎么方便的销毁图片资源? 这时候引入场景, 当销毁场景的时候,游戏资源也会销毁。
Cocos2dx 中 的场景时利用栈的形式, 减少内存的使用,最好将栈中存放一个场景.
场景切换的两种方式: (1) replaceScene() (2) pushScene() popScene()
(1) replaceScene() -----> 会将原来的场景销毁,创建新的场景
(2) pushScene()-----> 将场景压入栈中,显示栈顶的场景;不用场景利用popScene()
我们最好使用replaceScene(),这种方式会销毁原来的场景,重新创建新的场景,这种方式虽然耗时间,但是不会占用太多的内存。
pushScene和popScene()这种方式, 切换场景的时候速度快,但是占用很多的内存。
Direcotr::getInstance()->replaceScene(NewSccene); Director::getInstance()->popScene(); Direcotr:;getInstance()->pushScene(NewScene);
c. 层: 容器,存放游戏中的元素,如精灵和菜单
注意: 尽量少使用场景,多使用合理的层;
不用添加无用的层, Cocos2dx的渲染使用Opengl的,会对性能有影响的。