EaselJS /画布在拖放过程中更改元素焦点

问题描述 投票:1回答: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?
    }
});

我有一个对象(红色圆圈),在鼠标按下时向画布添加了另一种形状(蓝色正方形)。可以在画布上拖动蓝色方块。

我想在鼠标悬停红色圆圈时创建一个蓝色正方形,如果我仍处于鼠标悬停状态,则可以立即拖动它。目前,我必须手动在蓝色方块上进行第二次鼠标向下拖动,以将其拖动。

我不知道是否需要给予蓝色方形焦点,以编程方式触发事件或执行其他操作以使此工作正常进行。任何指导将不胜感激。

javascript drag-and-drop html5-canvas dom-events easeljs
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;
    }
});
© www.soinside.com 2019 - 2024. All rights reserved.