タイトルの通り、昨日はコードには一切触れなかった。
今日でその分を取り戻そうとしたが、どうもうまくいかない。。。
今回の壁はNSTimer。ゲームをクリアするのにかかった時間を計測するためにNSTimerを実装した。
//タイマーの宣言。0.1秒刻みで計測を行う。
timer = [NSTimer scheduledTimerWithTimeInterval:(0.01)
target:self
selector:@selector(onTimer:)
userInfo:nil
repeats:YES];
//タイマーの実装。チュートリアルを除く2回目以降のゲームで指が触れている時に処理を行う。
- (void)onTimer:(NSTimer*)timer {
if(moveFlg == 1 && gameCount != 0){
storeTime += 0.01;
statLabel.text = [[NSString alloc]initWithFormat:@"%.2f秒経過",storeTime];
}
}
このような記述をすると、とりあえず動作した。
しかし、指の移動するスピードが早くなると正確な時間を刻まなくなった。
そのため、異なるアルゴリズムで時間を計測する事にした。
そこで使ったのが、
NSTimeInterval saTime = [startTime timeIntervalSinceDate:nowTime];
という「startTime」と「nowTime」の差分を求めるメソッド。
ここで使われる引数は
NSDate *startTime;
startTime = [NSDate date]; //画面に触れたときに実行
NSDate *nowTime;
nowTime = [NSDate date]; //ゲームををクリアしたときに実行
というように画面に指を触れた瞬間とゲームをクリアした時の時刻を計測したもの
時間を常に更新し続けるのではなく2回しか時間を計測しない事から、前に作ったタイマーよりも処理の回数が少なくなると思ったのでこれを使おうと思った。
timeIntervalSinceDateで時間の差を求める処理ができていないようだ。。。
デバッギングしてもその時点で処理落ちしてしまう。今日はこの方法を実装するためにかなりの時間を割いてしまった。
だが未だに実装できていない。。。
WWDCまで時間もあまりないので、時間を計る違うアルゴリズムを構築するか、それ以外にも追加する機能を考えてみようと思う。
0 件のコメント:
コメントを投稿