EASELjs 拖动事件,这里有什么问题

EASELjs drag event, what's wrong here

初学者感谢一个有趣的框架,干得好,我希望将来的文档会更好,在我看来它缺乏每个对象方法的实际工作示例。

所以这是我的问题,我对这个框架进退两难,有人能指出我在这里做错了什么吗?我从这个 example. Here is the working code on jsfiddle 构建它。最新版本应该移动 canvas.

上的矩形

P.S。没有Container也是一样。

var elementOptions = {
    stroke: 3,
    left: 100,
    top: 50,
    width: 100,
    height: 200,
    transformMatrix: [1, 0, 0, 1, 0, 0]
};

function rectElementCanvasObject(options) {
    var shape,
    rect = new createjs.Graphics()
        .setStrokeStyle(options.stroke)
        .beginStroke('rgba(255, 0, 0, 0.5)')
        .beginFill('rgba(255, 0, 0, 0.5)')
        .rect(
    options.left,
    options.top,
    options.width,
    options.height);
    shape = new createjs.Shape(rect);
    if (options.transformMatrix !== undefined) {
        shape.transformMatrix = new createjs.Matrix2D(
        options.transformMatrix[0],
        options.transformMatrix[1],
        options.transformMatrix[2],
        options.transformMatrix[3],
        options.transformMatrix[4],
        options.transformMatrix[5]);
    }
    return shape;
}

$(document).ready(function () {
    var canvasId, canvasElement, rectangle, dragger;
    canvasId = 'demoCanvas';
    canvasElement = new createjs.Stage(canvasId);
    canvasElement.mouseMoveOutside = true;
    rectangle = rectElementCanvasObject(elementOptions);

    dragger = new createjs.Container();
    dragger.x = dragger.y = 100;
    dragger.addChild(rectangle);

    dragger.on("pressmove", function (evt) {
        evt.target.x = evt.stageX;
        evt.target.y = evt.stageY;
        canvasElement.update();
    });

    dragger.on("pressup", function (evt) {
        console.log("up");
    });

    canvasElement.addChild(dragger);

    canvasElement.update();
    createjs.Ticker.addEventListener("tick", canvasElement);
});

这是对您的 fiddle 的快速更新: https://jsfiddle.net/lannymcnie/n55jk201/7/

dragger.on("pressmove", function (evt) {
    evt.currentTarget.x = evt.stageX;
    evt.currentTarget.y = evt.stageY;
    canvasElement.update();
});

矩形现在可以拖动了(使用 evt.currentTarget 而不是 evt.target),这让它起作用了,我在注册点添加了一个圆圈,这样你就可以看到它在拖动时的位置.

存储鼠标的初始 x/y 偏移量,并将其应用于拖动坐标,使其捕捉到鼠标按下的位置,而不是拖动器注册点。

不确定这是否是您想要完成的。

--

感谢您对文档的反馈。我们(CreateJS 开发人员 + gskinner)绝对乐于添加更多示例——尽管我不确定如何处理更复杂的内容。绝对愿意接受有关您正在寻找的内容的更具体示例。