以编程方式执行单击Actor libgdx

时间:2014-09-16 13:51:33

标签: libgdx scene2d

我的问题很简单。

我有一些ClickListener添加到一个Actor。我想以编程方式对它们执行click事件。

myActor.performClick();

之类的东西

3 个答案:

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