cocos2d-x v3.0 事件派发机制 注意事项

cocos2d-x v3.0 事件派发机制 注意事项,第1张

概述1.创建多个sprite,并为每个sprite添加点击事件监听器并且实现回调。 代码如下: -- 创建物品icon,id:物品ID,name:显示的数量 function Country_Icon.create(id, name)     local rootLayer = ccui.Layout:create();     local bgImg = "image/i5 (1).png";  

1.创建多个sprite,并为每个sprite添加点击事件监听器并且实现回调。

代码如下:

-- 创建物品icon,ID:物品ID,name:显示的数量
function Country_Icon.create(ID,name)
local rootLayer = ccui.Layout:create();
local bgimg ="image/i5 (1).png";

local icon = cc.Sprite:createWithSpriteFramename(bgimg);
if icon then
rootLayer:addChild(icon);
icon:setpositionX(50);
icon:setpositionY(50);
icon:setAnchorPoint(cc.p(0.5,0.5));
icon:setname("icon");
end


--创建触摸事件
local Listener = cc.EventListenertouchOneByOne:create();
--注册触摸结束事件
Listener:registerScriptHandler(
function(touch,event)
return true;
end,cc.Handler.EVENT_touch_BEGAN );
Listener:registerScriptHandler(
function(touch,event)
local target = event:getCurrentTarget();
local name = target:getname();
local name2 = rootLayer:getname();
if target == icon then
icon:runAction(action.btnAction(function(a,b)
cclog("callback");
end));
end


return true;
end,cc.Handler.EVENT_touch_ENDED );
--添加注册触摸事件到分配器
cc.Director:getInstance():getEventdispatcher():addEventListenerWithSceneGraPHPriority(Listener,icon)

return rootLayer;
end


如图所示:当屏幕任意地方点击事件发生的时候,所有图标都会变为半透明,显然不是我想要的效果。(所有的sprite都监听到了点击事件)。

所以这时候我们需要用到参数touch,进行区域判断,EVENT_touch_BEGAN 部分代码修改如下:

Listener:registerScriptHandler(
function(touch,event)
local target = event:getCurrentTarget();
local locationInNode = target:convertToNodeSpace(touch:getLocation());
local s = target:getContentSize();
local rect = cc.rect(0,s.wIDth,s.height);

-- 点击范围判断检测
if (cc.rectContainsPoint(rect,locationInNode)) then
--target:setopacity(180);
return true;
end
return false;
end,cc.Handler.EVENT_touch_BEGAN );

这样效果就实现了。

注意:点击事件监听的时候需要用到区域判断。

总结

以上是内存溢出为你收集整理的cocos2d-x v3.0 事件派发机制 注意事项全部内容,希望文章能够帮你解决cocos2d-x v3.0 事件派发机制 注意事项所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/web/1079418.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存