비트맵 스크롤

Flash Player 9 이상, Adobe AIR 1.0 이상

사용자가 지도를 움직일 때마다(단 몇 개의 픽셀만 움직였을 경우에도) 화면을 업데이트해야 하는 주소 매핑 응용 프로그램을 개발했다고 가정합시다.

이러한 기능을 구현하는 방법 중 하나는 사용자가 지도를 움직일 때마다 업데이트된 맵 화면이 포함된 새 이미지를 다시 렌더링하는 것입니다. 또는 한 개의 커다란 이미지와 scroll() 메서드를 사용하는 방법도 생각할 수 있습니다.

scroll() 메서드는 화면상에 있는 비트맵을 복사하여 x, y 매개 변수에서 지정한 새로운 오프셋 위치에 붙여 넣습니다. 비트맵의 일부가 안 보이는 위치에 있을 경우 이 메서드는 이미지가 이동한 것처럼 보이는 효과를 연출합니다. 또한 타이머 함수(또는 enterFrame 이벤트)와 함께 사용할 경우 이미지에 애니메이션 효과나 스크롤 효과를 줄 수 있습니다.

다음 예제에서는 앞서 설명한 Perlin 노이즈 예제를 활용하여 이미지의 3/4이 스테이지에 표시되지 않는 큰 비트맵 이미지를 생성합니다. 그런 다음 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); 
}