2012年9月8日土曜日

カウントアップタイマーの実装

iPhoneアプリでのカウントアップタイマーの実装について

ゲーム作成時等,カウントアップタイマーの需要は高いはず。
実際自作のiPhoneゲームにも実装しています。

1.StoryBoardでビューにラベルを貼り付ける

2."ViewController.h"に下記コードを追加


@interface ViewController : UIViewController
{
    NSTimer *_timer;
    NSDate *_stdate;
    NSDate *_now;
    BOOL _timeflg;
}

//timer
@property (weak, nonatomic) IBOutlet UILabel *countUpTimer;


3."ViewController.m"に下記コードを追加


//timer
@synthesize countUpTimer = _countUpTimer;

-(void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:YES];
    
    [self CountUp];
}

//Timer
-(void)CountUp
{
    _timer = [NSTimer scheduledTimerWithTimeInterval:(0.001)
                                              target:self selector:@selector(onTimer:)
                                            userInfo:nil repeats:YES];
    _timeflg = YES;
    _stdate = [[NSDate alloc]init];
}
- (void)onTimer:(NSTimer*)timer {
    if(_timeflg){
        _now = [NSDate date];
        self.countUpTimer.text = [NSString stringWithFormat:@"%.3f",
                                  [_now timeIntervalSinceDate:_stdate]];
    }
}

4.再びStoryBoardで,ビューの下にあるビューコントローラアイコンをCtrlキーを押しながらマウスで押し,そのままLabelまでドラッグする。
すると,下記ポップアップが現れるので,"countUpTimer"をクリックする。 


これでカウントアップされるはずです。


ちなみに,引数scheduledTimerWithTimeIntervalの値0.001は,0.001秒ごとにonTimerメソッドの処理を行うという意味なので,動作が重くなるなど弊害があれば0.01とかにかえたほうが良いかもしれません。

0 件のコメント:

コメントを投稿