Alpha 0 vs Visible = false

时间:2012-11-09 16:41:17

标签: actionscript-3 flash animation tween

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

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

有什么意见吗?

3 个答案:

答案 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,则翻转为真。

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