Supposons que vous avez créé une application cartographique. Chaque fois que l’utilisateur déplace la carte, vous devez actualiser l’affichage (même si le plan n’a été déplacé que de quelques pixels).
Pour obtenir cette fonctionnalité, il est possible de réafficher une nouvelle image contenant le plan actualisé à chaque déplacement. Il est également possible de créer une grande image globale et d’utiliser la méthode
scroll()
.
La méthode
scroll()
copie une image bitmap affichée et la colle à un nouvel emplacement, spécifié par les paramètres (
x
,
y
). S’il se trouve qu’une partie de l’image est située hors écran, l’effet obtenu est celui d’un défilement de l’image. Si cette fonction est combinée avec un timer (ou un événement
enterFrame
), l’image semble animée.
L’exemple suivant reprend l’exemple précédent et génère une image bitmap de grande taille (dont les trois-quarts sont restitués hors scène). La méthode
scroll()
est alors appliquée. Grâce à un écouteur pour l’événement
enterFrame
, l’image est décalée d’un pixel en diagonale vers le bas. Cette méthode est appelée pour chaque nouvelle image. Les parties de l’image non affichées initialement apparaissent alors peu à peu sur la scène grâce à ce défilement.
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);
}