拖拽期间EaselJS /画布更改元素焦点下降

时间:2013-11-04 06:21:53

标签: javascript-events drag-and-drop html5-canvas easeljs

这个jsfiddle最好地说明了我的问题http://jsfiddle.net/sdg9/YYUrm/

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状态,它会立即拖动。目前我必须在蓝色方块上手动执行第二次mousedown来拖动它。

我不知道是否需要给出蓝色正方形焦点,以编程方式触发事件,或者做其他事情以使其正常工作。任何指导都将不胜感激。

1 个答案:

答案 0 :(得分: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对象保存在“mousedown”事件中:

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