我有一个函数,每次调用时都会重绘一个Shape
function drawIt():void {
myShape.graphics.clear() //Is this necessary?
myShape.graphics.beginFill(newColor);
myShape.graphics.drawRect(0,0,w,h);
myShape.graphics.endFill();
}
如果这个函数经常调用颜色而且我每次都不做graphics.clear(),我最终会在彼此的顶部堆积一大堆矩形来吃掉一堆存储器?
答案 0 :(得分:2)
这是必要的,否则任何新的绘图都将添加到前一个绘图之上。如果这不是您需要的效果,那么您需要调用clear来删除任何先前的绘图。此行为可用于裁剪先前绘图的一部分。你可以绘制一个矩形,让我们说黑色,然后画一个圆圈(相同的颜色),结果是一个裁剪。
底线:如果你没有打电话清除所有绘图添加在彼此之上。
答案 1 :(得分:1)
要回答您的问题,请看一下这个简单的测试:
var init_memory:uint = System.totalMemory;
var shape:Shape = new Shape();
for(var i:int = 0; i < 1000; i++){
shape.graphics.clear();
shape.graphics.beginFill(0xff0000);
shape.graphics.drawRect(0, 0, 10, 10);
shape.graphics.endFill();
}
trace(System.totalMemory - init_memory); // gives : 4096 (bytes)
让我们现在评论这一行:
//shape.graphics.clear();
我们得到:
trace(System.totalMemory - init_memory); // gives : 102400 (bytes)
只有一个形状:
trace(System.totalMemory - init_memory); // gives : 4096 (bytes)
我认为你不需要任何评论来理解为什么要使用graphics.clear()
......
希望可以提供帮助。