Cocos2d-x 使用lua打造一个事件屏蔽遮罩层。

-- 创建遮罩层
function SwallowTouchLayer:create(color,width,height)
self.swallowTouchLayer = CCLayerColor:create(color,width,height);	
self.swallowTouchLayer:setTouchEnabled(true);	

-- 第一个参数为回调函数,第二个标志是否支持多点触控,
-- 第三个设置触屏事件的优先级,第四个为是否阻止事件往向优先级较低的层发送。
self.swallowTouchLayer:registerScriptTouchHandler(function (...) return self:onTouch(...) 
end, false, -128, true);

-- 初始化屏蔽范围,默认为可视范围
local visibleSize = CCDirector:sharedDirector():getVisibleSize();
self.rect = CCRect(0,0,visibleSize.width,visibleSize.height);
end

-- 设置屏蔽范围
function SwallowTouchLayer:setSwallowRect(rect)
self.rect = rect;
end


function SwallowTouchLayer:onTouch(eventType, x, y)
if eventType == "began" then 
return self:ccTouchBegan(x,y); 
elseif eventType == "moved" then 
return self:ccTouchMoved(x,y); 
else 
return self:ccTouchEnded(x,y);
end 
end 


function SwallowTouchLayer:ccTouchBegan(...)
-- 判断触点是否在屏蔽区域内
local point = CCPoint(arg[1], arg[2]);
if self.rect:containsPoint(point) then
return true;	
end

return false;
end	

function SwallowTouchLayer:ccTouchMoved(...)

end

function SwallowTouchLayer:ccTouchEnded(x,y)

end

function SwallowTouchLayer:ccTouchCancelled(...)

end

return SwallowTouchLayer;


在 cocos2d-x的学习过程中,发现很多事件注册相关的函数都提供了脚本专用的函数通常都为registerScript开头,在脚本中注册这些相关事件必须调用这些函数,C++版本的事件注册函数大部分是无法正常使用的。还应该特别留心注意的是注册Table内函数的时候应使用一个匿名函数返回该函数的方式调用,防止传参错误。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值