Several event listeners

Hello everyone!
I have an issue in code that i dont know how to resolve. I have a scene with button on it. I want to handle next events: when user click button, and when click is performed not on a button. When i click on screen the (listener) and (listener2) callbacks are fired. However, when i click button no one is fired.

Look at my code, i hope you can help me. Thanks in advance

inside  Preload::init():
...
auto button = ui::Button::create("assets/preload_button.png");
...
auto listener = EventListenerTouchOneByOne::create();
listener->onTouchBegan = CC_CALLBACK_2(Preload::Do, this);
_eventDispatcher->addEventListenerWithSceneGraphPriority(listener, this);

auto listener2 = EventListenerTouchOneByOne::create();
listener2->onTouchBegan = CC_CALLBACK_2(Preload::UnDo, this);
_eventDispatcher->addEventListenerWithSceneGraphPriority(listener2, (Node *)button);

Hi @jackxlifer,

Add touch event Listener for button.

button->addTouchEventListener(CC_CALLBACK_2(UIButtonTest::touchEvent, this));

When user click button touchEvent function callbacks are fired.

Regards,
Guru

1 Like

Thanks a lot, it alsmost fixed!

I fixed this by also changing signature:

bool Preload::Do(Touch* touch, Event* event) 

stays the same, but

bool Preload::UnDo(Touch* touch, Event* event)

i changed to

void Preload::Undo(Ref* sender, ui::Widget::TouchEventType type),

so

button->addTouchEventListener(CC_CALLBACK_2(UIButtonTest::touchEvent, this));

now handles event correctly!!!