我正在kineticJS做我的第一个项目;我必须在画布上拖动一些形状,同时,我必须在页面上的某个位置实时写出形状的坐标。为了做到这一点,我在图层上使用事件“dragmove”,如下所示:
layer.on("dragmove",function(evt) {//detect shape and write stuff});
我使用“targetNode”来捕捉点击的形状。 问题是:如果我在不属于任何组的形状上使用targetNode,一切正常,但如果必须移动的节点是组的一部分,则targetNode仅在第一次工作,然后返回未定义的值以下所有时间(拖拽通常需要一些时间,而不是像dragstart或点击)。
我做了一个小提琴,所以你可以看到我在说什么:
2个小组属于一个小组。如果你点击一个形状,一个警报返回它的名字,如果你拖动圆圈或rects,在控制台上将写出形状的名称。
我很感激一些帮助。对不起我的英语,我也希望这段文字是可以理解的。
答案 0 :(得分:0)
由于某种原因,evt.targetNode
仅定义了dragmove
上的第一个调用,然后它变为未定义,您可以通过这样做来看到:
layer.on("dragmove",function(evt) {
console.log(evt.targetNode);
console.log(evt.targetNode.getName()+"");
});
相反,请尝试在事件函数之外使用定义var nodo
,然后在nodo = evt.targetNode
上设置mousedown
。
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() + "");
});