我有一個很大的精靈......我將它分成幾個小的功能波紋管。該功能很好,但我的.swf的內存使用量急劇增長。AS3/Flash BitmapData .draw內存泄漏
我在做什麼錯?
private function split_sprite(sp:Sprite,the_parrent:Sprite) {
var region:Rectangle = new Rectangle();
region = sp.getBounds(the_parrent);
var w=region.width/10;
var h = region.height ;
for (var i=0;i<10;i++){
//Build Matrix Transform
var mat:Matrix= new Matrix(1,0,0,1, 0-w*i, 0);
sp.transform.matrix = mat;
//Draw the bitmap
var temp:BitmapData = new BitmapData(w + 2 , h, true, 0x000000);
temp.draw(sp,mat);
//Attach the BitmapData to a Bitmap Instance
var myBitmap:Bitmap = new Bitmap(temp);
myBitmap.smoothing = true;
//Re apply an Inverse Matrix
mat = new Matrix(1,0,0,1, region.x, region.y);
myBitmap.transform.matrix = mat;
var spp=new Sprite();
//spp.cacheAsBitmap=true;
spp.addChild(myBitmap);
spp.x=w*i;
the_parrent.addChild(spp);
}
}
你能詳細說明內存使用量急劇增長嗎?將一堆位圖添加到舞臺上會增加內存佔用空間......泄漏意味着您將刪除它們,但內存不會被釋放。 –
它使用30 MB到100+ MB。 以下是我想要做的事情:我正在開發一個遊戲,它具有相當寬的級別(9000+像素寬和1500+高),通過一系列點(頂點)生成關卡中的地形並填充一個帶有beginBitmapFill的模式。遊戲在我的i5處理器上工作正常,但是當我在較慢的計算機上運行它時,幀速率從27 fps下降到大約14-17fps。 我做了一些挖掘和測試,發現大地形導致這個問題....所以開始閱讀如何優化它。 – George
我向父Sprite添加了一個scrollRect - 這改進了性能,並且我正在讀取關於緩存的位圖...但它有其侷限性...所以我決定拆分我的精靈,使其足夠小以便緩存。 有關如何完成此任務的任何建議?或者提高性能的任何其他建議。謝謝。 – George