Scene2D的ClickListener与自定义Actor

时间:2016-12-16 01:55:43

标签: libgdx scene2d clicklistener

在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

1 个答案:

答案 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) {
    }
});

这就是我通常设置的方式,但您可以将自定义侦听器类代码放在任何位置,或者为其创建单独的类文件并导入它。