想像一下您已建立街道地圖應用程式,每次使用者移動地圖,就需要更新檢視 (即使只是將地圖移動幾個像素也一樣)。
建立此功能的其中一個方法就是每次使用者移動地圖時,重新顯示包含已更新地圖檢視的新影像。或者,您可以建立較大的單一影像並使用
scroll()
方法。
scroll()
方法會複製螢幕上的點陣圖,然後將它貼到新的偏移位置,這個位置是由 (
x
,
y
) 參數指定。如果點陣圖的部分剛好在舞台以外,這將造成影像位移的效果。當結合計時器函數 (或是
enterFrame
事件) 時,您可以讓影像以動畫或捲動的方式顯示。
下列範例採用前面的 perlin 雜訊範例,並產生較大的點陣圖影像 (影像的四分之三顯示在舞台以外)。接著會套用
scroll()
方法以及
enterFrame
事件偵聽程式,它會沿著對角線的方向,將影像向下偏移一個像素。每次進入影格時就會呼叫此方法,因此當影像向下捲動時,就會將影像在螢幕外的部分顯示至「舞台」。
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);
}