2015-08-21 2 views
-1

У меня есть стрельба персонажа, и она всегда включена, когда вы касаетесь экрана, но я хочу, чтобы она остановилась, когда вы перестали касаться экрана. Прямо сейчас, когда вы касаетесь экрана, он начнет съемку, но она не остановится, когда вы перестанете касаться экрана.Как остановить съемку с помощью «NSTimer»

override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) { 
    /* Called when a touch begins */ 
    for touch: AnyObject in touches { 
     let location = touch.locationInNode(self) 
     player.position.x = location.x 
     var timer = NSTimer.scheduledTimerWithTimeInterval(0.5, target: self, selector: Selector("spawnShot"), userInfo: nil, repeats: true) 
    } 
} 

override func touchesEnded(touches: Set<NSObject>, withEvent: UIEvent){ 
    for touch: AnyObject in touches{ 
     var timer = NSTimer.scheduledTimerWithTimeInterval(0.5, target: self, selector: Selector("spawnShot"), userInfo: nil, repeats: false) 
    } 
} 
+0

В 'touchesEnded' вам необходимо аннулировать таймер, созданный вами в' touchhesBegan'. – rmaddy

ответ

1

Чтобы остановить повторяющийся таймер, который вы должны аннулировать его, за что держать timer как собственность, а затем запланировать его в touchesBegan, и когда вы хотите, чтобы остановить Invalidate таймера это в вашем случае его метод touchesEnded, вы можете invalidate таймер.

if self.timer.valid 
     { 
      self.timer.invalidate() 
      self.timer = nil 
     } 
+0

Это просто дает мне ошибку, говоря, что «таймер» не является членом –

+0

Потому что у вас нет его как переменной-члена ... Тогда вы можете получить доступ к нему с помощью себя, добавить его как свойство –

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