4

有没有办法用 EaselJS 显示无限画布?我已经阅读了使用 Javascript 或 JQuery 的方法,但是有没有办法使用 EaselJS 来管理它?

谢谢!

4

1 回答 1

11

您可以使用 JavaScript/jQuery 拖放画布本身 - 但 EaselJS 内容上有一个内置的拖放模型。查看示例文件夹中的 DragAndDrop 示例。

主要步骤是:

  • 监听某物上的 mousedown 事件。您应该在任何显示对象上使用内置的 EaselJS 事件。您不能使用舞台事件“stagemousedown”,因为它不会公开您需要的拖动事件,并且 Canvas 上的 DOM 事件不会有任何帮助。
  • 事件处理程序包含的鼠标事件将调度额外的拖放事件。为“mousemove”和“mouseup”添加监听器。
  • 响应鼠标移动事件以移动画布上的内容。

我扔了一个小钉子来展示这一点。 http://jsfiddle.net/lannymcnie/jKuyy/1/

它绘制了一堆内容,然后您可以拖动它。红框是监听鼠标事件的地方,但它只是移动一个包含所有内容的大容器。

以下是重点:

dragBox.addEventListener("mousedown", startDrag); // Object listens to mouse press

function startDrag(event) {
    // Get offset (not shown here, see fiddle)
    event.addEventListener("mousemove", doDrag);
}
function doDrag(event) {
    // Reposition content using event.stageX and event.stageY (the new mouse coordinates)
}

希望能帮助到你!

编辑:EaselJS 的 NEXT 版本(0.7.0+,自 2013 年 8 月起在 GitHub 中可用)具有更易于使用的全新拖放模型。 新的冒泡事件模型让您只需在任何对象上附加 pressmove 和 pressup 事件即可在有人按下对象时获取事件,然后进行拖动操作。

dragBox.on("pressmove", function(event) {
    // Note that the `on` method automatically sets the scope to the dispatching object
    // Unless you pass a scope argument.
    this.x = event.stageX;
    this.y = event.stageY;
});
于 2013-04-08T01:17:53.180 回答