2012-12-07 22 views
0

我有一個CCScene和幾個CCSprites作爲節點添加到它。然後我有一個子類(也添加到SAME CCScene類實例中),我們在這裏稱之爲無論什麼,CCSprite有一些聰明的人物。我想讓這個類引用添加到主場景中的CCSprite節點並修改它們的某些屬性(例如可見性)。我目前的解決方案是添加一個指向NSMutableArray的指針,作爲任何類的成員變量。Cocos2d:這種設計模式是否有效?

我使用CCScene類通過Whatever類觸發這些動作。例如,我在特定時間在任意節點中調用「TriggerAction」方法。此操作修改屬於同一父CCScene的CCSprites。

我是一個新手,但它聽起來像是對我有潛在危險的東西,我想知道這是一個已知的設計模式,或者更糟糕的是,一個已知的錯誤。

使用這種模式的經驗?我添加了「Flash」作爲標籤,因爲Cocos2D繼承了Flash的一些概念。

編輯:

無論是一個特殊的精靈在觸摸後應該顯示LevelIcon精靈(如地球)。我的問題是,我想將levelIcons定位在屏幕上的行星位置,最簡單的方法是將它們添加到包含行星的場景中。我現在將探索解決方案,只要他們被添加到行星,無論sublcasses ..問題是這樣,我將他們很多,我無法回收其他場景中的任何類,我不需要LevelIcons。

Is this pattern valid

+0

如果我們明確瞭解您正在嘗試做什麼,我們將能夠更好地爲您提供幫助。你能舉出一個「真實遊戲」的例子嗎?我所看到的真正的問題是,您無法確定這些操作將以何種順序進行。因此,在下一次更新迭代之前,「無論如何」的行爲都不會「產生影響」。 –

回答

1

這是一個好的模式,但還有以來同級保留其他的兄弟姐妹內存泄漏的可能性。

更好的解決方案是製作控制節點的子元素。這樣你就不會有保留週期的風險,並且你不必擁有一個單獨的數組來保持對精靈的引用,因爲它們已經在子數組中了。您可以使用標籤來識別單個精靈。

如果「無論」實際上沒有(需要)顯示任何東西,你應該使用CCNode作爲超類而不是CCSprite。

+0

無論是什麼特殊的精靈(如行星),當被觸摸時應該顯示LevelIcon精靈。我的問題是,我想將levelIcons定位在屏幕上的行星位置,最簡單的方法是將它們添加到包含行星的場景中。我現在將探索解決方案,只要他們被添加到行星,無論sublcasses ..問題是這樣,我將他們很多,我無法回收其他場景中的任何類,我不需要LevelIcons。 – mm24

相關問題