2013-11-04 37 views
1

此的jsfiddle說明我的問題最好http://jsfiddle.net/sdg9/YYUrm/EaselJS拖放期間/帆布變元件聚焦下降

circle.addEventListener("mousedown", function (evt) { 
    if (evt.nativeEvent.button === 0) { 
     square = new createjs.Shape(); 
     square.graphics.beginFill("blue").drawRect(0, 0, 100, 100); 
     makeDraggable(square); 
     stage.addChild(square); 
     stage.update(); 
     //How do I give focus to drag blue square without having to click again? 
    } 
}); 

我有一個物體(紅圈),關於鼠標按下增加了另一個形狀(藍色正方形)到畫布上。 藍色正方形可以在畫布周圍拖動。

我想在紅色圓圈的mousedown上創建一個藍色方塊,如果我仍處於mousedown狀態,則立即可拖動。目前,我必須在藍色方塊上手動執行第二個mousedown以拖動它。

我不知道我是否需要給予藍色方形焦點,以編程方式啓動一個事件,或者做其他事情來實現此功能。任何指導將不勝感激。

回答

1

你可以做什麼,也聽取了一圈「pressmove」事件,但你會拖就是你剛纔創建的廣場:

circle.addEventListener("pressmove", function (evt) { 
    if (evt.nativeEvent.button === 0) { 
     evt.target.topObj.x = evt.stageX; 
     evt.target.topObj.y = evt.stageY ; 
     stage.update();  
    } 
}); 

和topObj對象保存在「鼠標按下「事件:

circle.addEventListener("mousedown", function (evt) { 
    if (evt.nativeEvent.button === 0) { 
     // Create your square 
     ... 
     // Then save it as the square on top of the circle 
     evt.target.topObj = square; 
    } 
}); 
+0

這樣做了!我花了一秒才知道發生了什麼,但因爲evt.target是圓圈,我只是添加一個topObj屬性來引用最近創建的正方形的圓。謝謝。 – Steven