在Scene2D上,如果我有一个自定义actor,如何让我的ClickListener能够引用'customActor的字段和方法?例如,输入方法如下:
public void enter(InputEvent event, float x, float y, int pointer, Actor fromActor) { ... }
问题在于fromActor
Actor引用无法在我的CustomActor
中看到我想要修改的字段...我知道我可以做一些事情:
public void enter(InputEvent event, float x, float y, int pointer, Actor fromActor) {
if(fromActor instanceof CustomActor) {
CustomActor actor = (CustomActor)fromActor;
}
}
但对我来说感觉不对劲,必须有一种更有效的方式;所以如果你知道一个,请告诉我:D
答案 0 :(得分:0)
在您实例化此单击侦听器的类中,添加一个如下所示的内部类:
class CustomListener extends ClickListener {
private final CustomActor yourActor;
public CustomListener(CustomActor yourActor) {
this.yourActor = yourActor;
}
@Override
public void enter(InputEvent event, float x, float y, int pointer, Actor fromActor) {
this.yourActor.accessTheFieldYouWant;
}
}
您当然可以覆盖所需的任何方法,而不仅仅是enter
。
然后像这样使用它
yourActor.addListener(new CustomListener(yourActor) {
@Override
public void clicked(InputEvent event, float x, float y) {
}
});
这就是我通常设置的方式,但您可以将自定义侦听器类代码放在任何位置,或者为其创建单独的类文件并导入它。