【问题标题】:EaselJs canvas dragstart event not bubbling to parentEaselJs画布dragstart事件不会冒泡到父级
【发布时间】:2015-09-30 16:47:56
【问题描述】:

我有许多画布元素,它们需要是可拖动的。 (不是 canvas 元素中的元素,我指的是实际的 canvas DOM 节点)

代码如下所示

<div class="top-parent" draggable="true">
  <div class="inner-parent">
     <canvas></canvas>
  </div>
</div>

如果我只有一个尚未使用 createjs 初始化的常规画布元素,那么我正在工作的拖放库工作正常(我相信它可以在 html5 dragstart 事件中工作)。如果我使用 new createjs.Stage(canvas); 拖放功能不起作用,则似乎 dragstart 事件没有冒泡,或者甚至没有被注册。

我试过 stage.enableDOMEvents = true; 这似乎不起作用 - 我想这是有道理的,因为它应该是默认选项,但我想我还是会尝试。

【问题讨论】:

  • 你是说dragstart没有在画布外冒泡吗? EaselJS 使用 CreateJS 事件模型,与 DOM 3 级事件类似,但又不一样。

标签: javascript html canvas easeljs createjs


【解决方案1】:

默认情况下,EaselJS Stage 实例在原生触摸/鼠标事件上调用 preventDefault(),以防止画布被选中(并获得丑陋的选择突出显示)。尝试使用以下命令禁用此功能:myStage.preventSelection = false;。这应该让这些事件正常进行,这可能会让您的拖放库正常工作。

如果您根本没有在 Stage 中使用鼠标事件(例如,带有 click、mouseDown 等处理程序的 DisplayObject 实例),您可以使用 myStage.enableDOMEvents(false); 完全取消对 DOM 事件的订阅。请注意,enableDOMEvents 是一种方法,而您正在尝试将其用作示例中的属性。

【讨论】:

猜你喜欢
  • 2017-05-02
  • 1970-01-01
  • 2021-09-05
  • 1970-01-01
  • 2017-03-05
  • 2010-12-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多