关闭填充是否会影响性能



在AS3中,在使用beginFill()绘制到DisplayObject的图形画布后,是否关闭填充使用endFill()会影响(提高)性能还是内存消耗?

还是它只是关闭了填充,这样你就可以在其他地方开始新的填充?

我在密集型应用程序(视频游戏)中使用了很多这种方法,并试图了解这一点。我从来没有注意到任何差异,所以我想说它不会影响性能或内存消耗。我认为它只是改变了一个标志,这样它就不会填充你以后绘制的其他形状。

然而,我找不到任何"官方"消息来源证实或否认这一点,所以我不是100%肯定。很抱歉,这是我能给你的最好的答案;)

AS3参考说明了beginFill()方法:


每当绘制三个或多个点时,或者当调用endFill()方法时,应用程序都会渲染填充


这表明endFill()方法并不是完全必要的。但是,如果绘制的点少于3个(即,如果只绘制一条线),则在调用endFill()之前不会渲染填充。因此,一般来说,endFill()基本上用于渲染填充,而不是关闭填充。尽管如此,endFill()方法的文档指出:


如果当前图形位置不等于moveTo()方法中指定的上一个位置,并且定义了填充,则路径将用一条线闭合,然后填充


因此,如果绘图依赖于用户输入,最好使用endFill()

总的来说,每当你用完beginFill()时,我建议你使用endFill()。通过这种方式,您可以确保您的填充已正确完成。我在我所知道的每一个使用beginFill()的例子中都看到了它的使用,所以即使没有必要,它也是一种很好的做法。我怀疑它是否会显著影响性能,如果真的影响了性能,那么它可能会改善性能

试试这段代码,它不会调用endfill(),但会渲染一行。

var s:Sprite = new Sprite();
s.graphics.lineStyle(2, 0xff0000);
s.graphics.lineTo(200,150);
addChild(s);

相关内容

  • 没有找到相关文章

最新更新