Cocos2d:这个设计模式有效吗?

时间:2012-12-07 21:51:38

标签: flash design-patterns cocos2d-iphone

我有一个CCScene和几个CCSprites作为节点添加到它。然后我有一个子类(也添加到SAME CCScene类实例),我们在这里称之为无论如何,CCSprite有一些聪明的beheaviour。我想允许这个类引用添加到主场景的CCSprite节点并修改它们的一些属性(例如可见性)。我目前的解决方案是添加一个指向NSMutableArray的指针作为Whatever类的成员变量。

我使用CCScene类通过Whatever类触发这些操作。例如,我在特定时间在Whatever节点中调用“TriggerAction”方法。此操作会修改属于同一父CCScene的CCSprit。

我是一个新手,但这听起来像是对我有潜在危险的东西,我想知道这是一个已知的设计模式,还是更糟糕的,一个已知的错误。

使用这样的模式有经验吗?我添加了“Flash”作为标记,因为Cocos2D从Flash继承了一些概念。

编辑:

无论什么是特殊的精灵(例如行星),触摸时应该显示LevelIcon精灵。我的问题是我想将levelIcons放在屏幕上的行星位置上,最简单的方法是将它们添加到包含行星的场景中。我现在将探讨解决方案,它们只被添加到地球上,无论是什么子项......问题就是这样,我将它们结合起来很多,我无法在其他不需要LevelIcons的场景中回收Whatever类。 / p>

Is this pattern valid

1 个答案:

答案 0 :(得分:1)

这是一个好的模式,但由于兄弟姐妹保留了其他兄弟姐妹,因此有可能泄露记忆。

更好的解决方案是使sprite成为控制节点的子节点。这样你就不会冒成保留周期的风险,并且你不必有一个单独的数组来保持对精灵的引用,因为它们已经存在于子数组中。您可以使用标签来识别各个精灵。

如果“Whatever”实际上(不需要)显示任何内容,则应使用CCNode作为超类而不是CCSprite。