Cocos2d-x之自定义事件
【摘要】 系统定义的事件,如触摸事件、键盘事件等都是被系统自动触发的。除了使用系统定义的事件之外,我们还可以自定义一些事件,它们就不是由系统来触发了,而是由我们自己写的代码来触发,如:
_listener = EventListenerCustom::create("game_custom_event1", [=](EventCustom* event){ std::strin...
系统定义的事件,如触摸事件、键盘事件等都是被系统自动触发的。除了使用系统定义的事件之外,我们还可以自定义一些事件,它们就不是由系统来触发了,而是由我们自己写的代码来触发,如:
_listener = EventListenerCustom::create("game_custom_event1", [=](EventCustom* event){ std::string str("Custom event 1 received, "); char* buf = static_cast<char*>(event->getUserData()); str += buf; str += " times"; statusLabel->setString(str.c_str());
});
_eventDispatcher->addEventListenerWithSceneGraphPriority(_listener, this);
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
上面自定义了事件监听器,还有一个响应的方法,并被添加到了事件分发器event
dispatcher中。触发方式如下:
static int count = 0;
++count;
char* buf[10];
sprintf(buf, "%d", count);
EventCustom event("game_custom_event1");
event.setUserData(buf);
_eventDispatcher->dispatchEvent(&event);
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
上面这个例子创建了一个EventCustom对象,并设置它的UserData。然后通过 _eventDispatcher->dispatchEvent(&event)进行手动分发。这就触发了之前定义的事件处处理程序。处理程序被立即调用,因此可以使用本地堆栈变量作为用户数据。
文章来源: blog.csdn.net,作者:WongKyunban,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/weixin_40763897/article/details/104558265
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)