読者です 読者をやめる 読者になる 読者になる

まゆたまガジェット開発逆引き辞典

電子工作やプログラミングのHowtoを逆引き形式で掲載しています。作りたいモノを決めて学んでいくスタイル。プログラマではないので、コードの汚さはお許しを

スクリーンセーバー的なものを作る

しばらくプログラミングから離れていたので、これもまた地味に時間かかった・・・
あまりよくない書き方をしているような気がするので、もし訂正箇所があればコメント等でお願いします。

NSTimerがもっと正確な時間で作動して欲しいという場合は、
・var timeCount : Int = 0 のIntをFloatに
・NSTimer.scheduledTimerWithTimeInterval(1, target: self ...の1を0.1に
・timeCount += 1 を0.1に
・timeCount = 0 を0.0に
・if touchCount == 1 && timeCount == 4 { ... のtimeCountを4.0に

してあげれば良いかと思います(未検証)。もちろん、4秒はお好みで。

流れとしては、
1.起動して画像1表示
2.タッチすると画像2を表示
3.4秒経つと画像3を表示、タッチされなければこのまま画像3を表示
4.2と3を繰り返す
となっています。画像3のところでアニメーションを再生してあげるようにすれば、それっぽくなるのかな。
もちろん、1と3(画像1と3)の画像を同じにしてあげても良いと思います。今回は区別がつきやすいように変えてみました。

import UIKit

class ViewController: UIViewController {

    @IBOutlet weak var screensaver: UIImageView!
    
    //タッチされた回数を示す変数
    var touchCount = 0
    
    //時間を示す変数
    var timeCount : Int = 0
    
    //タイマー
    var timer: NSTimer?
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        
        screensaver.image = UIImage(named: "iPhone4ViewPic.png")
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }


    //タッチされたか検知する
    override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) {
        for touch: AnyObject in touches {
            
            //タッチされたらタイマー始動(1秒ごと・整数)
            timer = NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: "timeUpdate:", userInfo: nil, repeats: true)
            
            //タッチされたら1足す
            touchCount += 1
            
            //スクリーンセーバーが起動していないときの画像
            screensaver.image = UIImage(named: "iPhone4ViewPic2.png")
            
        }
        
    }
    
    func timeUpdate(timer : NSTimer){
        
        //1秒ごとに1足す
        timeCount += 1
        println("タイム= \(timeCount)")
        
        //タッチされてかつ4秒以上たったら、スクリーンセーバー始動&タイマー止まる。またタッチされたらタイマー始動
        if touchCount == 1 && timeCount == 4 {
            
            touchCount = 0
            timeCount = 0
            
            //タイマー停止
            self.timer?.invalidate()
            self.timer = nil
            
            //スクリーンセーバーの画像表示
            screensaver.image = UIImage(named: "iPhone4ViewPic3.png")
            
            
        }
    
    }
}