2011-05-23 10 views
5

Estoy intentando cargar un archivo de imagen que está justo al lado del archivo .SWF. Algo como esto:Datos de URLLoader en BitmapData

var loader:URLLoader = new URLLoader(); 
loader.dataFormat = URLLoaderDataFormat.BINARY; 
loader.addEventListener(Event.COMPLETE, function(e:Event):void { 
    trace(typeof(loader.data)); 
    graphic = spritemap = new Spritemap(loader.data, 32, 32); 
    ... 
} 

Pero esta es la salida me sale:

object 
[Fault] exception, information=Error: Invalid source image. 

La cosa es loader.data tiene bytes de la imagen, pero no es una instancia de BitmapData y eso es lo Spritemap está esperando.

Cómo convertir a BitmapData?

Gracias

+0

trace ('e.target.data', e.target.data como mapa de bits); e.target.data null –

+0

Se encontró un ejemplo en la documentación de BitmapData pero utiliza una propiedad de "contenido" que no existe en Loader: http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/ 3/flash/display/BitmapData.html –

Respuesta

18
// define image url 
var url:URLRequest = new URLRequest("http://sstatic.net/ads/img/careers2-ad-header-so.png"); 

// create Loader and load url 
var img:Loader = new Loader(); 
img.load(url); 

// listener for image load complete 
img.contentLoaderInfo.addEventListener(Event.COMPLETE, loaded); 

// attaches the image when load is complete 
function loaded(e:Event):void 
{ 
    var bitmap:Bitmap = e.target.content; 
    doStuffWithBitmapData(bitmap.bitmapData); 

    addChild(bitmap); 

    // remove listener 
    e.target.removeEventListener(Event.COMPLETE, loaded); 
} 

/** 
* Handle loaded BitmapData 
* @param bmd The loaded BitmapData 
*/ 
function doStuffWithBitmapData(bmd:BitmapData):void 
{ 
    trace(bmd); 

    // your code 
} 
Básicamente

;

Debe utilizar Loader, no URLLoader. Puede acceder al BitmapData del Bitmap cargado con bitmap.bitmapData.

Cuestiones relacionadas