Javascript 事件dragmove和targetNode返回未定义
我正在做我在kineticJS的第一个项目;我必须在画布上拖动一些形状,同时,我必须在页面的某个地方实时地写下形状的坐标。为此,我在图层上使用事件“dragmove”,如下所示:Javascript 事件dragmove和targetNode返回未定义,javascript,kineticjs,Javascript,Kineticjs,我正在做我在kineticJS的第一个项目;我必须在画布上拖动一些形状,同时,我必须在页面的某个地方实时地写下形状的坐标。为此,我在图层上使用事件“dragmove”,如下所示: layer.on("dragmove",function(evt) {//detect shape and write stuff}); 我使用“targetNode”捕捉单击的形状。 问题在于:如果我在不属于任何组的形状上使用targetNode,一切都会正常工作,但如果必须移动的节点是组的一部分,则targetN
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() + "");
});
哦,它很管用!虽然我仍然不知道为什么。谢谢你的回答!你帮了我大忙!