创建一个图片不让点击地图 同吞噬方法实现
🤖 回答引擎: 前端Lua |
🕒 时间: 2026-04-12 17:01:18 |
👁️ 阅读: 7
要实现图片不响应点击事件,同时阻止事件传递到地图,可以使用触摸吞噬功能。以下是两种实现方法:
## 方法一:设置触摸吞噬(推荐)
```lua
-- 创建父窗口
local parent = GUI:Win_Create("TouchBlockWindow", 0, 0, 0, 0, false, false, true, false, false, false, 1)
-- 创建图片控件
local image = GUI:Image_Create(parent, "block_image", 100, 100, "res/public/1900000610.png")
-- 设置图片吞噬触摸事件(阻止事件传递到地图)
GUI:setSwallowTouches(image, true)
-- 设置图片不响应触摸
GUI:setMouseEnabled(image, false)
```
## 方法二:完整实现透明遮挡层
```lua
-- 创建全屏透明层作为父窗口
local parent = GUI:Win_Create("TouchBlockLayer", 0, 0, 0, 0, false, false, true, false, false, false, 1)
-- 创建图片控件
local image = GUI:Image_Create(parent, "block_image", 100, 100, "res/public/1900000610.png")
-- 设置图片吞噬触摸事件
GUI:setSwallowTouches(image, true)
-- 设置图片不响应触摸
GUI:setMouseEnabled(image, false)
-- 设置透明度(可选,让图片半透明)
GUI:setOpacity(image, 128) -- 0-255,128为半透明
-- 设置坐标和尺寸
GUI:setPosition(image, 100, 100)
```
## 关键函数说明:
- **`GUI:setSwallowTouches(widget, value)`**:设置控件是否吞噬触摸事件
- `widget`:控件对象
- `value`:`true`表示吞噬,`false`表示不吞噬
- **`GUI:setMouseEnabled(widget, value)`**:设置控件是否可触摸
- `widget`:控件对象
- `value`:`true`表示可触摸,`false`表示不可触摸
## 实现原理:
1. **吞噬触摸**:`setSwallowTouches(true)` 会让图片控件吞噬所有触摸事件,阻止事件传递到下层的地图
2. **禁用交互**:`setMouseEnabled(false)` 让图片自身不响应点击事件
3. **组合效果**:图片不响应点击,但会阻止点击穿透到底层地图
这样就能实现图片"看得到但点不到",同时地图也点不到的效果了!
← 返回问答库