這裡將修改先前所做的範例 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];
}
}
沒有留言:
張貼留言