2011-01-06 92 views
0

解決方案應該是直截了當的,但我找不到它,我的問題是我正在閱讀一個XML,並在xml裏面的一個屬性它是一個位圖路徑(字符串),當我讀這個XML我想將此字符串轉換爲位圖對象,所以我可以通過我的MXML使用。轉換和字符串(圖像的路徑)到位圖obj

有些建議嗎?

回答

2

我會加載像他們的答案中寫入heartcode的bitmapData。

但中檢索中BitmapData在載荷的作用,我會做這個

var ldr:Loader = event.currentTarget as Loader;  
var bitmap:Bitmap = Bitmap(ldr.content); 
var bd:BitmapData = new Bitmap(bitmap.bitmapData.clone(), "auto", true); 
ldr.removeEventListener(Event.COMPLETE, addBitmap); 
ldr = null; //Allow flex to gc the Loaded as you now have two copies of the bytes in memory 

採用抽籤的方法,我想加載器將需要在舞臺上,因此它可以被渲染。這將避免這一點。您可以在指定BD作爲BitmapImage的

+0

我真的試過,但我真的現在收到此錯誤:引發ArgumentError:錯誤#2015:無效的BitmapData。 \t在flash.display使用::的BitmapData /構造函數() \t在flash.display使用::的BitmapData() \t在spark.primitives ::的BitmapImage /集源()[E:\ dev的\ 4.x的\框架\項目\ spark \ src \ spark \ primitives \ BitmapImage.as:230] \t at mx.binding :: Binding/defaultDestFunc()[E:\ dev \ 4.x \ frameworks \ projects \ framework \ src \ mx \ binding \ Binding.as:270] \t at Function/http://adobe.com/AS3/2006/builtin :: call() \t at mx.binding :: Binding/innerExecute()[E:\ dev \ 4 .x \ frameworks \ projects \ framework \ src \ mx \ binding \ Binding.as:475] – 2011-01-06 19:32:19

+0

SWFLoader是一個mx控件。我認爲Spark的BitmapImage需要一個BitmapData對象作爲源。將用不同的方法更新我的答案。 – 2011-01-06 20:19:21

2

,如果你需要使用BitmapData或位圖的來源,試試這個:

import flash.display.*; 
import flash.events.*; 
import flash.net.*; 

var bitmapPath:String = "imageFilePath"; 
var myBitmap:Bitmap; 
var bitmapLoader:Loader; 

bitmapLoader = new Loader(); 
bitmapLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, addBitmap); 
bitmapLoader.load(new URLRequest(bitmapPath)); 

function addBitmap(event:Event):void 
{ 
    var bd:BitmapData = new BitmapData(event.currentTarget.content.width, event.currentTarget.content.height); 
    bd.draw(event.currentTarget.content); 

    myBitmap = new Bitmap(bd); 
    addChild(myBitmap); 
}; 
1

如果您使用MXML,你應該能夠傳遞字符串直接到標籤的「源」屬性。 Flex將所有的加載內容都抽象出來。

0

我發佈了一些代碼,可能有助於類似的問題,前一個問題。它會將您的XML內容預加載到ArrayCollection以供稍後使用。

Embeding images in an Flex application