2014-10-23 4 views
0

У меня есть этот код в методе touchesBeganSwift - Добавление таймера в действие в touchesBegan

let action = SKAction.rotateByAngle(CGFloat(M_PI), duration:0.5) 
myObstacle.runAction(action, withKey:"action") 

То, что я хотел бы сделать, это действие ждать .5 секунд до того, как пользователь может поворачивать препятствие снова.

Есть ли простой способ сделать это быстро?

ответ

1

Поместите свойство таймера и булевский флаг в свой класс.

var timer: NSTimer? 
var timerIsRunning = false 

В чеке touchesBegan метод, если таймер работает. Если это так, просто вернитесь из метода.

Если нет, установите значение timerIsRunning в значение true и запустите таймер с интервалом 0,5 секунды. Установите действие таймера на метод, который просто устанавливает timerIsRunning в значение false и делает недействительным таймер.

func touchesBegan(..) { 
    if self.timerIsRunning { 
     return 
    } 

    // your touchesBegan code here 
    let action = SKAction.rotateByAngle(CGFloat(M_PI), duration:0.5) 
    myObstacle.runAction(action, withKey:"action") 

    // start the timer 
    self.timerIsRunning = true 
    self.timer = NSTimer.scheduledTimerWithTimeInterval(0.5, target: self, selector: Selector("timeUpdate:"), userInfo: nil, repeats: false) 
} 

func timerUpdate() { 
    self.timer?.invalidate() 
    self.timerIsRunning = false 
} 
+0

Thanks Zisoft !! – Debacle

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