2016-12-16 40 views
2

On Scene2D,f我有一個自定義actor,如何讓我的ClickListener能夠引用'customActor的字段和方法?由於例如輸入法有云:Scene2D的自定義Actor的ClickListener

public void enter(InputEvent event, float x, float y, int pointer, Actor fromActor) { ... } 

的事情是,這fromActor演員引用不能看到,我想在我的CustomActor修改的領域......我知道,我可以一起做一些事情:

public void enter(InputEvent event, float x, float y, int pointer, Actor fromActor) {  
    if(fromActor instanceof CustomActor) { 
     CustomActor actor = (CustomActor)fromActor; 
    } 
} 

但對我來說,感覺不對,就要有更高效的方法;所以如果你知道的人,請讓我知道:d

+0

如果此actor的所有實例都使用相同類型的click監聽器,則可以將click監聽器定義爲actor的內部類,也可以將其實例化爲actor的構造函數中的匿名類。如果不是,則將您的actor分配給與您的click監聽器定義在同一類中的成員變量,並在click監聽器的方法中引用該成員變量。 – Tenfour04

回答

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

那怎麼我通常設置好了,但你可以把任何你想要自定義監聽器類代碼,或有這方面的單獨的類文件,並將其導入。

+0

但是,對於同一類型的演員,我能不能只有一個聽衆嗎? '相同類型'是同一類的多個演員。 – Whiskydog

相關問題