3

この質問が少し初心者っぽい場合は、お詫び申し上げます。私はAndEngineを使用していますが、私の質問はそのフレームワークに固有のものです。次のようにIUpdateHandlerを作成するとします。

    this.registerUpdateHandler(new IUpdateHandler() {

        @Override
        public void onUpdate(float pSecondsElapsed) {
            doUpdate(pSecondsElapsed);
        }

        @Override
        public void reset() {
            // TODO Auto-generated method stub
        }
    });

私のdoUpdate()メソッドには、IUpdateHandlerの登録を解除する時期であると判断するために必要な情報があります。この目的に最適なメソッドunRegisterUpdateHandler()がありますが、それを使用するには、updatehandlerへの参照を渡す必要があり、そのような参照はありません。私は何が欠けていますか?

4

2 に答える 2

4

指定したコードは、参照のない匿名インスタンスを作成しますIUpdateHandlerIUpdateHandler代わりに、最初に作成したものをいくつかの変数に格納しIUpdateHandler myHandler = new IUpdateHandler() {...});てから、を使用して登録する必要がありthis.registerUpdateHandler(myHandler)ます。ハンドラーへの参照がある場合は、前述の方法を使用して登録を解除できます。

于 2013-01-24T23:26:54.320 に答える
1

updatehandler内にいる場合は、これで登録を解除できます。updatehandlerがシーンに登録されている場合

this.registerUpdateHandler(new IUpdateHandler() {

    @Override
    public void onUpdate(float pSecondsElapsed) {
        doUpdate(pSecondsElapsed);
    }

    @Override
    public void reset() {
         if (something) Scene.this.unregisterUpdateHandler(this);
    }
});
于 2013-01-24T23:28:37.720 に答える