AndEngine混淆注销IUpdateHandler

时间:2013-01-24 23:22:33

标签: android andengine

如果这个问题有点新手,我道歉。我正在使用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的引用,我没有这样的引用。我错过了什么?

2 个答案:

答案 0 :(得分:4)

您提供的代码会创建您没有参考的IUpdateHandler匿名实例。相反,您应首先将创建的IUpdateHandler存储在某个变量中,例如IUpdateHandler myHandler = new IUpdateHandler() {...});,然后使用this.registerUpdateHandler(myHandler)进行注册。引用处理程序后,您可以使用您提到的方法取消注册它。

答案 1 :(得分: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);
    }
});