3

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

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

4

3 回答 3

1

AS3 参考对这种beginFill()方法进行了说明:


每当绘制三个或更多点或endFill()调用该方法时,应用程序都会呈现填充。


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


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


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

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

于 2012-07-31T10:47:23.187 回答
1

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

However, I couldn't find any "official" sources confirming or denying this so I am not 100% positive. I'm sorry but this is the best answer I can give you ;)

于 2012-07-31T11:28:46.867 回答
0

try this code, it doesn't call endfill(), still it renders a line.

var s:Sprite = new Sprite();

s.graphics.lineStyle(2, 0xff0000);
s.graphics.lineTo(200,150);
addChild(s);
于 2014-02-18T05:35:41.583 回答