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