在CoronaSDK中,如何处理隐藏的displayObject的tap事件?
2017-3-7 1:26:55
收藏:0
阅读:93
评论:2
我正在屏幕上展示一个包含各种等级的单个 png 图像,玩家可以在其上点击。
我使用以下代码创建该图像:
local levelsImage = display.newImage("assets/levelmap-levels.png", 0, 0, true)
然后我在每个等级的上方叠加圆圈,如下所示(levels 是一个包含每个等级的坐标和点击半径的表):
for i,level in ipairs(levels) do
local levelTapCircle = display.newCircle(level.x, level.y, level.tapRadius)
levelTapCircle.level=level -- 将等级信息附加到对象上,以便我们知道点击了哪个等级
levelTapCircle.alpha=0.3
myGroup:insert(levelTapCircle)
end
将点击事件处理程序附加如下:
levelTapCircle:addEventListener("tap", levelTapped)
在 levelTapped 函数中,我只是将点击坐标打印到输出控制台中,以证明事件处理程序被调用。
如果圆圈可见(即当 alpha>0 时),则会触发事件并调用 levelTapped 函数。然而,如果我将 alpha 值更改为 0 以隐藏圆圈,则不会调用点击事件。
levelTapCircle.alpha=0
以下内容也可用于隐藏圆圈,但同时会导致不会调用点击事件处理程序:
levelTapCircle.isVisible = false
我的问题是:
是否可以从隐藏的 displayObjects(在这种情况下为圆圈)中接收点击事件?
如果不行,我如何从图像的特定圆形区域接收点击事件,但不实际显示圆圈呢?
点赞
用户2868291
正如上述所说,如果 alpha = 0 或者 isVisible = false,那么触摸事件将被禁用。
但是你可以通过设置 isHitTestable = true 来避免这种情况,这将使你免受任何解决方法的困扰。
object.alpha = 0
-- 或者 --
object.isVisible = false
-- 启用触摸/点击事件 --
object.isHitTestable = true
2013-10-16 15:28:18
评论区的留言会收到邮件通知哦~
推荐文章
- 如何将两个不同的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中获取用户配置主目录的跨平台方法
如果您将
alpha=0或isVisible=false,则点击和触摸功能也会被禁用。有两种方法可以解决此问题,
第一种
levelTapCircle:setFillColor(255,255,255,0)或