1

ループに数分の 1 秒の遅延を追加する方法はありますか (たとえば、ループの場合)。つまり、各反復の後に短い遅延が必要です。

cocos2d を使用すると、セレクターを遅延してスケジュールできることを知っています。しかし、この場合にこれをどのように使用できるかはわかりません。

また、睡眠はコストがかかり、お勧めできないことも知っています。

助言がありますか?

4

2 に答える 2

2

cocos2d で NSTimers を使用しないでください。ゲームを一時停止する可能性が必要な場合は、問題が発生します。

繰り返しの間に一定の遅延でアクションをループさせたい場合は、必要な遅延を指定して 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];
}

この場合、メソッドを一度だけ呼び出す必要があります。次に、指定された遅延で自分自身を呼び出します。

于 2012-05-12T17:28:13.880 に答える
0

C のスリープ機能を使用できます。

sleep(seconds);

UITimerしかし、またはブロックベースのperformSelector:withObject:afterDelay:メソッドを見ることもできます。

その他の NSObject ベースのメソッドについては、 https ://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSObject_Class/Reference/Reference.html#//apple_ref/occ/instm/ を参照してください。 NSObject/performSelector:withObject:afterDelay

于 2012-05-12T16:59:41.290 に答える