【问题标题】:Drag and drop with easeljs in Animate CC 2017在 Animate CC 2017 中使用 easeljs 拖放
【发布时间】:2017-04-14 23:19:58
【问题描述】:

我一直在 Adob​​e Animate CC 2015.2 中使用 HTML Canvas 项目在舞台上拖动影片剪辑,使用 creatjs Mouse Interaction Tutorial 中推荐的方法。我在工作时在运行 OS X Yosemite 的 MacBook Pro 上执行此操作。

这是我使用的代码,它运行良好。影片剪辑位于时间线第一帧的舞台上,动作也在同一帧中。 movieClip 实例 (my_mc) 跟随鼠标移动 - 到目前为止一切顺利。

this.my_mc.on("pressmove", function(evt){
    evt.currentTarget.x = evt.stageX;
    evt.currentTarget.y = evt.stageY;
});

但是,在两个朋友的配备 Retina 显示屏并运行 macOS Sierra 的 MacBook Pro 上尝试在 Animate CC 2017 中完全相同的示例,会导致鼠标位置和影片剪辑位置之间出现奇怪而显着的偏移。鼠标距离舞台原点 (0,0) 越远,偏移越大。

有谁知道为什么会发生这种情况或能想到解决方法吗?我已经尝试使用 globalToLocal 进行一些修改,但这并不能解决问题。

我能想到的三个主要原因是:

  • Animate CC 2017 中的一些变化导致了这个问题
  • Retina 显示屏导致问题
  • macOS Sierra 导致问题

欢迎任何想法或解决方法。

提前致谢,

戴夫

【问题讨论】:

    标签: javascript flash drag-and-drop createjs


    【解决方案1】:

    我想我已经解决了这个问题。无论操作系统和显示分辨率如何,以下似乎都适用于 Animate CC 2015.2 和 Animate CC 2017。

    this.my_mc.on("pressmove", function(evt){
        var p = stage.globalToLocal(evt.stageX, evt.stageY);
        evt.currentTarget.x = p.x;
        evt.currentTarget.y = p.y;
    });
    

    我仍然需要弄清楚为什么在 Animate 2017 中而不是在 Animate CC 2015.2 中需要进行更改(抓挠头)。

    谢谢,

    戴夫

    【讨论】:

    • 这是因为 Animate 添加了一个“响应式”舞台来缩放舞台内容,这意味着舞台上的 x/y 鼠标位置发生了变化。你也许可以使用evt.localXevt.localY
    猜你喜欢
    • 2016-08-02
    • 2018-06-23
    • 1970-01-01
    • 2017-10-15
    • 1970-01-01
    • 2018-12-02
    • 2018-02-02
    • 2015-04-13
    • 2014-02-18
    相关资源
    最近更新 更多