zoukankan      html  css  js  c++  java
  • [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

  • 相关阅读:
    Struts2 拦截器(interceptor) 与 模型驱动3中传值方式
    Struts2 OGNL表达式
    ThreadLocal 是什么
    struts2的值栈(重点) 值栈是一个存储数据的内存结构 本质是一个接口 它的实现类OgnlValueStack
    Struts2 普通的java类 (Action)与Servlet通信 主要对象那个ServletActionContext 与 ActionContext对象来获取servlet中request对象和response对象
    struts2是多例的
    Django中一个项目里怎么使用两个数据库
    MYSQL中的锁
    详解Linux中文乱码问题终极解决方法
    Docker-compose up时报错:
  • 原文地址:https://www.cnblogs.com/zengyou/p/3702689.html
Copyright © 2011-2022 走看看