【问题标题】:Cocos2d - Overriding addChild for ChildCocos2d - 为子级覆盖 addChild
【发布时间】:2013-08-18 15:09:04
【问题描述】:

我有一个继承自 CCNode 的类。我想覆盖将此类添加到父级。

所以如果 ClassA 继承 CCNode,我像这样添加它[self addChild:ClassA];。 ClassA 包含 3 个精灵,我希望在添加 ClassA 时添加所有 3 个精灵。有没有办法做到这一点?

我查看了addChild 并看到它在孩子上调用了 setParent,所以在 ClassA 中我重写了 setParent 来执行此操作:

- (void) setParent:(CCNode *)parent {
    [super setParent:parent];
    [parent addChild:_sprite1 z:kZClassA];
    [parent addChild:_sprite2 z:kZClassA];
    [parent addChild:_sprite3 z:kZClassA];
}

对我来说似乎有点 hacky?有更好的方法吗?

【问题讨论】:

    标签: objective-c cocos2d-iphone


    【解决方案1】:

    无需为此任务覆盖addChild。 您所要做的就是在ClassA 中创建精灵时添加它们。当您将 ClassA 添加为节点的子节点时,也会自动添加 ClassA 子节点。 (因为他们是ClassA 的孩子)。

    假设你在ClassA的init方法中创建你的精灵:

    - (id) init {
        if (self = [super init]) {
             // Create the sprites and then :
             [self addChild:sprite1]; // Add the sprite as a child of ClassA
             [self addChild:sprite2];
             [self addChild:sprite3];
        }
    
        return self;
    }
    

    然后将classA 添加到所需节点(可能是CCLayer 实例):

    [self addChild:classAInstance]; // Where self is an instance of your desired CCNode
    

    【讨论】:

    • 谢谢,我应该看到了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-18
    • 1970-01-01
    • 2012-10-07
    • 1970-01-01
    • 2013-04-09
    相关资源
    最近更新 更多