ビットマップのスクロール

Flash Player 9 以降、Adobe AIR 1.0 以降

ユーザーが地図を動かすたびに、その移動幅がわずか数ピクセルであったとしても、ビューを更新しなければならないようなストリートマッピングアプリケーションを作成したとします。

この機能を実現するには、ユーザーが地図を動かすたびに、更新された部分を含む新しいイメージを再レンダリングするという方法があります。 または、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); 
}