如何动态修改图像

时间:2012-01-29 20:40:09

标签: flash actionscript-3

我正在尝试修改我的位图,将其像素更改为随机颜色。这就是我这样做的方式(我正在使用 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(),但是在行

graphic = new Image(_bmpData);

我为图形获得了新内存,这转化为游戏中的内存泄漏。这是一张图片: enter image description here 正如您所看到的,MEM:部分不断增加:/

任何人都知道另一种方法吗?

1 个答案:

答案 0 :(得分:0)

最后我只需要替换

graphic = new Image(_bmpData);

代表

_bmpImage.updateBuffer();现在它可以正常工作:)

Here is the doc for that function 干杯!