将功能分成类,与world对象通信(cocos2d / box2d)

时间:2012-05-23 22:04:24

标签: iphone ios cocos2d-iphone box2d

我用Box2d让我的世界在我的场景中工作。基本上有几个球反弹,一切都很花哨。

但是,我想添加拖放球的能力。我已经可以在Cocos2D中使用静态精灵来实现这一点。现在使用Box2D,而不是将代码保存在Layer文件中,我想将其移动到CCSprite子类(所有触摸手势等)。

这意味着我必须在CCSprite子类和Layer世界之间传递位置?怎么去做这个?感谢

TLDR:如何将对象逻辑与Layer文件分离到外部文件?

1 个答案:

答案 0 :(得分:1)

有很多方法可以做你想做的事。我是这样做的:在我的游戏中我有gameController - NSObject的子类。在它的init方法中,我正在创建更多控制器:第一个 - 用于显示Box2d对象,第二个 - 用于显示控件。如果我的任何对象需要告诉另一个对象有关任何事件(例如2个特定b2Bodies之间的碰撞),它会告诉它的所有者控制器(通过指针),它会在它的父控制器上升起这个事件,然后在他的上升它父母和他所有的孩子控制者,等等。例如:我正在点击一个节点。点击,拖动等所有逻辑都在它的​​控制器类中。然后,控制该节点的控制器上升事件,所有其他控制器都知道这一点,因此可以用什么做什么,或什么也不做。在这种情况下,我的box2dController获取此消息并创建/移动b2Bodies。