在Animate CC 2017中使用easeljs拖放

时间:2017-04-14 14:50:44

标签: javascript flash drag-and-drop createjs

我一直在Adobe Animate CC 2015.2中使用HTML Canvas项目,使用creatjs Mouse Interaction Tutorial中推荐的方法在舞台上拖动movieClip。我在运行OS X Yosemite的MacBook Pro上这样做。

这是我使用的代码,它工作正常。 movieClip位于时间轴第一帧的舞台上,动作位于同一帧中。 movieClip实例(my_mc)跟随鼠标 - 到目前为止一直很好。

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

然而,在两个朋友的Animate CC 2017上尝试完全相同的例子'配备Retina Display的MacBook Pro运行macOS Sierra,导致鼠标位置和movieClip位置之间存在奇怪且显着的偏移。鼠标从舞台的原点(0,0)移动越远,偏移越大。

有谁知道为什么会这样或者可以想到一个解决方法?我使用globalToLocal尝试了一些修改,但这并没有解决问题。

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

  • Animate CC 2017中的某些更改导致此问题
  • Retina显示屏导致问题
  • macOS Sierra导致问题

欢迎任何想法或变通方法。

提前致谢,

戴夫

1 个答案:

答案 0 :(得分:4)

我想我已经解决了这个问题。以下似乎适用于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(刮痕)。

谢谢,

戴夫