1

私は AndEngine を学ぼうとしていて、例をいじっています。私が変更しているのはPhysicsJumpExample です

私がやりたいことは、X秒ごとに何かを実行することです。私はいくつかの検索を行い、人々が提案しているのを見つけました:

this.scene.registerUpdateHandler(new IUpdateHandler() {
@Override
public void onUpdate(float pSecondsElapsed) {
        // TODO Auto-generated method stub
        //Your code to run here!
}

しかし、おそらく次の理由でこれを行うことができないことがわかりました。

this.mScene.registerUpdateHandler(this.mPhysicsWorld);

X秒ごとにコードを実行するにはどうすればよいですか?

前もって感謝します

4

1 に答える 1

4

次のようにタイマー ハンドラを登録できます。

protected Scene onCreateScene() {
    Scene myScene = new Scene();  // somewhere you create your scene
    float xSeconds = 5.5f; // meaning 5 and a half second
    boolean repeat = true; // true to reset the timer after the time passed and execute again
    TimerHandler myTimer = new TimerHandler(xSeconds, repeat, new ITimerCallback() {
        public void onTimePassed(TimerHandler pTimerHandler) {
            methodWithStuffToDo();
        }
    });
    myScene.registerUpdateHandler(myTimer);   // here you register the timerhandler to your scene

    .... // some other stuff
    return myScene;
}

次に、タイマーが終了したときに実行するコードを実装するメソッドをシーンに記述します。

public void methodWithStuffToDo(){ ... }

説明:

TimerHandler はonUpdate、更新スレッドのメソッドでチェックされます。指定された時間 (ここでは 5.5 秒) に近づくと、onTimePassed メソッドがトリガーされます。UpdateThread は必ずしも最後のミリ秒まで正確であるとは限らないため、closeと言います。これは基本的にコードの提案と同じですが、TimerHandler が実際に更新メソッドを処理し、いつ何を行うかを決定するという違いがあります (これは、独自の UpdateHandler を作成するよりも簡単です)。

于 2013-05-02T12:28:33.140 に答える