SWIFT UI タイマー

動画じゃない画像を動かそうと思ったら、一定時間ごとに座標やスケールを更新してやればよい。この時使うのがタイマー。

昔よくやったのは、ループで座標とかを変更し、そのままでは早く動きすぎてわからないので、タイマーというか、WAITを入れて動きの速さを調整するというもの。でも、SWIFTではこの方法はダメ。いくらループ内で座標を変更しても動いてくれない。この関数を抜け出たときに初めて最終的な座標に動いてくれる。つまり、待たされた挙げ句、最終的なところにワープしてしまう。ワープって通じるのかな?瞬間移動の意味です。

なので、

一定時間ごとにタイマーで関数を呼び出し、関数では1ステップ座標を更新したらそれでおしまい、というふうにプログラムを組む。

 

class game{

var timer = Timer()

func TimerStart(){

    self.timer = Timer.scheduledTimer(withTimeInterval: 0.1, repeats: true){ timer in

         myFunc()

    }

}

func myFunc(){

   x = x + 1 // とか

}

タイマ用の変数timerを用意しておいて、

TimerStart でインスタンスを作成。

withTimerInterval は呼び出し間隔を秒単位で。

repeats は繰り返しか1回だけか。

timer in の後に呼び出す関数を書いておく。

 

タイマーを止めたいときは、invalidateを使う。

func TimerStop(){

  timer.invalidate()

}