2012-12-27 39 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');  
});