Выполнить команду после завершения действия — 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, который, когда действие было завершено, меняет размер спрайта.


person Varun Wadhwa    schedule 30.08.2014    source источник


Ответы (1)


Вы не можете сделать это с помощью оператора if, но взгляните на runAction:completion:. Вы используете его как:

[sprite runAction:sequence completion:^{
    // the action is complete, change size back
}];
person Mike S    schedule 31.08.2014
comment
Рад, что смог помочь :) Если ответ вам помог, отметьте его как принятый ответ. - person Mike S; 31.08.2014