2016-08-17 2 views
0

В SpriteKit, когда я повторяю действие moveTo на спрайте, он начинает ускоряться, когда клавиша нажата более чем на секунду или около того. Вот код:Держите Sprite от ускорения

override func keyDown(theEvent: NSEvent) { 
    let key = theEvent.keyCode 
    print(key) 
    let mario = self.childNodeWithName("mario") 
    if key == 0 { 
     mario?.runAction(SKAction.repeatActionForever(SKAction.moveBy(CGVectorMake(-1, 0), duration: 0.01))) 
    } 
} 

ответ

1

Если вы когда-либо смотрели на документы, вы увидите, что есть hasActions метод, который говорит вам, является ли SKNode выполняет действие. Вы можете использовать этот метод, чтобы предотвратить запуск узла другим действием перемещения во время его перемещения:

if let marioNode = mario { 
    if key == 0 && !marioMode.hasActions() { 
     marioNode.runAction(SKAction.repeatActionForever(SKAction.moveBy(CGVectorMake(-1, 0), duration: 0.01))) 
    } 
} 
+0

Я знаю, что «hasActions», я просто не реализовал его правильно, как я полагаю. Спасибо –

+0

Если вы считаете, что мой ответ отвечает на ваш вопрос, пожалуйста, подумайте о его принятии. @AbhiV – Sweeper

+0

Просто попробовал один раз, чтобы убедиться, что это правильно, и это работает –

Смежные вопросы