en

hi, it seems you are using microsoft internet explorer. it doesn't match web standard and causes problems browsing this site. please please please use mozilla firefox or google chrome instead. thank you!

zh

哦哦!您正在使用Internet Explorer 瀏覽器,它與我們的網頁標準並不相容,可能會導致畫面顯示不正常。
請改用 Mozilla Firefox 或者 Google Chrome 才能正常瀏覽本網站,謝謝!

11.29.2010

使用 Timer / 計時器實做 Pause 與 Resume

 

這裡將修改先前所做的範例 Timer / 計時器的基本使用方法的程式碼,增加暫停 Pause 與恢復 Resume 的功能,其更動如下。(View-based Template)

//自行定義的函式,用來設定使用Timer/計時器的相關參數
-(void)initializeTimer {

    //設定Timer觸發的頻率,每秒30次
    float theInterval = 1.0/30.0;
    fpsLabel.text = [NSString stringWithFormat:@"%0.3f", theInterval];

    //正式啟用Timer,selector是設定Timer觸發時所要呼叫的函式
    //theTimer是NSTimer型態的指標,用來存放當前的計時器狀態
    theTimer = [NSTimer scheduledTimerWithTimeInterval:theInterval
                        target:self
                        selector:@selector(countTotalFrames:)
                        userInfo:nil
                        repeats:YES];
}

更動上述程式碼之後,便能使用 theTimer 指標來控制當前的計時器狀態,方式如下。

//增加一個按鈕的事件來切換暫停/恢復的狀態
-(IBAction) ButtonPressed:(id)sender {

    //判斷計時器是否正在運作,isRunning為BOOL型態
    if (isRunning) {
        isRunning = NO;
        msgLabel.text = @"計時器暫停中";

        //中斷計時器並清空設定
        [theTimer invalidate];
        theTimer = nil;
    }
    else {
        isRunning = YES;
        msgLabel.text = @"計時器正在執行";

        //呼叫設定計時器的函式,以便重新啟動計時器
        [self initializeTimer];
    }
}






沒有留言:

張貼留言