我有ui对象允许我覆盖他们的tick方法,我想在这些tick方法中调用其他方法。但是我这样做的方式,对象还没有被初始化,所以它不起作用。 这是一个例子:
//FPS
UITextRectangle fps = new UITextRectangle(
handler, handler.getWidth()-64, 32, 32, 32, Color.DARK_GRAY, Color.GRAY,
new Ticker(){
@Override
public void doTick(){
//cannot call fps
fps.setText(Integer.toString(handler.getFPS()));
}
});
我该如何使这项工作?任何和所有的帮助和建议表示赞赏!
编辑因为我的代码错了。
答案 0 :(得分:1)
您可以使用Ticker
模板方法,而不是传递doTick
类:
class UITextRectangle {
public void doTick() {
// template method, is empty
}
}
...
UITextRectangle tr = new UITextRectangle(...) {
@Override
public void doTick() {
this.setText(...);
}
};
答案 1 :(得分:0)
尝试直接调用它,你不需要使用fps对象,因为你在对象self的回调中
试试这个:
UITextRectangle fps = new UITextRectangle(handler, handler.getWidth()-64, 32, 32, 32, Color.DARK_GRAY, Color.GRAY, new Ticker(){
@Override
public void doTick(){
setText(Integer.toString(handler.getFPS()));
}
});
答案 2 :(得分:0)
在班级中创建一个属性UITextRectangle fps
。
另一种解决方案是在初始化之后设置Ticker