Я пытаюсь изменить растровое изображение, чтобы изменить их пиксели на случайный цвет. Это так, как я это сделать (я использую библиотекуFlashPunk):Как изменить изображение динамически
private var _v:Point = new Point;
private var _speed:Point = new Point(200, 200);
private var _bmpData:BitmapData = new BitmapData(24, 24, false, 0x000000)
private var _bmpImage:Image = new Image(_bmpData);
public function Player(p:Point)
{
graphic = _bmpImage;
x = p.x;
y = p.y;
}
override public function update():void
{
updateMovement();
updateCollision();
super.update();
}
override public function render():void
{
_bmpData.lock();
for (var j:int = 0; j < _bmpData.height; j++) {
for (var i:int = 0; i < _bmpData.width; i++) {
_bmpData.setPixel(i, j, FP.rand(0xffffff));
}
}
_bmpData.unlock();
graphic = new Image(_bmpData);
super.render();
}
Так хорошо, функция, которая делает это делают(), но в линии
graphic = new Image(_bmpData);
Я получаю новую память для графики, и это означает утечку памяти в игре. Вот изображение этого: И как вы можете видеть, MEM: часть постоянно увеличивается:/
Любой знает другой способ сделать это?
Почему вы не можете просто «освободить» графику перед вызовом «нового изображения»? – Dan
Если я поставлю delete (рисунок); перед новым Image() я получаю следующую ошибку: Ошибка: попытка удалить графику фиксированного свойства. Только динамически определенные свойства могут быть удалены. удалить (рисунок); Я новичок в AS3, так что наверняка это будет тривиальный вопрос, но я не нахожу ответа:/ – Puyover
Не можете ли вы просто установить 'graphic.bitmapData' в измененное значение вместо использования' new Image() 'каждый раз? – weltraumpirat