なぜこれが起こっているのか、私は自分の仕事の生涯を理解することはできません。私は CCLayer から派生したクラスを持っています。クラスを初期化するときに、そのようにメソッド呼び出しをスケジュールしています
//create an update method for keeping track of how long its been since an animation has played
[self schedule:@selector(playIdleAnimation:)];
そしてその方法は
//an update method that will play an idle animation after a random period of idleness
-(void) playIdleAnimation:(ccTime) dt {
//if the user isn't playing an animation, increment the time since last animation variable
if ([bodySprite numberOfRunningActions] == 0) {
timeSinceLastAnimation += (float)dt;
//now check to see if we have surpassed the time set to cause an idle animation
if (timeSinceLastAnimation > (arc4random() %14) + 8) {
//reset the cooldown timer
timeSinceLastAnimation = 0;
[bodySprite stopAllActions];
//play the idle animation
//[bodySprite runAction:[CCAnimate actionWithAnimation:waitAnimation restoreOriginalFrame:NO]];
NSLog(@"PLAYING IDLE ANIMATION");
}
}
//player is currently playing animation so reset the time since last animation
else
timeSinceLastAnimation = 0;
}
それでも、プログラムを実行すると、コンソールステートメントは、条件がクールダウンごとに2回渡されていることを示しています
012-06-29 09:52:57.667 テスト ゲーム[5193:707] アイドル アニメーションの再生
2012-06-29 09:52:57.701 テスト ゲーム[5193:707] アイドル アニメーションの再生
2012-06-29 09:53:05.750 テスト ゲーム[5193:707] アイドル アニメーションの再生
2012-06-29 09:53:05.851 テスト ゲーム[5193:707] アイドル アニメーションの再生
アイドル アニメーションの再生が終了したときにゲームがクラッシュするバグを修正しようとしていますが、これが何らかの原因であると確信しています。