如何删除匿名的事件侦听器?
2017-5-23 11:47:56
收藏:0
阅读:157
评论:3
所以,我遇到了一个问题,在其他语言中已经解决了,但在Corona/Lua中还没有。如何删除带有匿名函数的事件侦听器?
似乎应该“存储对函数的引用”,但我不确定Lua中的语法是什么。我花了一些时间查找,找到的最接近的匹配是此答案,但由于它是JavaScript,对我来说没有什么帮助。
原文链接 https://stackoverflow.com/questions/7143626
点赞
stackoverflow用户221509
Lua 中没有所谓的 “remove event listener”(移除事件侦听器)操作。这由使用事件侦听器的库 / 框架(在您的情况下为 Corona)进行处理。我没有使用 Corona 的经验,但您是否查看过 removeEventListener()
文档(http://developer.anscamobile.com/reference/index/objectremoveeventlistener)?
看起来您只需要保存您的侦听器的引用,以便稍后可以将其删除。也就是说,不要这样做:
Runtime:addEventListener( "enterFrame", function() ... end )
-- 无法移除该侦听器,因为您没有其引用
而是这样做:
-- 存储对侦听器的引用,以便稍后可以将其删除
-- 相当于:local handler; handler = function() ... end
local function handler() Runtime:removeEventListener("enterFrame", handler) end
Runtime:addEventListener( "enterFrame", handler )
2011-08-23 17:40:37
stackoverflow用户2656328
抱歉,上面的回答是无意义的!像这样做:
local function xyz() blabla
end
--或者
local xyz = function() blabla
end
--添加监听器
Runtime:addEventListener('enterFrame',xyz)
--再次移除
Runtime:removeEventListener('enterFrame',xyz)
2013-08-29 09:42:40
评论区的留言会收到邮件通知哦~
推荐文章
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法
- 如何编写 Lua 模式将字符串(嵌套数组)转换为真正的数组?
将下面翻译成中文并且保留原本的 markdown 格式
存储一个函数的引用与存储变量的引用完全相同。为了稍后操作一个对象,你需要给它一个名称,对吧?那么,函数也是一样的。
顺便说一下,当使用函数作为监听器时,这只是一个问题。但是还有一种事件监听器的样式,你可以使用一个表格作为监听器,然后在该表格中使用一个名为事件的函数: http://developer.anscamobile.com/content/application-programming-guide-event-handling#Listeners_and_Event_Delivery
通常我更喜欢使用表格监听器。