node起始不激活,后设置成激活,touch没事件回调

  • Creator 版本:2.4.6

  • 目标平台: chrome浏览器


let pStencil:cc.node
pStencil.active = false

pStencil:cc.on(‘touchstart’, function (event:cc.Touch) {
// 后面的操作使pStencil.active = true ,
//这个函数未响应

    }, this);

如果node起始状态就是active ,touch事件就有反应 如下
let pStencil:cc.node
pStencil.active = true

pStencil:cc.on(‘touchstart’, function (event:cc.Touch) {
//这个函数有响应

    }, this);

----------------------------后面我想了个怪办法,touch也能响应

let pStencil:cc.node
pStencil.active = true //先设置成true

scheduleOnce(() => {

 pStencil.active = false  //延迟0.01设置成false

}, this, 0.01)

pStencil:cc.on(‘touchstart’, function (event:cc.Touch) {
//这个函数有响应

    }, this);

不知道是不是浏览器的内部机制,要首先active才能响应

这个 node 是个sprite类型 创建是这样的
let pStencil = createSpriteWithTex("",“res/UI/guide/GuideMask.png”, () => {

        pStencil.setContentSize(1280, 1280)

    })

我也遇到了

我使用的是click事件,也会有这样的问题,使用touchend好像就行

方便提供个 demo 看看嘛?

你那边能复现嘛?怎么操作?

忘记具体怎么复现的了,回头碰到再上传demo吧

issuetouch.zip (835.2 KB) 这个用我这个demo试试就会,也是比较特殊情况出现的

你这个 demo 点击正常,只是sprite 的大小太小了你没点击到。设置下 sizeMode 为 custom,默认是TRIMMED,所以你设置的 contentSize 是无效的。另外提一下,为啥要弄张透明图测试,都看不到节点。

是太小的问题?,起始active = true 就能点击到

你可以先试试,我目前测试是都可以,不改代码,点击中间位置就行,你的图片原始大小就100*100

sizemode 设置了 是有效果,但是那个代码 active = true 就能全屏点击到,难道有先后关系

该主题在最后一个回复创建后14天后自动关闭。不再允许新的回复。