关闭填充影响性能吗?

时间:2012-07-31 10:08:35

标签: actionscript-3 flash

在AS3中 - 使用beginFill()绘制到DisplayObject的图形画布后,关闭填充 使用endFill()影响(改善)性能或内存消耗?

或者它只是关闭填充,以便您可以在其他地方开始新的填充?

3 个答案:

答案 0 :(得分:1)

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


只要绘制了三个或更多点,或者调用了endFill()方法,应用程序就会渲染填充。


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


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


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

总的来说,我建议您在完成endFill()时使用beginFill()。这样您就可以确保填充正确完成。我已经看到它在我知道使用beginFill()的每个例子中都使用过,所以即使没有必要,这也是很好的做法。我怀疑它会显着影响性能,如果确实如此,它可能会改善它。

答案 1 :(得分:1)

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

然而,我找不到任何“官方”消息来源确认或否认这一点,所以我不是100%肯定的。对不起,这是我能给你的最佳答案;)

答案 2 :(得分:0)

试试这段代码,它不会调用endfill(),仍会呈现一行。

var s:Sprite = new Sprite();

s.graphics.lineStyle(2, 0xff0000);
s.graphics.lineTo(200,150);
addChild(s);