ループに1秒未満の遅延を追加する方法はありますか(A forループなど)。すなわち、私は各反復後に短い遅延を望む。ループ内に遅延を追加する
私は、cocos2dを使用すると、遅延を伴うセレクタをスケジュールできることを知っています。しかし、私はこのことがどのようにこのケースで使用されるのかはわかりません。
私はまた、睡眠にはコストがかかり、お勧めできないことも知っています。
提案がありますか?
ループに1秒未満の遅延を追加する方法はありますか(A forループなど)。すなわち、私は各反復後に短い遅延を望む。ループ内に遅延を追加する
私は、cocos2dを使用すると、遅延を伴うセレクタをスケジュールできることを知っています。しかし、私はこのことがどのようにこのケースで使用されるのかはわかりません。
私はまた、睡眠にはコストがかかり、お勧めできないことも知っています。
提案がありますか?
あなたはCのスリープ機能を使用することができます。
sleep(seconds);
しかし、あなたはまた、UITimer
を見て、または可能性ブロックベースperformSelector:withObject:afterDelay:
方法があります。
はよりNSObjectのベースの方法でこれを参照してください:あなたはcocos2dでNSTimersを使うべきではありませんhttps://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSObject_Class/Reference/Reference.html#//apple_ref/occ/instm/NSObject/performSelector:withObject:afterDelay
。ゲームを一時停止する可能性がある場合は、問題を引き起こします。
反復の間に一定の遅延を持つループを作成したい場合は、必要な遅延を持つscedule:interval:メソッドを自由に使用できます。
[self schedule:@selector(methodToScedule) interval:yourDelay]
ランダム遅延を行う必要がある場合は、cocos2dアクションのシーケンスを使用することができます。たとえば、
- (void) sceduleMethod
{
// do anything you want
ccTime randomDuration = // make your random duration
id delayAction = [CCDelayTime actionWithDuration: randomDuration];
id callbackAction = [CCCallFunc actionWithTarget:self selector:@selector(scheduleMethod)];
id sequence = [CCSequenece actionOne: delayAction actionTwo: callbackAction];
[self runAction: sequence];
}
この場合、メソッドを1回呼び出す必要があります。それからそれは与えられた遅れでそれ自身を呼ぶでしょう。
ありがとうございました – plawres
メイン(UI)スレッドでこの遅延を実行していないとうまくいけば、あなたのユーザーはこれに気づき、あなたに満足していないはずです。 –
私はよく分かりませんが、ここでは 'sleep()'が役に立ちます。 – SmartTree