设想您创建了一个街道图应用程序,每次用户移动该图时,都需要您更新视图(即使该图只移动了几个像素)。
创建此功能的一种方式是,每次用户移动街道图时,均重新呈示包含更新的街道图视图的新图像。或者,创建一个大型图像,并使用
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);
}