【问题标题】:Adding Children in Cocos2d在 Cocos2d 中添加孩子
【发布时间】:2012-03-18 03:57:33
【问题描述】:

在 cocos2d 引擎中,有一种方法可以将一个对象添加为另一个对象的子对象。

例如在 Game.m 文件中的这行代码中:

CCMenu *menu = [CCMenu menuWithItems:pauseButton, nil]; pauseButton.position = ccp(s.width/2 - pauseButton.contentSize.width/2, (-s.height/2) + pauseButton.contentSize.height/2); [self addChild:menu z:100];

您可以看到 CCMenu 的菜单实例作为子对象添加到 Game 的类对象中。这实际上是做什么的?是为了记忆吗?

【问题讨论】:

    标签: objective-c cocos2d-iphone


    【解决方案1】:

    这种层级系统有助于组织和引用您的游戏组件。并显示它们。

    Game.m 是您的场景,它将显示您的游戏元素。但是,它不知道这些元素是什么。所以场景有一个孩子列表,它将“显示”它们(精灵、按钮、标签等)。因此,您将一个子元素添加到场景中,以告知场景该子元素需要显示,因为它是一个视觉元素。

    【讨论】:

      【解决方案2】:

      Cocoa 和 Qt 也使用这种层次结构,您可以将一个视图作为子视图添加到另一个视图。它与内存使用无关,它的主要目的是有一个明确的责任顺序(在 Cocoa 中:响应者链)。

      在用户界面中,最底层的视图首先有机会对用户输入做出反应。如果视图对用户输入没有反应,它将把责任转嫁给它的父级。然而在 Cocos2D 中,这并没有被使用,它主要成为一个系统,用于定位节点之间的相对位置并将节点组合在一起,以便它们都绘制在同一个“深度层”上。

      像这样的树状层次结构的缺点是,如果不递归到每个子树,就不能轻松地遍历场景中的所有节点。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-03-06
        • 2015-01-07
        • 2013-05-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-02-07
        相关资源
        最近更新 更多