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

マウスダウンでキャンバスに別の形状(青い四角)を追加する1つのオブジェクト(赤い円)があります。青い四角はキャンバス上でドラッグできます。

赤い円のマウスダウンで青い四角形が作成され、マウスダウン状態であればすぐにドラッグできるようにしたいと思います。現在、青い四角形をドラッグするには、2 回目のマウスダウンを手動で実行する必要があります。

青い四角にフォーカスを当てる必要があるのか​​、プログラムでイベントを発生させる必要があるのか​​ 、それともこれを機能させるために何か他のことをする必要があるのか​​ わかりません。任意のガイダンスをいただければ幸いです。

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 に答える