动画
作为一个力图降低开发难度的2D引擎,Cocos2d-x并没有使用3D和矢量等手段来使用复杂动画效果,而是引用了帧动画的方式。简单动画的制作可以来源于flash,相对复杂与细腻的动画可以利用三维建模软件逐帧渲染。但因动画通常体积庞大,通常不在游戏中大规模使用动画。
所谓动画的基本原理,是采用定时器与精灵Sprite所显示的静态内容相结合的手段。显卡在绘图过程中,纹理间切换时一个开销巨大的操作,由于精灵可以显示部分纹理,因此通常更为高效的做法是把动画用到的多个纹理按照一定的顺序排列起来,然后放置在同一个纹理下。实际上在开发工具集CocoStudio上,也是采用类似的方法。例如,一个血量条的UI控件,由一个血槽和血条两张图片,那么将两张图片合成一张作为纹理,加载血量条控件的时候,只需要加载一次纹理,然后显示左半侧作为血槽,然后根据游戏的逻辑,计算角色的血量百分比,按照这个百分比将纹理右侧部分覆盖在血槽之上即可。
这个具体显示的区域,称作框帧(SpriteFrame),同时框帧也是帧动画的基本元素。
音乐&音效
Cocos2d-x中提供了音频引擎库CocosDenshion,核心是SimpleAudioEngine这个单例类,提供了跨平台的音频回放功能。
由于加载音频文件会消耗大量的时间,如果在需要播放音效时实时加载,会导致游戏出现卡顿现象,因此需要采用preloadEffect和preloadBackgroundMusic方法来分别预加载音效和音乐文件。