Rolagem de bitmaps

Flash Player 9 e posterior, Adobe AIR 1.0 e posterior

Imagine que você criou um aplicativo de mapeamento de ruas em que sempre que o usuário move o mapa você precisa atualizar a visualização (mesmo que o mapa tenha sido movido apenas alguns pixels).

Uma forma de criar essa funcionalidade seria reprocessar uma nova imagem contendo a visualização atualizada do mapa sempre que o usuário move o mapa. Como alternativa, você pode criar uma única imagem grande e usar o método scroll() .

O método scroll() copia um bitmap na tela e o cola em um local de deslocamento — especificado por parâmetros ( x , y ). Se acontecer de uma parte do bitmap ficar fora do palco, o efeito resultante indicará que a imagem foi deslocada. Quando combinado com uma função de temporizador (ou um evento enterFrame ), você poderá fazer com a imagem pareça ser animada ou estar em rolagem.

O exemplo a seguir pega o exemplo de ruído perlin anterior e gera uma imagem de bitmap maior (três quartos dela são renderizados fora do palco). O método scroll() é então aplicado junto com um ouvinte do evento enterFrame que desloca a imagem por um pixel na direção diagonal para baixo. Esse método é chamado sempre que o quadro é inserido e, consequentemente, as partes da imagem fora da tela são renderizadas no Palco à medida que usamos a rolagem na imagem.

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); 
}