我的问题很简单。
我有一些ClickListener
添加到一个Actor。我想以编程方式对它们执行click事件。
像myActor.performClick()
;
答案 0 :(得分:9)
您也可以使用:
InputEvent event1 = new InputEvent();
event1.setType(InputEvent.Type.touchDown);
button.fire(event1);
InputEvent event2 = new InputEvent();
event2.setType(InputEvent.Type.touchUp);
button.fire(event2);
这也将显示任何有用的图像更改。
答案 1 :(得分:7)
我想出了一个解决方案:
public static void performClick(Actor actor) {
Array<EventListener> listeners = actor.getListeners();
for(int i=0;i<listeners.size;i++)
{
if(listeners.get(i) instanceof ClickListener){
((ClickListener)listeners.get(i)).clicked(null, 0, 0);
}
}
}
可以调用此方法传递需要执行点击的actor
答案 2 :(得分:2)
我这样做(对我来说似乎更好):
public void triggerButtonClicked(Button button) {
InputEvent inputEvent = Pools.obtain(InputEvent.class);
inputEvent.reset();
inputEvent.setButton(0);
inputEvent.setRelatedActor(button);
try {
inputEvent.setType(InputEvent.Type.touchDown);
button.fire(inputEvent);
inputEvent.setType(InputEvent.Type.touchUp);
button.fire(inputEvent);
} finally {
Pools.free(inputEvent);
}
}