Вход

Просмотр полной версии : BitmapData загружает оперативную память...


bjd
30.11.2007, 03:09
суть:

На сцене размером 800 на 600 пикселей создаётся множество объектов в данном случае монетки.
При нажатии на монетку происходит проверка на пересечение с монетками на глубинах выше нажатой монетки, и если на нажатой монетке ничего не лежит то она исчезает.

Проверка на пересечение происходит через BitmapData.hitTest, так как в итоге монетки будут разных размеров и нестандартной формы.

Проблема в том, что после создания сотни монеток оперативная память загружается на 200 мб! а ведь их должно быт не одна сотня.

Если Вы подскажете как снизить этот показатель буду очень благодарен !



import flash.display.BitmapData;
import flash.geom.Matrix;
import flash.geom.Transform;
import flash.geom.ColorTransform;
import flash.geom.Point;

//количество монеток на сцене
num_mc = 100;

//здесь хранятся занятые глубины
var myBitmapDataX_array:Array = new Array();

for (i = 0; i < num_mc; i++) {

var depth:Number = this.getNextHighestDepth();
var name_money_depth:String = "mc" + String(depth);

var myBitmapDataX:BitmapData = BitmapData.loadBitmap("money");
this["myBitmapData" + depth] = new BitmapData(800, 600, true, 0x00CCCCCC);


var mc:MovieClip = this.createEmptyMovieClip(name_money_depth, depth);
mc.attachBitmap(this["myBitmapData" + depth],depth,null,true);
but_mc = mc.attachMovie("blik_mc", name_money_depth, depth + 1);

//случайные координаты для монетки
mc_y = Math.floor(Math.random() * 200) + 200;
mc_x = Math.floor(Math.random() * 300) + 300;
angle = Math.floor(Math.random() * 360);
mc_rotation = angle * 0.0174;

var myMatrix:Matrix = new Matrix();
myMatrix.rotate(mc_rotation);

var translateMatrix:Matrix = new Matrix();
translateMatrix.translate(mc_x,mc_y);

myMatrix.concat(translateMatrix);


var rectangleTrans:Transform = new Transform(but_mc);
rectangleTrans.matrix = myMatrix;

this["myBitmapData" + depth].draw(myBitmapDataX,myMatrix,null,null,null,true);

myBitmapDataX_array.push(depth);

}... это код создающий кучку монеток

iNils
30.11.2007, 14:20
Каждый объект BitmapData после использования, должен быть удалем методом dispose.