Rulla bitmappar

Flash Player 9 och senare, Adobe AIR 1.0 och senare

Anta att du har skapat program över gatukartor där du måste uppdatera vyn varje gång kartan flyttas (även om kartan bara flyttats några få pixlar).

Ett sätt att skapa den här funktionen är att återge en ny bild på nytt som innehåller den uppdaterade kartvyn varje gång användaren flyttar kartan. Du kan också skapa en stor enkelbild och använda metoden scroll() .

Metoden scroll() kopierar en skärmbitmapp och klistrar in den på en ny förskjutningsplats, som anges av parametrarna ( x , y ). Om en del av bitmappen finns utanför scenen, får det till resultat att bilden skiftas. Om detta kombineras med en timerfunktion (eller en enterFrame -händelse) kan du låta bilden visas som animering eller rullning.

I följande exempel används föregående Perlin-brusexempel och genereras en större bitmappsbild (tre fjärdedelar återges utanför scenen). Metoden scroll() tillämpas därefter, tillsammans med händelseavlyssnaren enterFrame som förskjuter bilden med en pixel diagonalt nedåt. Metoden anropas varje gång bildrutan anges och som resultat återges delarna som ligger utanför skärmen på scenen vartefter bilden rullas nedåt.

import flash.display.Bitmap; 
import flash.display.BitmapData; 
 
var myBitmapDataObject:BitmapData = new BitmapData(1000, 1000, false, 0x00FF0000); 
var seed:Number = Math.floor(Math.random() * 100); 
var channels:uint = BitmapDataChannel.GREEN | BitmapDataChannel.BLUE; 
myBitmapDataObject.perlinNoise(100, 80, 6, seed, false, true, channels, false, null); 
 
var myBitmap:Bitmap = new Bitmap(myBitmapDataObject); 
myBitmap.x = -750; 
myBitmap.y = -750; 
addChild(myBitmap); 
 
addEventListener(Event.ENTER_FRAME, scrollBitmap); 
 
function scrollBitmap(event:Event):void 
{ 
    myBitmapDataObject.scroll(1, 1); 
}