Cocos2dx <基础> 核心概念 (1)
Cocos2dx作为一个游戏框架。其中游戏中的视觉部分由场景,层,精灵组成。
导演: 游戏框架的核心执行者,在软件系统中负责一系列关键操作:处理场景切换、启动游戏流程以及完成游戏退出流程。这些操作分别对应于软件运行的初始状态和最终状态。
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场景,游戏中非常常见。
场景的由来: 在内存管理方面,在将游戏中的图片资源加载至游戏菜单界面时(即将其放入内存),当切换到新的game interface时(即重新呈现新的画面),系统通常会清除之前的游戏菜单相关资源以释放内存空间
重新加载运行中的游戏以获取其图片资源,并将这些信息存储起来以便后续使用。如何有效地释放或销毁这些图片资源?通过引入场景机制,在销毁场景时能够同步清理相关的游戏资源。
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);
html
c. 层: 容器,存放游戏中的元素,如精灵和菜单
注意: 尽量少使用场景,多使用合理的层;
不用添加无用的层, Cocos2dx的渲染使用Opengl的,会对性能有影响的。
