Three.jsを使って、作ってみた

プログラミング関連の事を色々書いています(^^) 週末はレストランやコンビニのお菓子のことを書いています。

swiftで、タイマー(Timer)を使ってみる

今回は、Swiftでタイマー(Timer)を使う方法を書きます。

こんな感じに使います。

import UIKit

class ViewController: UIViewController {
    
    //タイマー
    var timer: NSTimer!
    var cnt: Float = 0
                        
    override func viewDidLoad() {
        super.viewDidLoad()   
    }
    
    @IBAction func timerBtn(sender: UIButton) {

        //タイマーを作る.
        timer = NSTimer.scheduledTimerWithTimeInterval(0.1, target: self, selector: "onUpdate:", userInfo: nil, repeats: true)

    }
    
    func onUpdate(timer : NSTimer){
        cnt += 0.1
        if cnt > 5.0 {
            if timer.valid  {
                //timerを停止する.
                timer.invalidate()
            }
        }
    }
   
}

f:id:gupuru:20141223225355p:plain
上のプログラムは、「Button」を押すとタイマーがスタートします。


こちらの部分で、タイマーを作ります。

 var timer: NSTimer!
 timer = NSTimer.scheduledTimerWithTimeInterval(0.1, target: self, selector: "onUpdate:", userInfo: nil, repeats: true)

第1引数の部分は、タイマーを発生させる間隔です。例えば、0.1なら0.1秒間隔になります。1.0なら1.0秒間隔です。

第2引数の「target」は、タイマー発生時に呼び出すメソッドがあるターゲットを指定します。通常は「self」で大丈夫だと思います。

第3引数の「selector」の部分は、タイマー発生時に呼び出すメソッドを指定します。今回の場合は「onUpdate」を呼び出しています。
ちなみに、「selector」の部分は「 Selector("onUpdate")」という書き方もできます。こういうふうに書く場合は、呼び出すメッソドの引数の部分を、

    func onUpdate(timer : NSTimer)

このように変えてください。↓↓

    func onUpdate()

第4引数の「userInfo」は、selectorで呼び出すメソッドに渡す情報を指定します。

第5引数の「repeats」は、タイマーの実行を繰り返すかどうかです。trueの場合、繰り返します。falseは1回のみです。


次に、こちらの部分です。

if timer.valid  {
   timer.invalidate()
}

「〜.valid」で、タイマーが動いているかどうかの判定ができます。
そして、「invalidate()」でタイマーを停止することができます。

これで、終わります。


参考サイト
Swiftでアニメーションとタイマーを使ってみた - Qiita
NSTimer - iPhoneアプリ開発の虎の巻

Swiftは、まだまだ勉強中ですので、間違っているかもしれません。間違っていましたら、ご指摘をお願いしますm(_ _)m