1

我正在开发一个带有一些动画的网站(哦,是的),我对获得更好性能的方式表示怀疑。其中一些动画的 alpha 从 1 变为 0。所以我有两种方法:

  • 当然是补间,但是对象仍然在 alpha = 0 的舞台上,是否还有一些处理工作剩余?还是 Flash 很聪明,只是忽略了对象?
  • 手动,当 alpha 低于 0.1 时,我设置 visible = 0 就是这样。但我想知道补间是否比手工制作的功能更快......

有什么意见吗?

4

3 回答 3

1

即使 alpha 设置为零,Flash 也会计算显示列表上的显示对象。

Alpha 决定剪辑的不透明度,而可见决定剪辑是否由播放器渲染。

因此,如果您不需要显示或交互,则 visible=false 是更高的性能。

于 2012-11-09T17:28:48.160 回答
1

绝对使用 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;
}});

我希望它有帮助,罗布

于 2012-11-09T17:41:14.150 回答
1

当一个项目的alpha值为 时0,它仍然由玩家渲染,仍然调度鼠标/交互事件并且仍然影响它的父项的边界。

当您设置visiblefalse时,玩家不会按说对象渲染对象,并且不会调度鼠标/交互事件。但是,它仍然会影响父级的边界。

如果您真的想提高效率,我建议您完全从显示列表中删除该项目。例如。removeChild(item);然后它不再影响父级的边界,并且真正没有被渲染。

关于补间,对于任何库,当补间完成或从显示列表中删除时,很容易将可见设置为 false。greensocks 补间库有一个特殊的参数来实际执行此操作 - 而不是使用alpha您使用的属性 use autoAlpha。当值下降到零时,它会将可见性设置为 false。如果高于 0,它会翻转回 true。

补间是否比手工制作的函数快取决于补间和手工制作的函数的质量。大多数补间库都非常高效,我不会担心。

于 2012-11-09T17:41:51.037 回答