cocos2d-x 总结

最近终于把TD塔防的游戏补完了,写的好写的不好也不管了,在开始写游戏是总是把框架想的很大,但在开始写的时候才发现每一步原来都是那么的艰难,看来我总是高估了自己。

但不管游戏写的怎么烂,但在写的途中也总结了很多cocos2d-x的技巧和方法,和大家分享一下。

首先是CCLayer 和父层和子层 ,子层访问父层 是并不需要在子层保存 父层的指针,只需getParent()后强制转换成 父层的类型,这仅仅适合 Layer 和Scene ,如果用在sprite别的类型节点上很容易出错,因为sprite的父节点可能经常会变动,但层与层之间的关系一般都是单一且很少变动的。

第二点 如果你用了CCSpriteBatchNode去保存 texture时,然后在加载sprite时最好不要 用CCSpriteBathcNode 的对象去addChild ,因为假若你这样做,被addChild的节点 只能是尾节点,该节点不能使用addChild。

第三点 ,可以自己写一个模板类去代替 预处理函数 LAYER_NODE_FUNC ,多重继承模板类,方法是可行的。

第四点 关卡选择按钮的设计方法:关卡按钮通常一一面就有10几个按钮,如果每一个按钮都去写一个触发函数很不实际 ,这里有2种办法可以解决

    第一个是在关卡选择页面写一个保存按钮指针的容器,然后在写一个按钮触发函数,在函数里 把传递过来的CCObject 指针强制转换成 CCMenuItem类型,

然后 拿它和按钮指针容器 里的 每一个按钮 比较,若 uId相同则触发相应的事件。

    第二个就是我用的办法,用Sprite去代替CCMenuItem,然后为每一个Sprite 添加一个b2Body 然后再 写一个继承 b2QueryCallback类的回调类,

在CCTouchBegan CCTouchMoved CCTouchEnden 中 用b2World::QueryAABB函数调用先前定义个回调类判定有没有点击 那个sprite按钮上

这个的做法好处很多,比如你可以在继承的b2QueryAABB 中以修改点击判定的方法,而且因为用到box2d所以按钮可以是圆型或各种不规则图形。

但是这种方法 运行负担可能比较大,但是只是在关卡选择界面做没有问题。




   


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值