Programmatically perform click on Actor libgdx

You can also use:

InputEvent event1 = new InputEvent();
event1.setType(InputEvent.Type.touchDown);
button.fire(event1);

InputEvent event2 = new InputEvent();
event2.setType(InputEvent.Type.touchUp);
button.fire(event2);

This will also show any pressed image change which can be helpful.


I figured out a solution :

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

This method can be called passing the actor on whom click needs to be performed


I do it like this (seems nicer to me):

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

Tags:

Libgdx

Scene2D