[20110209]Cocos2dSimpleGame入门系列《如何用cocos2d-x来开发简单的Uphone游戏》学习小记

原文: http://www.cnblogs.com/walzer/archive/2010/10/10/1847089.html

拜读王哲王总的cocos2d-x入门教程,将学习过程中对C++或cocos2d-x框架不熟悉的知识点按自己的理解在此作个记号。

 

1.以下关联语句:

   GameOverLayer():_label(NULL) {};

   CCX_SYNTHESIZE_READONLY(cocos2d::CCLabel*, _label, Label);

   其实是定义一个只读属性Label,在类中可以使用this->getLabel来访问。

   如果是CCX_SYNTHESIZE,则定义的属性是可读写(可以使用this->setLabel)。

   套用C#的思维,可以使用如下代码来对照理解(类名为GameOverLayer):

   private cocos2d::CCLabel  _label=null;

   protected cocos2d::CCLabel  Label

  {

        get{return _label;}

        set{_label = value;}//如果是CCX_SYNTHESIZE宏定义,则属性可写

  }

 

 2.几个宏:

 (1)CCX_SYNTHESIZE(varType, varName, funName)与CCX_SYNTHESIZE_READONLY(varType, varName, funName)

   根据宏声明,第一个参数varType是变量的类型,第二个参数是变量名称,第三个参数是getter或setter访问器名称。

   参考第1点中的写法,这边声明了一个名称为 _label的变量,其类型为第一个参数指定(这里是CCLabel),第三个参数表明我们在程序中如何访问这个变量:set+funName/get+funName,也就是setLabel/getLabel。

   注:CCX_SYNTHESIZE_READONLY表示这个属性只有getXXX访问方法

 (2)LAYER_NODE_FUNC(layer)

   宏定义原文:for the subclass of CCLayer, each has to implement the static "node" method

 (3)SCENE_NODE_FUNC(scene)

   宏定义原文:for the subclass of CCScene, each has to implement the static "node" method

  用2、3两个宏的原因在教程中也说的比较清楚“ 由于cpp里没有self这种强大的关键字,所以CCLayer::node()和CCScene::node()方法的都需要派生类自己实现一份,不能像objc那样直接从父类继承下来靠self关键字变成指向自己的对象。由于每份node方法的代码都类似,我们就做了两个宏来方便大家 LAYER_NODE_FUNC和SCENE_NODE_FUNC. 如果想使用这两个宏,就必须在派生类里实现bool init()方法。”

  3.CGRect::CGRectInterestcRect

   CGRect类里包含了很多有关坐标/区域的函数,这个判断两个矩形区域是否交叉。

  4. 5种回调函数类型:(可以理解为C#中的事件激发)

  • schedule_selector
  • callfunc_selector
  • callfuncN_selector
  • callfuncND_selector
  • menu_selector
  •  

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值