2014-11-20 2 views
1

Мне нужен цикл 5 раз 2,5 секунды за один цикл, однако, что давление приманки кнопки из одного цикла не прерывает планирование. Я использую метод огня (с нажатой кнопкой) для остановки повторяющегося таймера, не прерывая его регулярный график стрельбы, но я не знаю, последующие циклы короче, чем заданные 2,5 секунды:swift - как использовать FIRE() в NSTimer

........

@IBAction func buttonZeroPressed(sender: AnyObject) { 

    timer.fire() 
    ++addWin 
} 

......

timer = NSTimer.scheduledTimerWithTimeInterval(2.5, target: self, 
     selector: Selector("levelOne"), userInfo:nil,repeats: true) 

......

func levelOne() { 

    level = 1 
    count++ 
    changePhoto() 
    if (count >= 5) { 
     timer.invalidate() 
     } 
} 

После нажатия 3 кнопки таймер, кажется, составляет 2,5 секунды, и я не понимаю, почему!

+0

селектор: «LevelOne» - работает также –

ответ

1

Метод fire() - это способ запуска таймера, который был создан, но не запланирован. Вы хотите использовать invalidate(), чтобы остановить таймер.

@IBAction func buttonZeroPressed(sender: AnyObject) { 
    timer.invalidate() 
    ++addWin 
} 

Ваш таймер начнется сразу же после того, как вы позвоните scheduledTimerWith.... Если вы хотите, чтобы создать таймер без запуска, вы будете использовать:

timer = NSTimer(timeInterval: 2.5, target: self, selector: Selector("levelOne"), userInfo:nil,repeats: true) 
+0

Спасибо за ответ, но с «недействительным» остановить весь процесс, я бы просто близко, что однократное цикл (не все) и перезапустить с последующим циклом. благодаря – JoeyTrl

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