Durchführen eines Bildlaufs in Bitmaps

Flash Player 9 und höher, Adobe AIR 1.0 und höher

Stellen Sie sich vor, Sie haben eine Stadtplananwendung erstellt, bei der Sie die Ansicht stets aktualisieren müssen, wenn der Benutzer die Karte (selbst um nur wenige Pixel) verschiebt.

Eine Möglichkeit zum Realisieren dieser Funktionalität besteht darin, jedes Mal ein neues Bild mit der aktualisierten Ansicht des Stadtplans darzustellen, wenn der Benutzer den Stadtplan verschiebt. Alternativ dazu können Sie ein einzelnes großes Bild erstellen und die scroll() -Methode einsetzen.

Mit der scroll() -Methode wird eine auf dem Bildschirm angezeigte Bitmap kopiert und dann an einer neuen, versetzten Position eingefügt. Diese Position wird durch die Parameter x und y angegeben. Wenn sich ein Bereich der Bitmap außerhalb der Bühne befindet, ergibt dies den Effekt, dass das Bild verschoben wurde. In Kombination mit einer Timer-Funktion (oder einem enterFrame -Ereignis) können Sie das Bild animieren bzw. einen Bildlauf realisieren.

Im folgenden Beispiel wird das vorherige Beispiel der Perlin-Störung zugrunde gelegt und ein größeres Bitmapbild erstellt. Dabei werden 3/4 des Bilds außerhalb der Bühne dargestellt. Dann wird die scroll() -Methode in Verbindung mit dem Ereignis-Listener enterFrame angewendet, mit dem das Bild um ein Pixel diagonal nach unten versetzt wird. Diese Methode wird jedes Mal zu Beginn eines Einzelbildes aufgerufen. Als Ergebnis werden die Bereiche außerhalb des Bildes nach und nach auf der Bühne dargestellt, während das Bild nach unten verschoben wird.

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