Schuiven in bitmaps

Flash Player 9 of hoger, Adobe AIR 1.0 of hoger

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); 
}