2013-09-13 1 views
0

Я делаю свой первый проект в кинетическом JS; Мне нужно перетащить некоторые фигуры на холст, и тем временем мне нужно написать где-то на странице координаты фигуры в реальном времени. Для того, чтобы сделать это я использую событие «dragmove» на слое, как это:Событие dragmove и targetNode возвращает undefined

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

Я использовал «targetNode» для ловли Clicked форму. Проблема заключается в следующем: если я использую targetNode в фигуре, которая не является частью какой-либо группы, все работает, но если узел, который должен быть перемещен, является частью группы, targetNode работает только в первый раз и затем возвращает неопределенный значение для всех последующих времен (dragmove обычно занимает некоторое время, а не как dragstart или клик).

Я сделал скрипку, так что вы можете увидеть, что я говорю о:

http://jsfiddle.net/UScmU/

В 2 прямоугольников находятся в группе. если вы нажмете на фигуру, предупреждение вернет свое имя, если вы перетащите круг или прямоугольники, на консоли будет написано имя этой формы.

Я был бы признателен за помощь. извините за мой английский, я также надеюсь, что текст понятен.

ответ

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() + ""); 
}); 

JSFIDDLE

+0

о, это работает! хотя я до сих пор не знаю, почему. Благодарю вас за ответ! вы мне очень помогли! – 2295

Смежные вопросы