【问题标题】:Stopping clicks on object on one stage going through to the nextStage in EaselJS / CreateJS在 EaselJS / CreateJS 中停止单击一个阶段上的对象进入下一个阶段
【发布时间】:2018-06-20 06:50:16
【问题描述】:

我在 CreateJS / EaselJS 中有两个画布和两个阶段。第一阶段将 autoClear 设置为 false,我正在从 stagemousedown 事件开始对其进行动态绘图。第二阶段使用 nextStage 将鼠标事件发送到第一阶段。第二阶段有界面,例如我想按下以转到另一个页面的位图。当我单击位图时,下面的舞台会进行动态绘图。我希望对 Bitmap 的单击不要进入第一阶段,但 stopImmediatePropagation 不起作用,也不会在其下方放置一个带有 mouseEnabled false 的 Bitmap 克隆。我可以只在 Bitmap 上使用 mousedown,这样用户就不会注意到太多,但是想知道是否有一种方法可以禁止鼠标事件通过顶层阶段,如果它们正在作用于具有要捕获的事件的对象?提前致谢。

【问题讨论】:

  • 你在哪里打电话stopImmediatePropagation?这应该没有帮助,因为第一阶段的某些东西必须接收 MouseEvent,从而阻止 nextStage 得到它。您的第一阶段 Bitmap 是否也接收到鼠标事件?
  • 哦,您是否希望在 stagemousedown 上停止传播会阻止其他内容上的单击鼠标事件?
  • 感谢 Lanny,我正试图阻止顶部舞台上的点击传播到底部舞台上的 stagemousedown(或者甚至在未来的其他情况下点击底部舞台)。我在顶部舞台上设置了 nextStage 以指向底部舞台。我假设最上面的舞台是制作的第二个舞台(或没有调整 z-index 的第二个画布)。

标签: events createjs easeljs stage


【解决方案1】:

stagemousedown 和其他舞台事件与 EaselJS 对象事件模型分离。它们是包罗万象的事件,基本上代表鼠标与 .因此,捕获和停止这些事件不会中断显示列表层次结构。

通常,如果您想在同一阶段阻止其他事件,您可以创建一个画布大小的框(形状等)来阻止交互。在处理nextStage 时尤其如此,因为我们传递的是 EaselJS 显示列表中的对象未处理的事件。

更好的方法可能是在stagemousedown 上切换nextStage,因此在单击事件期间它为空。不确定这是否可行,但它是一个开始。

【讨论】:

    猜你喜欢
    • 2020-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-01
    • 1970-01-01
    • 2020-05-29
    • 2019-03-03
    • 2016-12-14
    相关资源
    最近更新 更多