cocos creator入门教程(四)—— cc.Node事件响应(触摸事件、键盘事件、自定义事件)

这篇教程介绍了Cocos Creator中cc.Node的事件响应,包括触摸事件的START, MOVED, ENDED和CANCEL类型,以及如何监听和关闭这些事件。键盘事件的监听使用cc.SystemEvent,并通过cc.KEY枚举处理按键。此外,还讲解了自定义事件的创建、监听和派发,包括冒泡传递。最后预告了下一篇文章将探讨cc.Node的坐标空间。" 130511732,17673478,JNPF 3.4.7企业版:低代码开发与大屏设计框架,"['低代码', 'Java', '.NET', '开发框架', '身份认证']

触摸事件

  • 触摸事件类型: START, MOVED, ENDED(物体内), CANCEL(物体外);
  • 监听触摸事件: node.on(类型, callback, target(回掉函数的this), [useCapture]);
  • 关闭触摸事件: node.off(类型, callback, target(回掉函数的this), [useCapture]);
  • targetOff (target): 移除所有的注册事件;
  • 回掉函数的参数设置  function(t(cc.Touch))
  • cc.Touch: getLocation返回触摸的位置;getDelta返回距离上次的偏移;
  • cc.Event: stopPropagationImmediate/stopPropagation 停止事件的传递;
  • 事件冒泡: 触摸事件支持节点树的事件冒泡,会从当前前天往上一层一层的向父节点传送;
  • 完成物体跟随手指触摸的案例;

 

键盘事件

  • cc.SystemEvent.on(type, function, target, useCapture);    type: cc.SystemEvent.EventType.KEY_DOWN  按键按下;          
CocosCreator 代码中使用 `cc.Node.EventType.TOUCH_START` 编写触摸事件未生效,可从以下几个方面排查解决: ### 节点大小问题 node 对于触摸事件的捕捉是基于它本身的 size 范围的,如果这个 node 本身大小为 0,则无法响应捕捉事件。需要确保绑定事件的节点有合适的大小。例如,若节点大小为 0,可通过代码设置节点大小: ```javascript onLoad() { this.node.width = 100; this.node.height = 100; this.node.on(cc.Node.EventType.TOUCH_START, function (event) { cc.log("TOUCH_START event=", event.type); }); } ``` ### 节点是否激活 要保证绑定事件的节点处于激活状态。若节点未激活,触摸事件不会触发。可在编辑器中检查节点的激活状态,或者通过代码确保节点激活: ```javascript onLoad() { this.node.active = true; this.node.on(cc.Node.EventType.TOUCH_START, function (event) { cc.log("TOUCH_START event=", event.type); }); } ``` ### 事件绑定是否正确 检查事件绑定代码是否正确,要确保事件类型拼写无误,回调函数正常。示例代码如下: ```javascript onLoad() { this.node.on(cc.Node.EventType.TOUCH_START, function (event) { // 检查回调函数是否有错误 cc.log("TOUCH_START event=", event.type); }, this); // 注意这里的 this 参数,确保上下文正确 } ``` ### 节点层级和遮挡问题 如果节点被其他节点遮挡,触摸事件可能会被上层节点拦截。可以调整节点的层级顺序,确保绑定事件的节点在最上层。在编辑器中可通过调整节点的 Z 轴顺序来改变层级,也可通过代码设置: ```javascript onLoad() { this.node.zIndex = 1; // 提高节点层级 this.node.on(cc.Node.EventType.TOUCH_START, function (event) { cc.log("TOUCH_START event=", event.type); }); } ``` ### 触摸事件是否被禁用 检查是否有全局或局部的触摸事件禁用设置。例如,可能在代码中调用了 `cc.eventManager.setEnabled(false)` 禁用了所有事件,需要确保没有这样的设置。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值