享受"啪"的按下Enter的快感。 (by云风)
cocos2dx是不是个toy引擎,不同的人有不同的看法。但是你不得不承认它很受欢迎,好多很火的手游使用的就是cocos2dx,比如我叫mt。我自己工作中,也有多个项目使用了这个引擎。我之前没写过关于cocos2dx的文章,自己也没有系统地学习过,现在,我打算写一些这方面的文章,通过写blog来重新梳理下cocos2dx的知识,这也是写blog的一个好处。
Director
游戏是具有交互性的电影。把制作游戏看成是拍电影的话,Director类就是游戏的总导演。管理着游戏的场景切换,控制游戏元素,屏幕尺寸的获取。这个类被设计成单例。
Scene
一个游戏至少得有一个场景,因此,Scene是必不可少的。
Director控制场景的方法:
- runWithScene:启动游戏,并运行该场景。
- pushScene:将正在运行的场景暂停并压栈,显示传入的场景。官方说只有存在正在运行的场景时才调用该方法,但我用cocos2d-x-2.2.5版本试了下,将第一个场景使用该函数而不是runWithScene,还是可以正常运行的。
- popScene:与pushScene对应。
- replaceScene:切换场景最常用的方法。虽然会释放之前的场景,但你的内存必须同时足够容纳下正在运行和将要运行的场景。因为他是加载完传入的场景后才释放的。
Layer
Layer是处理玩家事件响应的Node子类。
Sprite
Cocos2d中的精灵和其他游戏引擎中的精灵相似,它可以移动,旋转,缩放,执行动画,并接受其他转换。
使用Texture2D加载图片,可以用Texture2D生成对应的SpriteFrame(精灵帧),将SpriteFrame添加到Animation生成动画数据,用Animation生成Animate(就是最终的动画动作),最后用Sprite执行这个动作。
scheduler
开发中通常用到三种调度器:
schedulerUpdate:默认没有启用,通过执行schedulerUpdate()调度器每帧执行 update方法,如果需要停止这个调度器,可以使用unschedulerUpdate()方法。每一帧都执行。
scheduler:取消该调度器可以用unschedule(SEL_SCHEDULE selector, float delay);由于引擎的调度机制,自定义时间间隔必须大于两帧的间隔,否则两帧内的多次调用会被合并成一次调用。所以自定义时间间隔应在0.1秒以上。
schedulerOnce:例如,scheduleOnce(schedule_selector(HelloWorld::updateOnce), 0.1f);