2016-06-27 4 views
0

Я работаю над игрой, где скорость изменения изображения меняется со временем. Сначала изображение меняется каждые две секунды, а затем оно ускоряется.Как обновить интервал таймера в swift?

var change = 2.0 

func setupGame(){ 
    change = 2.0 

    changeImage() 
} 

func changeImage(){ 
    timer = NSTimer.scheduledTimerWithTimeInterval(change, target: self, selector: #selector(SecondViewController.changeColors), userInfo: nil, repeats: true) 

    change -= 0.1 
} 

Проблема в том, что она ускоряет слишком много, и это не останавливается. В конце концов значение изменения становится отрицательным.

Любой способ сделать эту работу?

ответ

4

Вы забыли две вещи.

  • Во-первых, вы создаете новый повторяющийся таймер каждый раз, когда срабатывает таймер. Перед созданием нового таймера необходимо установить invalidate старый таймер. И так как вы все равно собираетесь заменить таймер, вы делаете не хотите, чтобы это повторяющийся таймер; вам нужно сказать false вместо true.

  • Во-вторых, если вы не хотите, чтобы change продолжал становиться все меньше, вам нужно какое-то условие, когда вы проверяете, как маленький change стал, и, если вы не хотите ускоряться, не уменьшайте Это.

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