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