屏蔽触摸事件

本文介绍了如何在Cocos2.3.2开发中创建一个屏蔽触摸事件的Layer,用于在特定情况下阻止触摸事件传递到指定的底层Layer。通过在A、B Layer之间添加一个ZOrder介于两者之间的C Layer,实现触摸事件的屏蔽。当触摸结束且点在预设矩形外时,屏蔽层从父节点移除,恢复触摸事件传递。示例代码展示了如何在Lua中实现这一功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在开发中,有时需要A Layer响应触摸,而B Layer不响应触摸,如果A Layer添加触摸事件监听,而B Layer不添加那么可以实现这个需求。但是如果A、B都需要响应触摸,但在某些时候只要求A响应B不响应,那么可以在A、B之间添加一个屏蔽了触摸事件的C Layer,这个Layer和A、B有同一个父节点,ZOrder在A之下B之上,那么A监听到了触摸之后,C屏蔽了触摸,B就监听不到触摸了。

使用Cocos(V2.3.2)新建了一个Cocos项目,然后使用Cocos Code IDE(Build:V1.2.0)导入,在src/app/views/目录下新建了一个Lua文件,代码如下:

local Pingbilayer = class("Pingbilayer",function()
    return cc.LayerColor:create()
end)

function Pingbilayer:ctor(data,isTouming)
    if data then 
        self.Rect = data.Rect
    end  
    local sz = cc.c4f(0,0,0,146)
    if isTouming then
        sz = cc.c4f(0,0,0,0)
    end
    local _layer = cc.LayerColor:create(sz)
    self:addChild(_layer,-1)   
    self:Pingbitouch()
end

function Pingbilayer:Pingbitouch() 
    local function onTouchBegan(touch, event)
        print("--touch began--")
        return
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值