zoukankan      html  css  js  c++  java
  • cocos2dx 学习笔记

    1. 动作类:

        CAction : CActionInterval(持续性) 和 CActionInstant(瞬时性)

        帧动画 CAnimate,  帧动画序列 CAnimation

    2. Cocos2dx 中所有对象都创建在堆上,然后通过指针引用;

        创建方法:

        1) new 对象 -> init方法, 需要使用者进行释放;

        2)静态的工厂方法,不需要使用者进行释放;

    3. 选择器 selector, 类似于函数指针

        shedule_selector(SELECTOR)

        callfunc_selector(SELECTOR)

        menu_selector(SELECTOR)

    4. 属性

        CC_SYNTHESIZE(int, tag, Tag)

        注意,如果属性类型是对象,需要写成指针的形式

        相关宏, CC_SYNTHESIZE,  CC_SYNTHESIZE_READONLY, ...

    5.  内存管理

         retain()   引用加1;

         release() 引用减1;

         autorelease()  将对象放入自动回收池,当对象回收池自身被释放时,它当中所有的对象都 release()一次;

         每一帧开始时,创建一个新的回收池;

         每一帧结束时,回收池中的对象都会被释放一次

         工厂方法:

      

         CCObject* factorMethod() {
    
             CCObject* ret = new CCObject()
    
              //这里对对象进行必要的初始化 
    
              //...
    
             ret->autorelease()
    
             return ret
    
         }

        autorelease()很耗资源,应该尽量使用release(),只有在工厂方法等不得已的情况才使用 autorelease()

    6. 使用CCArray和CCDictory, 因为它们在释放时会调用release()

        所以,尽量用这两者,不要使用STL

    7. 使用内存相关宏, 等等

        CC_SAFE_RETAIN

        CC_SAFE_DELETE

        CC_SAFE_FREE

        CC_SAFE_RELEASE

    8. 函数跟踪

     

     class LifeCircleLogger{
    
        string m_msg;
        public:
        LifeCircleLogger(){}
        LifeCircleLogger(const string& msg):m_msg(msg){
          CCLog("%s BEGINS!",m_msg.c_str());}
        ~LifeCircleLogger(){CCLog("%s ENDS!",m_msg.c_str());}
        };
    
        #define LOG_FUNCTION_LIFE LifeCircleLogger(__FUNCTION__);
    
      

    9

  • 相关阅读:
    基于Dapper的开源Lambda扩展,且支持分库分表自动生成实体基础
    用SignalR和Layui搭建自己的web聊天网站
    MySQL查看、修改字符集及Collation
    ASP.NET MVC中有四种过滤器类型
    一个简单的大转盘抽奖程序(附.NetCore Demo源码)
    网站统计中的访问信息收集的前端实现
    微信小程序实现按首字母检索城市列表
    微信小程序异步处理
    微信小程序下拉框
    node.js上传文件
  • 原文地址:https://www.cnblogs.com/reach/p/3917498.html
Copyright © 2011-2022 走看看