Данные URLLoader в BitmapData

Я пытаюсь загрузить файл изображения, который находится рядом с файлом .SWF. Что-то вроде этого:

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

Но вот результат, который я получаю:

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

Дело в том, что loader.data имеет байты изображения, но не является экземпляром BitmapData, и этого ожидает Spritemap.

Как преобразовать в BitmapData?

Спасибо


person John Crichton    schedule 23.05.2011    source источник
comment
трассировка ('e.target.data', e.target.data как Bitmap); e.target.data null   -  person John Crichton    schedule 23.05.2011
comment
Нашел образец в документации BitmapData, но использует свойство содержимого, которого нет в Loader: help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/.   -  person John Crichton    schedule 23.05.2011


Ответы (1)


// 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
}

В основном;

Вы должны использовать Loader, а не URLLoader. Вы можете получить доступ к BitmapData загруженного Bitmap с помощью bitmap.bitmapData.

person Marty    schedule 23.05.2011