0

私は Flex と ActionScript の初心者ですが、クエリ文字列に基づいて Flex ページの要素を置き換えるタスクがあります。つまり、ユーザーは ?image=dog.png などのパラメーターを渡すことができ、ActionScript は画像をユーザーが渡したものに置き換えます。ページ全体は .mxml ファイルに配置されます。プレースホルダー画像 (透明) は、ユーザーが指定したものに置き換える必要があります。渡された画像は常に SWF ファイルに存在します。

私はいくつかのことを試しましたが、どれもうまくいきませんでした。たとえば、画像のソースを変更してみました):

view.BlankImage.source = "@Embed(source='/resources/myNewImage.png')";

また、実行時に表示できると仮定して、最初は非表示の画像を挿入しようとしました。しかし、Flex ではページの書式設定に隠し画像が含まれているため、隠し画像をまったく表示しない場合でも、すべての配置がめちゃくちゃになります。

関連する mxml は次のとおりです。

<s:VGroup width="100%" bottom="0" horizontalAlign="right">
<mx:Image id="BlankSpot" source="@Embed(source='/resources/blank.medium.png')"
    visible="{!someParameter}" includeInLayout="{BlankSpot.visible}"/>
    <toolbars:SearchBox id="searchBox"/>
</s:VGroup>

実行時にイメージを置き換える方法はありますか? さらに情報を提供する必要がありますか?

ありがとう!

4

1 に答える 1

2

もう少し情報が役立ちます。画像は Web からのものであり、すべてがアプリケーションに埋め込まれているわけではないと想定しています。

その場合は、画像に URL を新しい .png に渡すだけです。

試すBlankSpot.source = "http://someurl.com/image.png

編集

すべての画像がアプリケーションに埋め込まれていると述べたので、Web URL を相対パスに置き換えることができます。

多分このようなもの:

var img:String = "dog.png";
BlankSpot.source = "/resources/" + img;

一定数の画像がある場合は、事前に定義して埋め込むこともできます。これを処理する良い方法は、すべての埋め込みアセットを保持する Resources クラスを作成することです。

package {
    public final class Resources {
        [Embed (source="/resources/dog.png")] public static const DOG:Class;
      }
}

これを画像のソースで直接使用できます

BlankSpot.source = Resources.DOG;

また、Flex 4 を使用しているように見える<s:VGroup>ので、spark イメージにも切り替える必要があります。

ここで mx 画像を使用する特定の理由がない場合は、そのブロックを次のように置き換えます

<s:Image id="BlankSpot" source="@Embed(source='/resources/blank.medium.png')"
visible="{!someParameter}" includeInLayout="{BlankSpot.visible}"/>
于 2012-05-01T20:08:10.893 に答える