Cocos2dx <基础> 核心概念 (1)

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的,会对性能有影响的。

猜你喜欢

转载自blog.csdn.net/wue1206/article/details/80137975