码迷,mamicode.com
首页 > 其他好文 > 详细

cocos2dx游戏的基本元素

时间:2014-06-30 11:59:57      阅读:187      评论:0      收藏:0      [点我收藏+]

标签:使用   width   os      工作      


3.1 CCDirector:大总管
 
 

bool AppDelegate::applicationDidFinishLaunching() ?{

  • ?   //初始化导演类

  • ?   CCDirector *pDirector = CCDirector::sharedDirector();

  • ?   pDirector-]]>setOpenGLView(&CCEGLView::sharedOpenGLView());

  • ?   //高分辨率屏幕(例如 Retina 屏幕)的资源管理

  • ?   //pDirector-]]>enableRetinaDisplay(true);

  • ?   //启用 FPS 显示

  • ?   pDirector-]]>setDisplayStats(true);

  • ?   //设置 FPS 上限。如果不加设置,则默认 FPS 上限为 60

  • ?   pDirector-]]>setAnimationInterval(1.0 / 60);

  • ?   //创建一个场景,场景是一个 autorelease 对象

  • ?   CCScene *pScene = HelloWorld::scene();

  • ?   //运行场景

  • ?   pDirector-]]>runWithScene(pScene);

  •  

?   return true;

 
?}
 
 
 
CCDirector 的工作确实跟导演非常类似,主要负责以下工作。
 
游戏呈现方面的设定,包括设定游戏呈现的窗口、FPS显示、默认帧率上限、纹理颜色位宽等。
 
切换当前的游戏场景,暂停或恢复游戏场景的运行。
 
  • 总而言之,游戏在CCDirector的管理下完成了呈现设定与流程控制。

  • ?   CCDirector扮演着全局大总管的角色,因而很自然地采用了单例的设计模式。在程序的任何地方,都可以通过下面的简单 代码访问到:

  • ?   CCDirector *pDirector = CCDirector::sharedDirector();

  • ?   在CCDirector中,我们定义了以下管理场景的方法。

  • ?   runWithScene(CCScene*scene):启动游戏,并运行scene场景。这个方法在主程序启动时第一次启动主场景时调用。

  • ?   replaceScene(CCScene*scene):直接使用传入的scene替换当前场景来切换画面,当前场景将被释放。这是切换场景时 最常用的方法。

  • ?   pushScene(CCScene*scene):将当前运行中的场景暂停并压入到代执行场景栈中,再将传入的scene设置为当前运行场景。

  • ?   popScene:释放当前场景,再从代执行场景栈中弹出栈顶的场景,并将其设置为当前运行场景。如果栈为空,则直接结束 应用。与 pushScene 成对使用,可以达到形如由主界面进入设置界面,然后回到主界面的效果。 

 
 
 
 
  • pause:暂停当前运行场景中的所有计时器和动作,场景仍然会显示在屏幕上。

  • ?   resume:恢复当前运行场景中被暂停的计时器和动作。它与pause配合使用。

  • ?   end:结束场景,同时退出应用。

 
?   值得注意的一点是,以上三种切换场景的方法(replaceScene、pushScene、popScene)均是先将待切换的场景完全加载完 毕后,才将当前运行的场景释放掉。所以,在新场景恰好完全加载完毕的瞬间,系统中同时存在着两个场景,这将是对内 存的一个考验,若不注意的话,切换场景可能会造成内存不足。
 
 3.2 CCScene:场景
 
 
 
3.3 CCLayer:层
  • void addChild(CCNode* child);

  • ?   void addChild(CCNode* child, int zOrder);

  •  
    ?   void addChild(CCNode* child, int zOrder, int tag);
     
     
     
     
  •  
    其中child参数为将要添加的节点。对于场景而言,通常我们添加的节点就是层。先添加的层会被置于后添加的层之下。 如果想要为它们指定先后次序,可以使用不同的 zOrder 值,zOrder 代表了该节点下元素的先后次序,值越大则显示顺序越 靠上。zOrder 的默认值为 0。tag 是元素的标识号码,如果为子节点设置了 tag 值,就可以在它的父节点中利用 tag 值找到 它了。这里我们可以选择自己需要的方法来向场景中添加层。
     
    CCLayer的另一个十分重要的功能是可以接受用户输入事件,包括触摸、加速度计和键盘输入等。CCLayer中与用户输入事 件相关的成员如表 3-1 所示。
     
     
     
 
 表3-1 CCLayer中与输入事件相关的成员表

? 成员类型 

? 名称

? 描述

? 属性

? TouchEnabled

? 获取或设置是否接受触摸事件

?

? AccelerometerEnabled

? 获取或设置是否接受加速度计事件

?

? KeypadEnabled

? 获取或设置是否启用键盘输入支持

? 回调函数 

? ccTouchBegan

? 带目标的触摸事件的回调函数

?

? ccTouchMoved

?

?

? ccTouchEnded

?

?

? ccTouchCancelled

?

?

? ccTouchesBegan

? 标准触摸事件的回调函数

?

? ccTouchesMoved

?

?

? ccTouchesEnded

?

?

? ccTouchesCancelled

?

?

? registerWithTouchDispatcher 

? 注册触摸事件的回调函数,
? 在此函数内设置需要注册的触摸类型 

?

? didAccelerate

bubuko.com,布布扣

? 加速度计改变事件的回调函数

 
 
 
 

cocos2dx游戏的基本元素,布布扣,bubuko.com

cocos2dx游戏的基本元素

标签:使用   width   os      工作      

原文地址:http://www.cnblogs.com/AbelChen1991/p/3813946.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!