Stel dat u een toepassing voor straatkaarten hebt gemaakt waarbij u de weergave telkens moet bijwerken wanneer de gebruiker de kaart verplaatst (ook al zijn het maar een paar pixels).
U kunt deze functionaliteit maken door in te stellen dat elke keer dat de gebruiker de kaart verplaatst, een nieuwe afbeelding met de bijgewerkte kaartweergave moet worden gerenderd. U kunt ook één grote afbeelding maken met behulp van de
scroll()
-methode.
Met de methode
scroll()
wordt het op het scherm weergegeven gedeelte van de bitmap gekopieerd en vervolgens verplaatst naar de verschoven locatie die is opgegeven met de parameters (
x
,
y
). Als een gedeelte van de bitmap zich buiten het werkgebied bevindt, levert dit een verplaatsingseffect op. Gecombineerd met een timerfunctie (of de gebeurtenis
enterFrame
) kunt u een animatie- of schuifeffect genereren.
In het volgende voorbeeld wordt van de Perlin-ruis uit het vorige voorbeeld een grotere bitmapafbeelding gegenereerd (waarvan driekwart buiten het werkgebied wordt gerenderd). Vervolgens wordt de methode
scroll()
toegepast in combinatie met de gebeurtenislistener
enterFrame
die de afbeelding met één pixel diagonaal omlaag verplaatst. Deze methode wordt telkens aangeroepen wanneer het frame wordt geopend. Het resultaat is dat gedeelten van de afbeelding die niet op het scherm worden weergegeven wel in het werkgebied verschijnen wanneer de afbeelding naar beneden wordt verschoven.
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);
}