2012-12-27 34 views
1

是否可以在单击第一个对象时将正在拖动的对象切换到另一个对象?在KineticJS中更改拖动的目标

问题:在下面的jsfiddle中,当拖动红色圆圈时,它会变成蓝色矩形,但不会响应初始拖动。第二次拖动必须在蓝色矩形上拖动。

所期望的:它应该从红色的圆形变成蓝色的矩形,蓝色的矩形应该顺利地跟随拖动动作。

尝试:我试图.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/

回答

0

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');  
});