Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/366.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 事件dragmove和targetNode返回未定义_Javascript_Kineticjs - Fatal编程技术网

Javascript 事件dragmove和targetNode返回未定义

Javascript 事件dragmove和targetNode返回未定义,javascript,kineticjs,Javascript,Kineticjs,我正在做我在kineticJS的第一个项目;我必须在画布上拖动一些形状,同时,我必须在页面的某个地方实时地写下形状的坐标。为此,我在图层上使用事件“dragmove”,如下所示: layer.on("dragmove",function(evt) {//detect shape and write stuff}); 我使用“targetNode”捕捉单击的形状。 问题在于:如果我在不属于任何组的形状上使用targetNode,一切都会正常工作,但如果必须移动的节点是组的一部分,则targetN

我正在做我在kineticJS的第一个项目;我必须在画布上拖动一些形状,同时,我必须在页面的某个地方实时地写下形状的坐标。为此,我在图层上使用事件“dragmove”,如下所示:

layer.on("dragmove",function(evt) {//detect shape and write stuff});
我使用“targetNode”捕捉单击的形状。 问题在于:如果我在不属于任何组的形状上使用targetNode,一切都会正常工作,但如果必须移动的节点是组的一部分,则targetNode只在第一次工作,然后在接下来的所有时间返回一个未定义的值(dragmove通常需要一些时间,不像dragstart或click)

我做了一把小提琴,你可以看到我在说什么:

这两个矩形在一个组中。如果单击某个形状,将返回其名称的警报;如果拖动圆或矩形,控制台上将写入该形状的名称


我希望能得到一些帮助。对不起,我的英语,我也希望文本可以理解。

出于某种原因
evt.targetNode
仅在
dragmove
上的第一次调用中定义,然后它变为未定义,您可以通过执行以下操作看到:

layer.on("dragmove",function(evt) {
  console.log(evt.targetNode);
  console.log(evt.targetNode.getName()+"");
});
相反,尝试在事件函数之外使用定义
var nodo
,然后在
mousedown
上设置
nodo=evt.targetNode

var nodo;
layer.on('mousedown', function(evt) {
    nodo = evt.targetNode;
});
layer.on("click", function (evt) {
    console.log(nodo.getName() + "");
});
layer.on("dragmove", function (evt) {
    console.log(nodo.getName() + "");
});

哦,它很管用!虽然我仍然不知道为什么。谢谢你的回答!你帮了我大忙!