0

オブジェクトで同じセレクターをn回スケジュールする現在の解決策は、「メッセンジャー」クラスのインスタンスの配列を作成することです。プロパティとして、呼び出し時間と呼び出したいセレクターのタイプ、および呼び出す必要のあるオブジェクト参照があります。セレクタ。

次に、これらすべてのオブジェクトを追加した親ノードクラスのupdateメソッドでこの配列をチェックします。

スケジュール方式でこれを行う方法はありますか?

共有ディレクターは私に役立つ方法を教えてくれません。私は自分の解決策にかなり満足していますが、それが最良の解決策であるかどうかはわかりません。

編集:私は提案された答えを試しましたが、残念ながらうまくいきませんでした。

コードは次のとおりです。

    [f schedule:@selector(activateForShort) interval:0 repeat:0 delay:1.0f];
    [f schedule:@selector(activateForShort) interval:0 repeat:0 delay:3.0f];
    [f schedule:@selector(activateForShort) interval:0 repeat:0 delay:5.0f];
    [f schedule:@selector(activateForShort) interval:0 repeat:0 delay:7.0f];
    [f schedule:@selector(activateForShort) interval:0 repeat:0 delay:9.0f];
    [f schedule:@selector(activateForShort) interval:0 repeat:0 delay:12.0f];
     ....
    [f schedule:@selector(activateForShort) interval:0 repeat:0 delay:152.0f];
    [f schedule:@selector(activateForShort) interval:0 repeat:0 delay:177.0f];
    [f schedule:@selector(activateForShort) interval:0 repeat:0 delay:199.0f];
    [f schedule:@selector(activateForShort) interval:0 repeat:0 delay:212.0f];

fはオブジェクトであり、セレクター「activateForShort」を1回だけ呼び出します。

間隔と繰り返し値を1に変更しようとしましたが、機能しませんでした。

私が達成したいのは、特定の時間にそれを呼び出すことです(たとえば、1.0f、212.0f)。

どんな提案も歓迎されます:)

4

2 に答える 2

1

cocos2d 2.0を使用している場合は、schedule:interval:repeat:delayメソッドを使用できます。

repeatパラメーターは、最初の実行後にセレクターが再度実行される回数です。つまり、繰り返しが10の場合、セレクターは11回実行されます。

delayパラメーターは初期遅延を決定するため、セレクターが最初に実行される前に、より長くまたはより短く待機させることができます。

于 2012-12-03T09:22:12.523 に答える
0

悲しいことに、提案された解決策は機能しませんでした。編集を参照してください。

特定のアクションクラスを作成し、このクラスのインスタンスで満たされたNSMutableArrayを作成しました。これらのアクションをスケジュールする必要がある場合は、クラスのupdateメソッドで次のようにします。

-(void ) update:(ccTime) delta
{
timeElapsed+=delta;

for(int i=lastButtonCallIndex; i<[callsSchedulers count]; i++ )
{
    Call * buttonCall = [callsSchedulers objectAtIndex:i];
    if (buttonCall.callingTime<timeElapsed)
    {
        if(buttonCall.called==FALSE)
        {
            [buttonCall call]; //Where the call method has a reference to the button object I wanted to activate - a Call object is initialized with this reference.
            lastButtonCallIndex++;
        }
    }
    else
    {
        break;
    }
}    

}

于 2012-12-16T14:46:10.490 に答える