1 ios设备加载文件区分大小写,模拟器不会,习惯使用统一的文件命名方式,统一小写字母。
2 避免使用固定位置,以适应不同屏幕尺寸。
3 不要魔鬼数字,定义常量
数学类:
ccp 系列:CCPoint 加减乘除,投影,距离,旋转
CCARRAY_FOREACH,CCARRAY_FOREACH_REVERSE
CCArray,CCDictionary
CCRelease系列:
CC_SAFE_DELETE(p); // 当p不为NULL,delete p 并且将 p 赋为 NULL CC_SAFE_DELETE_ARRAY(p); // ...delete[] p.. CC_SAFE_FREE(p); // ...free p ... CC_SAFE_RELEASE(p); // 当p不为NULL,p->release() CC_SAFE_RELEASE_NULL(p); // 当p不为NULL,p->release() 并且将 p 赋为 NULL CC_SAFE_RETAIN(p); // 当p不为NULL,p->retain()
CC_PROPERTY系列:
这些方法的声明全部都是virtual的,即便是内联,声明为virtual的方法也不会产生内联函数
class Ship: public cocos2d::CCNode {
// 定义一个int类的属性m_energy变量,该变量访问权限是protected。 //后面的方法名Energy,即声明了一个int getEnergy() 和一个 void setEnergy(int value)的方法,具体实现需要自己在cpp中定义 CC_PROPERTY(int, m_energy, Energy); // 基本与上相同,但是get方法传引用,即声明了一个 int& getEnergy(); CC_PROPERTY_PASS_BY_REF(int, m_energy, Energy); // 同样定义变量,但是只发声明 get 方法,具体实现需要自己在cpp中定义 CC_PROPERTY_READONLY(int, m_energy, Energy); CC_PROPERTY_READONLY_PASS_BY_REF(int, m_energy, Energy); // 同样定义变量,并且直接定义默认的get/set方法。相似的也有前4类 CC_SYNTHESIZE(cocos2d::CCObject*, m_weapon, Weapon); CC_SYNTHESIZE_PASS_BY_REF(cocos2d::CCObject*, m_weapon, Weapon); CC_SYNTHESIZE_READONLY(cocos2d::CCObject*, m_weapon, Weapon); CC_SYNTHESIZE_READONLY_PASS_BY_REF(cocos2d::CCObject*, m_weapon, Weapon); // 在setWeapon的时候,调用原有m_weapon的release,并且调用新值的的retain。当然已经排除了意外情况(相等或者NULL之类的)。 CC_SYNTHESIZE_RETAIN(cocos2d::CCObject*, m_weapon, Weapon); };
CCNode:
CCDirector:
参考链接:http://blog.csdn.net/jackystudio/article/details/12554167
整个游戏中只有一个导演;(1)在开始游戏和结束游戏时负责游戏的初始化和销毁工作。(2)管理游戏的关卡,即场景。负责各个场景之间的切换。(3)设置、获取系统信息
CCCamera
CCScene
CCNode子类,CCScene中存放的是需要渲染的层、人物角色和菜单等。它们可以作为一个整体,一起渲染,一起销毁,一起被场景切换是用,主要函数create,init.
在每一个游戏中,场景可以由许多层构成,每一层负责各自不同的任务,例如专门负责显示背景、专门负责显示道具和专门负责显示任务等。而在每一层上面,又可以添加不同的元素,如文本、精灵和菜单等。通过层与层之间的组合关系,就能让游戏显示出各种各样的界面了。当然为了看得清每一层上的东西,很多层都设置成透明或者半透明,否则只能看到最上层的东西了
CCLayer
CCSprite
精灵CCSprite是整个游戏开发处理的主要对象, 精灵就是一个可以不断变化的图片,变化包括位置变化、旋转、放大、运动等等
CCSprite的创建: 1. CCSprite * pSprite = CCSprite::create();//返回一个不带纹理的空CCSprite对象 2. CCSprite * pSprite = CCSprite::create("xxx.jpg"); 3. 通过指定图片文件名并给出图片显示区域create (const char *pszFileName, const CCRect &rect),第二个参数是CCRect对象的引用。 CCSpriteFrame * pFrame = CCSpriteFrame::create("xxxx.jpg",rect); CCSprite * pSprite3 = CCSprite::createWithSpriteFrame(pFrame); 4. 通过指定CCTexture2D材质对象来创建createWithTexture (CCTexture2D *pTexture)或者createWithTexture(tex,rect)
CCAction
主要分为三大类,CCFiniteTimeAction(有限次动作执行类)、CCSpeed(节点执行速度类)、CCFollow(节点跟随另一个节点移动). 主要用到的是CCFiniteTimeAction类,CCFiniteTimeAction分为CCActionInstant(瞬时动作)和CCActionInterval(延迟动作),其中CCActionInstant动作没有执行过程,动作瞬时完成,而CCActionInterval动作执行需要一定的时间(或者一个过程). 其中常用的 (1) CCMoveTo / CCMoveBy 移动两者的主要差别在于CCMoveTo是移动到指定坐标,CCMoveBy是相对坐标. (2) CCScaleTo / CCScaleBy 缩放 (3) CCRotateTo / CCRotateBy 旋转 (4) CCSkewTo / CCSkewBy 扭曲 (5) CCJumpTo / CCJumpBy 跳跃 (6) CCBezierTo / CCBezierBy 贝塞尔曲线 (7) CCBink 闪烁 (8) CCFadeIn / CCFadeOut 淡入淡出 (9) CCTintTo / CCTintBy 染色 例子 CCSprite *heroSprite = CCSprite::create(“hero.png”); CCMoveTo *move = CCMoveTo::create(2.0f, ccp(50, 50)); heroSprite->runAction(move);
Schedule
参考链接:http://blog.csdn.net/jackystudio/article/details/10895931