在Adobe Animate CC HTML5 Canvas(createJS)中,我试图做一些非常简单的事情,即在整个广告阶段都触发动画过渡moused over
,并在鼠标离开阶段时触发动画过渡。它应该非常简单,但事实并非如此。在mouseenter
和mouseleave
上使用时stage
比较费时,并且只能间歇性地工作。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网站上,它显示“您可以通过使用stage.mouseInBounds
AND mouseleave
/mouseenter
事件来监视指针是否在画布上”。所以我想知道使用stage.mouseInBounds
是否会有所帮助(但我找不到任何如何使用它的示例)。但实际上我认为这不会有帮助,因为我认为整个问题都在于createJS
无法读取鼠标足够快的位置。
有谁知道如何解决这种延迟和间歇性射击?有工作吗?为什么createJS不仅mouse events
像纯js一样监视持续不断的内容?
也mouseenter
和mouseleave
在舞台上的createJS
不工作在平板电脑或手机,这是一个问题,所以这将是更好地做到这一点mouseover
,并mouseout
在按钮上舞台的整体尺寸。我曾尝试使用mouseover
和mouseout
,以及以按钮的边缘和广告横幅的边缘之间的按钮,3个像素的空间,这个帮助,但它仍然射击间歇。
请提出您的想法和想法。
鼠标悬停检查很昂贵。画布本质上只是一个位图,因此EaselJS不能使用浏览器中的鼠标事件(整个画布只能得到一个)。相反,EaselJS中的鼠标悬停要求将每个元素绘制到1x1像素的画布上,然后检查填充。这样可以提供完美的像素检测,但是如果您要检查大量内容或检查频率太高,则成本很高。
降低频率:您似乎将其设置frequency
为90。这确实很高(两次检查之间间隔11毫秒,基本上是试图达到90 fps)。默认值为10,这比良好的帧率慢,但足够快以至于感觉很快。您可以将其降低到20左右,以便给您带来可怜的支票,而又不必太高。
修改交互性:您可以做的另一件事是准确过滤出要检查的内容。默认情况下,所有显示对象都会被检查-但您可以通过关闭 mouseEnabled
不需要的内容(从检查中删除它们),然后关闭 mouseChildren
要作为单个对象处理的容器,来减少这种情况(因此像复杂按钮这样的东西被绘制一次,而不是单独绘制其所有内容)。
// Example
myBackground.mouseEnabled = false;
myButton.mouseChildren = false;
希望有帮助!
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句