[ios5 cocos2d游戏开发实战] 笔记1

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

原文地址:https://www.cnblogs.com/zengyou/p/3702689.html