SKAction не работает должным образом
У меня есть последовательность SKActions, в которые я хотел бы сыграть, но они не играют должным образом. Глаз только закрывается и никогда не открывается снова. Я понятия не имею, почему это происходит, но, возможно, вы делаете! Помощь приветствуется, спасибо.
-(void)blink {
SKAction *delay = [SKAction waitForDuration:3];
SKAction *blinkEye = [SKAction resizeToHeight:1 duration:.2];
SKAction *delay2 = [SKAction waitForDuration:.5];
SKAction *openEye = [SKAction resizeToHeight:3 duration:.2];
SKAction *group1 = [SKAction group:@[delay,blinkEye]];
SKAction *group2 = [SKAction group:@[delay2,openEye]];
SKAction *all = [SKAction sequence:@[group1,group2]];
SKAction *repeat = [SKAction repeatActionForever:all];
[self runAction:repeat];
}
В MyScene.m
-(void)update:(CFTimeInterval)currentTime {
/* Called before each frame is rendered */
Player *player = (Player *)[self childNodeWithName:@"player"];
Player *lefteye = (Player *)[player childNodeWithName:@"leye"];
Player *righteye = (Player *)[player childNodeWithName:@"reye"];
[lefteye blink];
[righteye blink];
}
1 ответ
Решение
Нет необходимости группировать, это вызывает проблему.
SKAction *delay = [SKAction waitForDuration:3];
SKAction *blinkEye = [SKAction resizeToHeight:1 duration:.2];
SKAction *delay2 = [SKAction waitForDuration:.5];
SKAction *openEye = [SKAction resizeToHeight:3 duration:.2];
SKAction *all = [SKAction sequence:@[delay,blinkEye, delay2,openEye]]];
И позволить моргнуть глазу на каждом обновлении кадра не может работать. Эта функция вызывается до 60 раз в секунду.
Вместо этого сделайте это так при создании объекта eye:
SKAction *delay = [SKAction waitForDuration:3];
SKAction *blinkEye = [SKAction resizeToHeight:1 duration:.2];
SKAction *delay2 = [SKAction waitForDuration:.5];
SKAction *openEye = [SKAction resizeToHeight:3 duration:.2];
SKAction *all = [SKAction sequence:@[delay,blinkEye, delay2,openEye]]];
//create the lefteye object
lefteye = [[Eye alloc] init...];
//create the righteye object
righteye = [[Eye alloc] init...];
[lefteye repeatActionForever:all];