0
votes

I'm making a flash movie and I'd like to load a background image into my SWF and paint it to the stage using the Bitmap and BitmapData classes.

Am I approaching this properly? What code gets the image from the Loader to the BitmapData? Also, how do I get the image to show in the background?

I've never understood the BitmapData/Bitmap metaphor, explanations, code samples and tutorial links appreciated.

1

1 Answers

1
votes

The Loader class has a content property, which what you will access your loaded content through (be it an image or a swf file).

If your loading an image, once the loading is complete you can access the Bitmap instance through the content property, but you need to cast, as content is a DisplayObject.

e.g.

function onImageLoader(event:Event):void{
   trace(Bitmap(myImageLoader.content));
}

Regarding BitmapData/Bitmap:

  • BitmapData is mainly contains pixel informations(how many pixels are there, what the color or each one, etc.) and allows you to manipulate them. That is all BitmapData does, however, it cannot be displayed, as it is not a DisplayObject
  • Bitmap on the other hand is a DisplayObject, therefore it can be added to the display list, etc. All Bitmap instances contain a BitmapData instance, accessable through the bitmapData property.

In short, you use a Bitmap instance to add an image to the display list, and you use it's bitmapData property to access and manipulate it's pixels.

Back to the loader, you can either add the Loader instance to the display list or add the loader contents.

Here a quick example of what I mean by using a Bitmap, and the BitmapData:

//this would be your image Loader's complete handler
function imageLoaded(event:Event):void{
   var bitmap:Bitmap = Bitmap(imageLoader.content);
   var data:BitmapData = bitmap.bitmapData;
   trace("first pixel's colour is " + data.getPixel(0,0).toString(16));
}

HTH