使用singleton或CCDirector访问场景?关于层次互动的问题

时间:2011-07-13 11:43:31

标签: objective-c cocos2d-iphone

我读过一本书,当我在场景中有多个图层时,我应该将图层设置为场景的属性,并通过使用场景的单例来获取它们然后调用它的属性。

但我认为我可以使用[[CCDirector sharedDirector]runningScene]而且我可以获得场景,这样我就可以在不使用单身的情况下访问该属性。这是更好的方法吗?

我也读过Cocos2D概念,它的网站上告诉我,Scene包含了一个层,它给了场景一个行为等等。这意味着我应该设置我的图层,以便他们可以互相交谈,并且可以在不搞乱场景的情况下做他们的事情? (除了改变我应该调用CCDirector的场景)但我认为如果我使用我的场景命令我的图层会更好吗?因为场景具有层的所有引用,所以编程比使层彼此交谈更容易......

谢谢!

2 个答案:

答案 0 :(得分:0)

你的问题相当令人困惑。场景可以有很多层。我目前正在开发的游戏中有一个场景(在主游戏期间),有几个层以各种方式执行。如果您需要另一个类来控制图层,那么有多种方法可以做到这一点。

  • 将指针传递给外部类的方法
  • 拥有一个属性来存储指针并从创建图层的类
  • 中设置它
  • 让图层包含在自己的CCLayer子类中,并使其成为单例
  • 有一个小的单例类,用于存储指向需要共享的所有图层的指针。
  • 或者你想到的任何其他事情

答案 1 :(得分:0)

如果你想从另一个类(也就是同一个场景中的另一个层)访问运行场景中的图层,你可以使用[[CCDirector sharedDirector] runningScene]获取对场景的引用,然后使用getChildByTag:来获取引用到特定的层。

如果要访问同一场景中的图层,最好在图层的onEnter方法中执行这些调用,而不是init方法。