2011-05-23 59 views
5

我試圖加載一個位於.SWF文件旁邊的圖像文件。事情是這樣的:將URLLoader數據添加到位圖數據

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

但這是輸出I得到:

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

的事情是loader.data有圖像的字節,但是不是BitmapData實例,而這正是Spritemap期待。

如何轉換爲BitmapData?

由於

+0

trace('e.target.data',e.target.data as Bitmap); e.target.data null – 2011-05-23 00:29:35

+0

在BitmapData文檔中找到一個示例,但使用Loader中不存在的「content」屬性: http://help.adobe.com/zh_CN/FlashPlatform/reference/actionscript/ 3 /閃光/顯示/ BitmapData.html – 2011-05-23 00:30:23

回答

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 
} 

基本上;

您應該使用Loader而不是URLLoader。您可以使用bitmap.bitmapData訪問裝載的BitmapBitmapData。 ('e.target.data',e.target.data as Bitmap);