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