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

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

于 2013-01-24T23:26:54.320 回答
1

如果你在 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 回答