码迷,mamicode.com
首页 > 其他好文 > 详细

Cocos2d-X对常用Object-C特性的替换

时间:2014-04-30 23:06:27      阅读:469      评论:0      收藏:0      [点我收藏+]

标签:class   c   size   t   tar   sp   art   get   int   文件   set   

      平台的转换,总是让我们不自觉的去寻找两者的相同处,不过Cocos2d-X的确对很多Object-C的特性进行了模仿性质的封装,使熟悉Object-C的人能够在其中看到很多类似的概念而感到亲切。
      
      1:Property(特性)
         虽然没有感觉到它有多大的意义,不过习惯了用Property而让编译器来创建getter和setter方法,还是可以在Cocos2d-X中找到类似的方法:
         CC_SYNTHESIZE(int,level,Level);这个宏会创建getLevel()和setLevel(int)两个方法。
         CC_SYNTHESIZE_RETAIN();也很容易理解,是具有retain属性的变量。

      2:委托机制
         由于Object-C的消息机制,我们只要拿到了某一个类的指针,就可以向它发送任何消息,因此即使不识闲protocol,也会可以实现委托机制的,但是为了便于管理,我们还是通过实现protocol来实现接口,用来响应某个Delegate回调。
        在C++中我们没有接口的概念,但是我们可以有多重继承,查看Cocos2d-X的源码也可以找到,通过继承的方式来实现委托的回调。
        例如,我们定义一个动画播放的代理,动画播放完后会回调:

        class AnimaDelegate

         {

                   Public:

                            Virtual void callWhenAnimFinished(){ };

         }

         这样我们只需要让响应回调的类,继承AnimaDelegate并重写callWhenAnimFinished方法即可。
 
      3:声明与实现
         Object-C并没有严格规定所有的消息都需要声明,但是C++里必须严格实现。即使是对父类方法的重写,也需要重新声明。Cocos2d-X为我们定义了很多方便的宏来实现常用方法的声明和定义;
       如:LAYER_NODE_FUNC(MainTitleScene); 它定义并声明了node()。这对于CCNode类来说实用不少。类似的SCENE_NODE_FUNC(StartTitleScene);
   
      4:
简单数据的存储

         CCUserDefault,类似于Object-C中的NSUserDefault,用来存储一些简单的数据。

         CCUserDefault::sharedUserDefault()->setIntegerForKey(“flag”,0);

         CCUserDefault::sharedUserDefault()->getIntegerForKey(“flag”);

       可能为了节省IO操作,cocos2d-x做了一些优化,并不是马上写入文件,而是到了CCUserDefault释放时再写入,如果想要马上写入,可以执行调用下CCUserDefault中的flush函数即可保存了。

            当然游戏的存档还是不能实用如此简单的方式来存储,这个会在随后具体说明。通常只是用来存储游戏的一些配置,安全性不高的数据。

Cocos2d-X对常用Object-C特性的替换,布布扣,bubuko.com

Cocos2d-X对常用Object-C特性的替换

标签:class   c   size   t   tar   sp   art   get   int   文件   set   

原文地址:http://www.cnblogs.com/xdxer/p/3701250.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有
迷上了代码!