在KineticJS中改变拖动目标

Change Dragged Target in KineticJS

本文关键字:拖动 目标 改变 KineticJS      更新时间:2023-09-26

是否可以在单击第一个对象时切换被拖动的对象到另一个对象?

问题:在下图中,当红色圆圈被拖动时,它变成了一个蓝色矩形,但对初始拖动没有响应。必须对蓝色矩形进行第二次拖动才能拖动它。

Desired:它应该从红色圆圈变为蓝色矩形,并且蓝色矩形应该立即平滑地跟随拖动运动。

尝试:我试图.simulate()事件,但它似乎不工作。什么好主意吗?

circle.on('dragmove', function(e) { 
    circle.simulate('click');  // used click handler to change into a blue rectange
    circle.simulate('dragend'); // (FAILED) stop dragging red circle
    rectangle.simulate('dragmove');     // (FAILED) start dragging blue rectangle
});

JSFIDDLE: http://jsfiddle.net/M6ufm/

http://jsfiddle.net/M6ufm/3/

我为你更新了这个。本质上,你是在移除圆,然后在圆上模拟一个事件,然后在矩形上模拟一个事件。

// Show BLUE rectangle on clicking RED circle, Hide RED circle, start dragging rectangle
circle.on('dragstart mousedown', function(e) { 
   layer.add(rectangle); 
   circle.remove();
   rectangle.simulate('mousedown');
   rectangle.simulate('dragstart');     
});