在 AS3 中 - 在使用beginFill()绘制到 DisplayObject 的图形画布之后,使用endFill()关闭填充是否会影响(提高)性能或内存消耗?
或者它只是关闭填充,以便您可以在其他地方开始新的填充?
在 AS3 中 - 在使用beginFill()绘制到 DisplayObject 的图形画布之后,使用endFill()关闭填充是否会影响(提高)性能或内存消耗?
或者它只是关闭填充,以便您可以在其他地方开始新的填充?
AS3 参考对这种beginFill()
方法进行了说明:
每当绘制三个或更多点或endFill()
调用该方法时,应用程序都会呈现填充。
这暗示该endFill()
方法并非完全必要。但是,如果绘制的点少于 3 个(即,如果您只绘制一条线),则在您调用endFill()
. 所以一般来说,endFill()
基本上是用来渲染填充,而不是关闭它。尽管如此,该endFill()
方法的文档指出:
如果当前绘图位置不等于moveTo()
方法中指定的先前位置并且定义了填充,则用一条线封闭路径然后填充。
endFill()
因此,如果绘图取决于用户输入,则最好使用。
总的来说,我建议endFill()
您在完成beginFill()
. 这样,您可以确保您的填充已正确完成。我已经看到它在我知道的每个使用的示例中都使用过beginFill()
,所以即使没有必要,它也是一种很好的做法。我怀疑它会显着影响性能,如果确实如此,它可能会改善它。
我在密集型应用程序(视频游戏)中经常使用这种方法,并尝试了解这一点。我从未注意到任何差异,所以我会说它不会影响性能或内存消耗。我认为它只是更改了一个标志,以便它不会填充您稍后绘制的其他形状。
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 ;)
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);