0

メソッド 'method1' から別のメソッド 'method2' を呼び出したいと思います。問題は、「method1」に CADisplayLink があり、「method1」から「method2」を呼び出したい場合、6Ofps で呼び出すため、1 秒あたり 60 回呼び出しますが、1 回呼び出すだけです。BOOL 変数を使用する必要があることはわかっていますが、その使用方法がわかりません。誰でも私を助けることができますか?私の英語で申し訳ありませんが、私はフランス人です:/

//編集: method1 に CADisplayLink があります:

-(void)method1{
if(
if ( leScore % 20000 == 0) {
[self method2];

}

-(void)method2{

etatJeu = arc4random() / (UINT_MAX/3);

switch(etatJeu) {
    case 0: /* top */
        etatJeu=kEtatJeu2;
        break;
    case 1: /* bottom */
        etatJeu=kEtatJeu3;              
        break;
    case 2: /* bottom */
        etatJeu=kEtatJeu4;              
        break;
    default:
        break;


}

そのため、「leScore % 20000 == 0」のたびにメソッドを 1 回呼び出す 2.

4

2 に答える 2

1

メソッド呼び出しを 1 回だけ行いたい場合は、次のように bool を使用します。

@interface SomeClass {
    BOOL method2RunFlag; // set to NO in init
}
@end

// ... in your method1

if( method2RunFlag == NO ) {
    // call your method2
    method2RunFlag = YES;
}

上記の編集したコードに基づいて:

-(void)method1{
if( method2RunFlag == NO ) {
method2RunFlag = YES;
  if ( leScore % 20000 == 0) {
    [self method2];
  }
    // wait 1 second before able to call again
    [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(resetMethod2RunFlag:) userInfo:nil repeats:NO];
}
- (void)resetMethod2RunFlag:(NSTimer *)timer {
  method2RunFlag = NO;
}

あなたが何を求めているのかまだ完全にはわかりませんが、これが私の最善の推測です。=)

于 2011-11-11T20:21:18.150 に答える
0

おそらく、method1 の 2 つのバリエーションを作成する必要があります。1 つは CADisplayLink で使用し、もう 1 つは別の場所で使用します。おそらくヘルパー method1A ですべての共通コードを呼び出しますが、method2 を呼び出すかどうかを示すフラグ パラメータを使用します。

于 2011-11-11T21:45:49.453 に答える