从子SKSpriteNode向SKScene添加SKSpriteNode

时间:2014-07-25 05:13:06

标签: ios sprite-kit

我有一个SKScene,我在其中添加SKSpriteNode。我已经将SKSpriteNode类子类化以创建此节点。在子类中,我在精灵上定义了某些SKActions。我想要的是,当在这个精灵上运行的SKAction序列结束时,我向场景添加一个新的精灵节点。这怎么可能。以下是我的代码:

我在skspritenode子类(TEMissileNode)上运行的序列的代码: -

SKAction *moveDown = [SKAction moveToY:self.position.y - 20 duration:0.2];

SKAction *animation = [SKAction animateWithTextures:textures timePerFrame:time/7];

SKAction *moveMissileProjectile = [SKAction moveTo:pointoffScreen duration: time];

SKAction *group = [SKAction group:@[animation, moveMissileProjectile]];

SKAction *sequence = [SKAction sequence : @[moveDown,group, [SKAction removeFromParent]]];

[self runAction:sequence];

从主场景我调用执行这些操作的方法

 TEMissileNode *missile = [TEMissileNode missileAtPoint: CGPointMake(copter.position.x + copter.size.width/2, copter.position.y - 20)
                                                     Type:TEMissileTypeA];



    [self addChild:missile];
    [missile moveTowardsPosition:position];

我想要的是,在完成方法(moveTowardsPosition:position)之后,我将另一个子精灵节点添加到场景中,但是如何从该方法获得完成通知。

1 个答案:

答案 0 :(得分:1)

在完成某个操作后,有两种方法可以调用代码。

在runAction之后使用完成块。

[self runAction:sequence completion:^{
    //Add relevant code here.
}];

或者,添加另一个块以在序列结束时执行。

SKAction *actionBlock = [SKAction runBlock:^{
    //Add relevant code here.
}];
SKAction *sequence = [SKAction sequence : @[moveDown,group, [SKAction removeFromParent], actionBlock]];