ユーザーが地図を動かすたびに、その移動幅がわずか数ピクセルであったとしても、ビューを更新しなければならないようなストリートマッピングアプリケーションを作成したとします。
この機能を実現するには、ユーザーが地図を動かすたびに、更新された部分を含む新しいイメージを再レンダリングするという方法があります。 または、1 つの大きなイメージを作成して
scroll()
メソッドを使用する方法もあります。
scroll()
メソッドは画面上のビットマップをコピーし、それを
x
,
y
パラメーターで指定する新しいオフセット位置にペーストします。ビットマップの一部がステージ外にあると、イメージがシフトされた効果をもたらします。 タイマー制御関数または
enterFrame
イベントと組み合わせると、イメージがアニメーション化またはスクロールしているように見せることができます。
次の例では、前述の Perlin ノイズの例から大きなビットマップイメージを作成します。イメージの 4 分の 3 がステージ外でレンダリングされます。
scroll()
メソッドと、斜め下方向に 1 ピクセル分イメージをオフセットする
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);
}