我正在尝试修改我的位图,将其像素更改为随机颜色。这就是我这样做的方式(我正在使用 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);
我为图形获得了新内存,这转化为游戏中的内存泄漏。这是一张图片: 正如您所看到的,MEM:部分不断增加:/
任何人都知道另一种方法吗?
答案 0 :(得分:0)
最后我只需要替换
graphic = new Image(_bmpData);
代表
_bmpImage.updateBuffer();
现在它可以正常工作:)