繁体   English   中英

事件dragmove和targetNode返回未定义

[英]event dragmove and targetNode returns undefined

我正在用dynamicJS做我的第一个项目。 我必须在画布上拖动一些形状,与此同时,我必须在页面上的某个地方实时编写形状的坐标。 为了做到这一点,我在这样的图层上使用事件“ dragmove”:

layer.on("dragmove",function(evt) {//detect shape and write stuff});

我使用“ targetNode”来捕获单击的形状。 问题是这样的:如果我在不属于任何组的形状上使用targetNode,则一切正常,但是如果必须移动的节点属于组,则targetNode仅在第一次时起作用,然后返回未定义的值在接下来的所有时间内(拖动移动通常需要一些时间,不像dragstart或click那样)。

我做了一个小提琴,所以您可以了解我在说什么:

http://jsfiddle.net/UScmU/

2个rect在一个组中。 如果单击形状,则警报将返回其名称;如果拖动圆圈或矩形,则会在控制台上输入该形状的名称。

我将不胜感激。 对不起,我的英语,我也希望文本可以理解。

出于某种原因, 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() + "");
});

JSFIDDLE

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM