在Corona中检测物体触摸
2013-3-14 3:40:59
收藏:0
阅读:154
评论:3
在一个类中,我有两个“按钮”,它们调用两个类,如下所示:
`` ` btn1 = display.newImage(“1.png”) btn2 = display.newImage(“2.png”) btn1:addEventListener(“touch”,onSceneTouch) btn2:addEventListener(“touch”,onSceneTouch2)
`` `
这个问题在于两种方法(onSceneTouch,onSceneTouch2)做相同的事情。唯一的区别是它根据触摸哪个按钮设置一个标志。我的方法看起来像这样:
`` ` function onSceneTouch(event) //在这里做一些事情 end
`` `
我尝试搜索并找到[这篇文章](http://www.coronalabs.com/blog/2012/07/24/detecting-object-and-screen-taps/)并尝试遵循它。我向按钮添加了一个id,并在我的方法中调用了它们,但id为nil。如果我尝试为按钮设置一个名称,如:btn1.name =“name”,并在我的方法中调用self.name,但当然,名称返回“touch”。如何告诉我的方法按下了哪个按钮?
点赞
用户1870706
我知道答案1的示例应该完全可行,但它比使用函数侦听器而不是表格侦听器多了一些工作。我会这样写:
function onSceneTouch(event)
local target = event.target -- 这是实际被触摸的按钮。
if event.phase == "ended" then
-- 在这里完成你的工作
print(target.id) -- 打印“Button1”或“Button2”
end
return true -- 重要!
end
btn1 = display.newImage("1.png")
btn2 = display.newImage("2.png")
btn1.id = 'Button1'
btn2.id = 'Button2'
btn1:addEventListener("touch", onSceneTouch)
btn2:addEventListener("touch", onSceneTouch)
同一件事,不同的方式。
2013-03-18 01:58:28
用户1218135
将下面翻译成中文并且保留原本的 markdown 格式, `enter code here`
## 使用单个事件侦听器,并使用唯一名称标识调用者
例如:
```lua
function onSceneTouch(event)
local objectName = event.target.name
if objectName == 1 then
flag1 = true
else
flag2 = true
end
end
btn1 = display.newImage("1.png")
btn1.name = 1
btn2 = display.newImage("2.png")
btn1.name = 2
btn1:addEventListener("touch", onSceneTouch)
btn2:addEventListener("touch", onSceneTouch)
2013-12-18 13:53:00
评论区的留言会收到邮件通知哦~
推荐文章
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在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中获取用户配置主目录的跨平台方法
根据你提供的文章,你的代码应该如下所示:
function onSceneTouch(self, event) local button_id = self.id -- 这里做一些事情 end -- 创建两个按钮 btn1 = display.newImage("1.png") btn2 = display.newImage("2.png") -- 给按钮添加 id 属性 btn1.id = 'Button1' btn2.id = 'Button2' -- 给按钮添加 touch 事件监听函数 btn1.touch = onSceneTouch btn2.touch = onSceneTouch btn1:addEventListener("touch", btn1) btn2:addEventListener("touch", btn2)它没有工作吗?