2011-01-18 14 views
1

に現れていない私が持っているデータ値に基づいて画像、例えばロード(UIComponentを拡張し)たItemRenderer:フレックスたItemRenderer画像はデータグリッドで実行

_img.source = "assets/images/flags/" + value[dglistData.dataField] + ".gif"; 

私は自分のアプリケーションの画像(フラグ)を実行しているがItemRendererに表示されます。 SWFファイルとしてアプリケーションをビルドしてBlazeDSにデプロイすると、画像は表示されません。代わりに、インターネットエクスプローラに表示される標準の「アイコンが欠落しています」というリンクがあります。

私の知る限り、私のANTビルドスクリプトには上記のディレクトリ "assets/images/flags /"とすべてのイメージがSWFファイルに含まれています。

これは相対パスの問題ですか?わかりませんが、どんな助けも得られます。

おかげ マイク

答えて

2

source Flash PlayerがHTTP要求を経由してイメージをロードしようとしているとして、あなたがパスを割り当てています。したがって、イメージをSWFに埋め込むことは効果がありません。

解決策は2つあります。画像を含むフォルダをサーバーに展開し、対応するパスをsourceとして使用するか、すべての画像をSWFに埋め込みます。

第2の解決策の簡単な例です。このコードでは、value[dglistData.dataField][Embed]メタデータの変数の1つに対応すると想定しています。

[Embed(source='assets/images/flags/Image1.png')] 
private var image1:Class; 

[Embed(source='assets/images/flags/Image2.png')] 
private var image2:Class; 

[Embed(source='assets/images/flags/Image3.png')] 
private var image3:Class; 

// access the image like this... 
_img.source = this[value[dglistData.dataField]]; 
+0

".gif"を最後に追加する点は何ですか? –

+0

ああ、申し訳ありませんが、私はMichaelの例をコピーして、この部分を削除するのを忘れました。私は私の答えを編集しました。 –

+0

こんにちはGerhard、答えに感謝します。私は[埋め込み]タグを使用して2番目のソリューションが好きです。私はロードする画像がたくさんあります。約75個のフラグがあり、各[埋め込み]タグを打ち込むのではなく、イメージを動的に読み込みキャッシュする方法がありますか?これはさらに多くの画像が追加されたときに私のコードを変更する必要がない場合にも役立ちます。ありがとう – Michael

関連する問題