分享Creator点击事件透明穿透问题

标题写的是点击事件,为什么我只看到了触摸事件。。。?????

这里写的点击事件并不是cocos本身的点击或触摸,而是一个物体除去透明区域后的点中判断

请说明你的具体环境,或者可以上传代码demo,我游戏都已经上线了的,web,微信,玩一玩都已经在creator2.05验证过

已占位

我也遇到了同样的问题,用你的方法在浏览器上可以运行,但是在模拟器和真机上运行的时候都不行。模拟器上我用的textureRender 方式,会报错

Simulator: [ERROR] (/Users/nantas/fireball-x/cocos2d-x-lite_21/cocos/scripting/js-bindings/manual/jsb_opengl_manual.cpp, 1888): glReadPixels((GLint)arg0 , (GLint)arg1 , (GLsizei)arg2 , (GLsizei)arg3 , (GLenum)arg4 , (GLenum)arg5 , (GLvoid*)arg6 ); GL error 0x506: GL_INVALID_FRAMEBUFFER_OPERATION
[ERROR] Failed to invoke JSB_glReadPixels, location: /Users/nantas/fireball-x/cocos2d-x-lite_21/cocos/scripting/js-bindings/manual/jsb_opengl_manual.cpp:1892
at HTMLElement.print-simulator-log (/Applications/CocosCreator.app/Contents/Resources/app.asar/editor/builtin/scene/panel/messages/scene.js:1:1669)
at Object.e._dispatch (/Applications/CocosCreator.app/Contents/Resources/app.asar/editor-framework/lib/renderer/panel.js:1:1941)
at EventEmitter.o.on.s (/Applications/CocosCreator.app/Contents/Resources/app.asar/editor-framework/lib/renderer/ipc.js:1:2921)
at emitMany (events.js:127:13)
at EventEmitter.emit (events.js:204:7)

能帮忙看看吗

我也没跑过jsb native 的,具体要你跟踪看看哦,暂时没时间跟这个问题,我之前验证过的是qq玩一玩和微信还有浏览器

mark

mark

mark

刚好可以解决我的需求

mark

好像cvs=null就行了?:grin:

我重新定义了hitTest,但是,当我点击空白区域时,确实是可以穿透的,这是我需要的。但是点击黑色区域时,为什么会执行两次judgeClickPos方法,我测出第二次是进入的touchend方法。有什么方法制止吗?

看源码确实是会进入两次,但是你的逻辑不应该放在hitTest函数里面,而应该放在this.node.on(“touchstart”), 或按钮的onclick 事件里面。

放入“touchstart”的回调里好像可以不用重新定义_hitTest,我判断在不可点击区域时,直接打断事件传递。具体我试一试先。

mark 很好

如果你不处理透明点击,引擎自带的hitTest 函数会按照节点的boundingBox判定是否在点击区域,那你确实不用重新定义hitTest了,重新定义hitTest就是为了处理透明点击

原生平台都无效,哎

请问原生平台找到解决思路了吗

mark~