我正在开发一个带闪光灯的网站,有一些动画(哦,是的),我对我获得更好性能的方式表示怀疑。其中一些动画的alpha值从1变为0.所以我有两种方法:
有什么意见吗?
答案 0 :(得分:1)
即使alpha设置为零,Flash也会计算显示列表中的显示对象。
Alpha确定剪辑的不透明度,而visible确定剪辑是否由播放器渲染。
因此,如果您不需要显示或交互,则visible = false会提高性能。
答案 1 :(得分:1)
绝对使用Greensock库。
要为alpha设置动画,然后让它不可见,请执行以下操作:
TweenLite.to(movieClip, 0.5, { autoAlpha: 0 });
有关Greensock Tweening引擎的更多信息: http://www.greensock.com/tweenlite/
如果显示列表中有太多对象并影响性能,您仍然可以将对象移出“渲染”区域,这个(如果我是正确的)2000px离开舞台,那么你应该这样做:
TweenLite.to(movieClip, 0.5, {autoAlpha: 0, onComplete: function() {
movieClip.x = movieClip.y = 10000;
}});
我希望它有所帮助, 罗布
答案 2 :(得分:1)
如果某个项的alpha
值为0
,它仍会由播放器呈现,仍然会调度鼠标/交互事件,但仍会影响其父级的边界。
当您将visible
设置为false
时,玩家不会按照说明呈现对象,也不会发送鼠标/互动事件。但它确实会影响父母的界限。
如果您真的想提高效率,我建议您完全从显示列表中删除该项目。例如。 removeChild(item);
然后它不再影响父级的边界,并且确实没有渲染。
关于补间,对于任何库,在补间完成或从显示列表中删除时,将visible设置为false非常容易。 greensock补间库有一个特殊的参数来实际做 - 而不是使用你使用的alpha
属性使用autoAlpha
。无论何时值降至零,它都将可见性设置为false。如果超过0,则翻转为真。
补间是否比手工制作的函数更快取决于补间和手工制作功能的质量。大多数补间库非常有效,我不担心。