Это медленно, потому что вы все время визуализируете большое изображение.
Вот несколько вещей, которые приходят мне в голову:
- Попробуйте использовать свойство scrollRect в объекте Bimtap, содержащем ваше изображение BitmapData, для отображения только видимой области, а затем используйте scrollRect x и y для перемещения в новую область
- Попробуйте использовать BitmapData размером видимой области и используйте copyPixels () , чтобы получить правильную область для отображения, снова используя прямоугольник
- Попробуйте использовать BitmapData.scroll ()
Вот несколько фрагментов:
scrollRect:
//assuming map is BitmapData containing your large image
//100x100 is a test scroll area
var scroll:Rectangle = new Rectangle(0,0,100,100);
var bitmap:Bitmap = new Bitmap(map);
bitmap.scrollRect = scroll;
addChild(bitmap);
this.addEventListener(Event.ENTER_FRAME, update);
function update(event:Event):void{
scroll.x = mouseX;
scroll.y = mouseY;
bitmap.scrollRect = scroll;
}
copyPixels:
var scroll:Rectangle = new Rectangle(0,0,100,100);
var scrollPoint:Point = new Point();
var map:BitmapData = new Map(0,0);
var bitmap:Bitmap = new Bitmap(new BitmapData(100,100,false));
bitmap.bitmapData.copyPixels(map,scroll,scrollPoint);
addChild(bitmap);
this.addEventListener(Event.ENTER_FRAME, update);
function update(event:Event):void{
scroll.x = mouseX;
scroll.y = mouseY;
bitmap.bitmapData.fillRect(scroll,0xFFFFFF);
bitmap.bitmapData.copyPixels(map,scroll,scrollPoint);
}
Не идеально, но это должно дать вам представление
НТН,
George