【发布时间】:2017-11-03 07:27:52
【问题描述】:
在 Adobe Animate CC HTML5 Canvas (createJS) 中,我正在尝试做一些非常简单的事情,当广告的整个阶段为 moused over 时触发动画滚动,并在鼠标离开时触发动画滚动舞台。它应该很简单,但事实并非如此。在stage 上使用mouseenter 和mouseleave 是滞后的,只能间歇性地工作。 mouseover 和 mouseout 也是一样。
这是滞后且断断续续的代码:
stage.addEventListener("mouseenter", fl_MouseOverHandler.bind(this));
stage.addEventListener("mouseleave", fl_MouseOutHandler.bind(this));
function fl_MouseOverHandler(){
this.btnOverAnim.gotoAndPlay("on");
}
function fl_MouseOutHandler(){
this.btnOverAnim.gotoAndPlay("off");
}
我还在整个舞台大小的按钮上尝试了mouseover 和mouseout,但我遇到了同样的问题。 (同样以这种方式在框架内根本不起作用,并且广告是在框架内提供的)。我将var frequency 设置为90 看看这是否有助于解决滞后问题,但没有。
这是我试过的简单的mouseover / mouseout 代码:
var frequency = 90;
stage.enableMouseOver(frequency);
this.bgCta.addEventListener("mouseover", fl_MouseOverHandler.bind(this));
this.bgCta.addEventListener("mouseout", fl_MouseOutHandler.bind(this));
在createJS website 上显示“您可以使用stage.mouseInBounds 和mouseleave / mouseenter 事件来监控指针是否在画布上。”所以我想知道使用stage.mouseInBounds 是否会有所帮助(但我在任何地方都找不到如何使用它的示例)。但我实际上不认为这会有所帮助,因为我认为这整个问题是关于createJS 没有读取鼠标足够快的地方。
有人知道如何解决这种延迟和间歇性射击吗?解决方法?为什么 createJS 不像纯 js 那样不停地监控mouse events?
另外mouseenter 和mouseleave 在createJS 的舞台上也不能在平板电脑或移动设备上工作,这是一个问题,所以最好在按钮上使用mouseover 和mouseout整个舞台的大小。我确实尝试使用mouseover 和mouseout 并在按钮边缘和广告横幅边缘之间的按钮周围留出3 个像素的空间,这有帮助,但它仍然间歇性地触发。
请提出您的想法和想法。
【问题讨论】:
标签: javascript html canvas createjs