NSTimers
Objective-Cには2つあります。そのうちの 1 つは、iPhone の画面上でオブジェクトをゆっくりと上に動かします。もう 1 つは、0.5 秒ごとにスコアに 1 ポイントを追加するスコア タイマーです。オブジェクトを画面の上に移動するタイマーも 0.5 秒間隔です。これらのタイマーは、ボタンが押されると呼び出されてアクティブになります。ボタンを押すと、オブジェクトはその 0.5 秒間ゆっくりと画面を上に移動します。0.5 秒後、スコアに 1 ポイントが追加されますが、これは正常に機能します。
ただし、問題は、オブジェクトが 0.5 秒後に画面下部の元の位置に戻ることです。その後、再び 0.5 秒間上に移動し始め、すぐに画面の一番下に戻ります。スコアタイマーは完璧に機能し、0.5 秒ごとに 1 ポイントが加算されます。
コード
-(IBAction)play:(id)sender{
gametimer1 = [NSTimer scheduledTimerWithTimeInterval:0.05f target:self selector:@selector(gameLoop) userInfo:nil repeats:YES];
scoretimer = [NSTimer scheduledTimerWithTimeInterval:0.05f target:self selector:@selector(scorechange) userInfo:nil repeats:YES];
}
-(void)scorechange{
score = score + 1;
scorelab.text = [NSString stringWithFormat:@"%i", score];
}
-(void)gameLoop{
balstarted = YES;
bal.center = CGPointMake(bal.center.x, bal.center.y - balspeed);
}
もう一度、画面を上に移動する代わりに、オブジェクト bal を数ピクセル (0.5 秒間) だけ上に移動してから、以前の位置にリセットします。