根据CocosBuilder文件自动生成代码

  次阅读 作者:智能小宝 来源:互联网 2015-09-27 15:02 我要评论(0)

本文主要讲述怎样根据Cocosbuilder生成的ccb文件自动生成相应的代码,主要以生成cocos2dx对应的C++文件为例子来说明。

cocosbuilder是一个非常好用的开源工具,可以用来编辑ui布局,粒子系统,简单的帧动画等。在编辑器中可以设置UI回调函数名,绑定编辑对象到Owner或者Doc root上以及为自定义的对象设置自定义的属性。以上三点都需要相应的代码来支持。因此在编辑完成游戏场景后,一定要写相应的代码。但是写相关的代码是比较繁琐的,很容易出现错误。

如果在场景编辑完成后,能根据场景文件自动生成代码框架将会节省不少工作量,并且减少出错的概率。下面分三个部分来一一说明如何实现自动生成代码,第一部分将会大体描述如何绑定代码,第二部分分析如何自动生成代码,第三部分给出代码实现

一 场景编辑器中控件与代码绑定

1.菜单回调函数,如下图设置,可以指定一个Selector和Target,在编辑器中设置后,将对应的target对象的某一个拥有特定签名的函数与selector指定的字符串绑定起来后,当菜单按下时,就会回调的相应的函数。

我们先来研究一下,在Cocos2dx中是如何将MenuItem的回调绑定到相应代码中的。

a.假设Document root对应的类为TestAutoGenLayer,为了实现绑定TestAutoGenLayer必须继承一个

cocos2d::extension::CCBSelectorResolver,然后实现 函数

virtual cocos2d::SEL_MenuHandler onResolveCCBCCMenuItemSelector(cocos2d::CCObject * pTarget, cocos2d::CCString * pSelectorName);

在该函数中完成代码绑定。

b.绑定代码如下:

[cpp]

SEL_MenuHandler TestAutoGenLayer::onResolveCCBCCMenuItemSelector(cocos2d::CCObject *pTarget, cocos2d::CCString *pSelectorName)

{

CCB_SELECTORRESOLVER_CCMENUITEM_GLUE(this,"BackPressed",TestAutoGenLayer::BackPressed);

return false;

}

SEL_MenuHandler TestAutoGenLayer::onResolveCCBCCMenuItemSelector(cocos2d::CCObject *pTarget, cocos2d::CCString *pSelectorName)

{

CCB_SELECTORRESOLVER_CCMENUITEM_GLUE(this,"BackPressed",TestAutoGenLayer::BackPressed);

return false;

}

上面代码将selector指定的值”BackPressed“与TestAutoGenLayer::的BackPressed函数绑定起来。(注:Selector的值可以函数名不相同)

c. BackPressed的代码框架如下

[cpp]

void TestAutoGenLayer::BackPressed(cocos2d::CCObject * pSender)

{

//在这里实现回调功能

}

void TestAutoGenLayer::BackPressed(cocos2d::CCObject * pSender)

{

//在这里实现回调功能

}

2.ControlButton回调

假设一个ControlButton在cocosbuild中有如下设置,

Document root还是TestAutoGenLayer类,在该类中实现CCBSelectorResolver的onResolveCCBCCControlSelector函数,假设代码如下

[cpp]

SEL_CCControlHandler TestAutoGenLayer::onResolveCCBCCControlSelector(cocos2d::CCObject *pTarget, cocos2d::CCString *pSelectorName)

{

CCB_SELECTORRESOLVER_CCCONTROL_GLUE(this,"DoNotPress",TestAutoGenLayer::DoNotPress);

return false;

}

SEL_CCControlHandler TestAutoGenLayer::onResolveCCBCCControlSelector(cocos2d::CCObject *pTarget, cocos2d::CCString *pSelectorName)

本站文章信息来源于网络以及网友投稿,本站只负责对文章进行整理、排版、编辑,是出于传递更多信息之目的,并不意味着赞同其观点或证实其内容的真实性。如果您有什么意见或建议,请联系QQ28-1688-302!

人工智能实验室
相关文章相关文章
  • 韩春雨称已能重复实验结果 近期将有消息公布

    韩春雨称已能重复实验结果 近期将有消息公布

  • 英国研发“杀生”机器人 通过生命体获取能量

    英国研发“杀生”机器人 通过生命体获取能量

  • 无人驾驶汽车如何改变城市生活?听听他们怎么说

    无人驾驶汽车如何改变城市生活?听听他们怎么说

  • 未来两年人工智能要怎么走?看这篇就够了

    未来两年人工智能要怎么走?看这篇就够了

网友点评网友点评
阅读推荐阅读推荐

据国外媒体报道,在过去两年内,聊天机器人(chatbot)、人工智能以及机器学习的研发和采用取得了巨大进展。许多初创公司正利用人工智能和...

霍金 视觉中国 图 英国著名物理学家霍金(Stephen Hawking)再次就人工智能(AI)发声,他认为:对于人类来说,强大AI的出现可能是最美妙的...

文|郑娟娟 今年,人工智能(AI) 60岁了。在AI60岁的时候,笔者想要介绍一下AI100,一个刚刚2岁的研究项目,但它的预设寿命是100年,甚至更长...

AlphaGo与李世石的人机大战,为大众迅速普及了人工智能的概念。 但对谷歌而言,除了下围棋,现在的人工智能进展到哪一步了?未来,人工智能...