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()
}