2011-01-06 25 views
0

解決策はまっすぐに進むはずですが、私はそれを見つけることができません。私はxmlを読んでいるのですが、xmlのプロパティの1つはビットマップパスです(文字列)、私はこのXMLを読んでいるときに私は私のMXMLsを使用することができますので、この文字列をビットマップObjに変換したいと思います。ビットマップへの変換と文字列(画像のパス)obj

いくつかの提案

答えて

2

heartcodeのようにbitmapDataを読み込んで答えを書きました。私はdrawメソッドを使用して、この

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 

を行うだろう、ロードされた関数内でのBitmapDataを盗んする

しかし、私はそれをレンダリングすることができるので、ローダーは、ステージ上に存在する必要がありますだと思います。これはそれを避けるでしょう。あなたは、BitmapImageの

+0

I'mは試みたが、I'mは今、このエラーを取得:例外ArgumentError:エラー#2015:無効のBitmapDataを。 flash.displayで \tは、flash.display ::のBitmapData/CTOR()で \t ::のBitmapData() \t spark.primitivesで::のBitmapImage /設定ソース()[E:\ DEV \ 4.xの\枠組み\ mx.binding :: Binding/defaultDestFunc()[E:\ dev \ 4.x \ frameworks \ projects \ framework \ src \ mx \ binding \ projects \ spark \ src \ sparks \ primitives \ BitmapImage.as:230] \t \ Binding.as:270] mx.binding :: Binding/innerExecute()[E:\ dev \ 4]のFunction/http://adobe.com/AS3/2006/builtin :: call() \tの \t .x \ frameworks \ projects \ framework \ src \ mx \ binding \ Binding.as:475] –

+0

SWFLoaderはmxコントロールです。私は、SparkのBitmapImageはBitmapDataオブジェクトをソースとして期待していると思います。私の答えは別の方法で更新されます。 –

2

あなたがBitmapDataまたはビットマップを必要とする場合のソースとして割り当てるBDが、これを試すことができます:あなたはMXMLを使用している場合

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

、あなただけの文字列を渡すことができるはずですタグの "source"属性に直接アクセスします。 Flexはロードするすべてのものを抽象化します。

+0

しかし、私はアプリが始まる前にすべての画像をあらかじめロードしたい! –

+0

これは必ずしも最良の計画ではないかもしれません。あなたがやっていることに応じて、Flexのアイテムレンダラーが必要に応じて画像をロードすることを考慮すると、物事がより簡単になります。それでも、もしあなたがLoaderMaxのようなものを使うと考えるかもしれないすべてのものをあらかじめ読み込みたいのであれば、それはあなたを助けるはずです! – Myk

0

少し前に尋ねられた同様の質問に役立ついくつかのコードを掲載しました。 XMLコンテンツを取得し、後で使用するためにイメージをArrayCollectionにプリロードします。

Embeding images in an Flex application

関連する問題