1

这个 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 来拖动它。

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

4

1 回答 1

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;
    }
});
于 2013-11-04T22:48:43.707 回答