2014-08-30 25 views
0

在SpriteKit,我有我的精灵一个简单的动作:做一个命令后已采取行动 - SpriteKit

sprite.size = CGSizeMake(40, 10); 
sprite.physicsBody =[SKPhysicsBody bodyWithRectangleOfSize:sprite.size]; 
sprite.position = CGPointMake(65, 230); 
SKAction *changeImage = [SKAction setTexture:[SKTexture textureWithImageNamed:@"raniSlide"]]; 
SKAction *wait = [SKAction waitForDuration:.1]; 
SKAction *changeImage2 = [SKAction setTexture:[SKTexture textureWithImageNamed:@"raniStick"]]; 
SKAction *sequence=[SKAction sequence:@[changeImage, wait, changeImage2]]; 
[sprite runAction:sequence]; 

它改变纹理,等待,然后再次改变纹理。这是它在一段时间鸭子。在避让后,我希望它恢复到原来的大小。当我在runAction命令之后放置用于更改大小的代码时,它不会执行第一个sprite.size = CGSizeMake(40,10),并且根本不会执行,因为它保持与在开始。所以我想知道如何做一个if语句,当一个动作完成时,它会改变精灵的大小。

回答

1

你不能用if声明来做,但看看runAction:completion:。您使用它像:

[sprite runAction:sequence completion:^{ 
    // the action is complete, change size back 
}]; 
+0

谢谢你这么多! – 2014-08-31 17:16:21

+0

很高兴我可以帮助:)如果答案适合您,请将其标记为[接受的答案](http://stackoverflow.com/help/accepted-answer)。 – 2014-08-31 17:24:17

相关问题