Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 检测KineticJS中点击舞台但不点击形状_Javascript_Jquery_Html_Canvas_Kineticjs - Fatal编程技术网

Javascript 检测KineticJS中点击舞台但不点击形状

Javascript 检测KineticJS中点击舞台但不点击形状,javascript,jquery,html,canvas,kineticjs,Javascript,Jquery,Html,Canvas,Kineticjs,在KineticJS中,如果单击发生在对象/形状之外,如何检测单击事件 我试图获得一个Rect,当用户单击它时,它的刻度将更改为2,当用户单击它之外的任何地方时,它将返回到1的刻度 JSfiddle: 设法检测到点击阶段,但点击Rect也会触发点击处理程序!!!不知何故,.setScale(1)什么也不做,而console.log打印出一些东西。在Rect而不是空阶段上进行单击时,如何防止单击处理程序触发 JS代码检测点击阶段 window.stage.getContainer().addEve

在KineticJS中,如果单击发生在对象/形状之外,如何检测
单击事件

我试图获得一个
Rect
,当用户单击它时,它的刻度将更改为
2
,当用户单击它之外的任何地方时,它将返回到
1
的刻度

JSfiddle:

设法检测到点击阶段,但点击
Rect
也会触发点击处理程序!!!不知何故,
.setScale(1)
什么也不做,而
console.log
打印出一些东西。在
Rect
而不是空阶段上进行单击时,如何防止单击处理程序触发

JS代码检测点击阶段

window.stage.getContainer().addEventListener('click', function(e) {
    $.each(window.layer.get('.box'), function(index, box) {
       box.setScale(1);
       console.log('clicked on stage');
    });
});

您可以使用stage.getContent()访问stage内容包装器。在此基础上,您可以添加如下事件处理程序:

stage.getContent().addEventListener('click',…);//常规javascript


$(stage.getContent())。在('单击',…);//jquery

你知道我还在学习动能,但这里有一个JS指针。你不需要把窗口放在事物之前,让它们全球化。如果将var放在变量declaration之前,那么它将仅在创建它的作用域/函数中可用。不将var放在变量Declaration之前将使其成为全局变量(与将window。你看到这个帖子了吗?。。他把一个矩形作为第一层,然后你可以检查。另外,使用正常事件是一个好主意吗?谢谢!!实际上,我用like
var-App={}给它们命名;App.stage=…
还没有看到那篇文章,听起来像gd ideaAwesome,你已经搞定了。从KineticJS 4.3.1开始,getDOM()被重命名为getContent()Hi,这可以在层上完成,而不必设置背景矩形并绑定点击事件吗?