Как динамически изменить изображение - PullRequest
0 голосов
/ 30 января 2012

Я пытаюсь изменить свое растровое изображение, чтобы изменить их пиксели на случайный цвет.Вот как я это делаю (я использую библиотеку 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();
}

Итак, функция, которая делает это, это render (), но в строке1006 *

graphic = new Image(_bmpData);

Я получаю новую память для графики, и это приводит к утечке памяти в игре.Вот изображение этого: enter image description here И, как вы можете видеть, MEM: деталь постоянно увеличивается: /

Кто-нибудь знает другой способ сделать это?

1 Ответ

0 голосов
/ 30 января 2012

В конце мне нужно было только заменить

graphic = new Image(_bmpData);

для

_bmpImage.updateBuffer(); и теперь работает нормально :)

Вот документация для этой функции Ура! * * 1013

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...