将两个精灵节点添加到父节点会导致应用程序崩溃

时间:2014-08-02 10:23:29

标签: ios objective-c sprite-kit

我是一个简单的sprite-kit游戏,我在父节点上运行一个动作(移动一步):

SKSpriteNode *firstNode = [SKSpriteNode spriteNodeWithColor:[SKColor blackColor] size:CGSizeMake(100, 100)];
firstNode.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:firstNode.size];
firstNode.physicsBody.dynamic = YES;
firstNode.position = CGPointMake(100, 100);
[self addChild:firstNode];

SKSpriteNode *secondNode = [SKSpriteNode spriteNodeWithColor:[SKColor blackColor] size:CGSizeMake(100, 100)];
secondNode.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:secondBlock.size];
secondNode.physicsBody.dynamic = YES;
secondNode.position = CGPointMake(200, 200);
[self addChild:secondNode];

SKSpriteNode *parentNode = [SKSpriteNode node];

[parentNode addChild:firstNode];
[parentNode addChild:secondNode];

SKAction *moveOneStep = [SKAction moveBy:CGVectorMake(100,  0) duration:.1];

[parentNode runAction:moveOneStep];

但是将firstNode作为子节点添加到parentNode会导致应用程序崩溃!!

有人可以告诉我我的代码有什么问题吗?

谢谢,

1 个答案:

答案 0 :(得分:0)

在Xcode控制台中阅读错误消息。它会说“试图用现有父节点添加节点”。

将其分解为相关代码,您正在执行此操作,这是非法的:

[self addChild:firstNode];
[self addChild:secondNode];

[parentNode addChild:firstNode];
[parentNode addChild:secondNode];

节点不能是两个父母的孩子。您必须决定他们是否应该是selfparentNode的孩子。