私の当初の目的は、クライアントが自分で管理できるSWFの外部にXMLファイルを作成することでした。これにより、クライアントは表示される画像を制御できるようになります。
私が投稿した最初の答えは、私が求めていた解決策ではありませんでした。使用fx:XML
とは、XMLファイルの内容が実際にSWFにコンパイルされるため、コンパイル後に変更できないことを意味します。
そこで、Jamesのソリューションを実装しました。
XMLファイルは次のようになります。
<?xml version="1.0" encoding="ISO-8859-1"?>
<images>
<image source="path/to/image1.jpg" />
<image source="path/to/image2.jpg" />
<image source="path/to/image3.jpg" />
<image source="path/to/image4.jpg" />
</images>
MXML:
<?xml version="1.0" encoding="utf-8"?>
<s:Group
xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/halo"
>
<fx:Script>
<![CDATA[
import mx.events.FlexEvent;
protected function lstImages_creationCompleteHandler(event : FlexEvent) : void
{
dpHttpService.send();
}
]]>
</fx:Script>
<fx:Declarations>
<mx:HTTPService
id="dpHttpService"
url="images.xml"
/>
</fx:Declarations>
<s:List
id="lstImages"
dataProvider="{dpHttpService.lastResult.images.image}"
width="100%"
itemRenderer="path.to.render.ImageRenderer"
skinClass="path.to.skins.ListSkin"
>
<s:layout>
<s:HorizontalLayout gap="2" />
</s:layout>
</s:List>
</s:Group>
そして、画像レンダラーでは、次のようなデータを参照します。
<mx:Image
id="imgRendered"
source="{data.source}"
/>
このソリューションの本当に便利な点は、http://
必要に応じて、別のサイトに存在する画像への完全な参照を配置できることです(crossdomain.xml
もちろん覚えています)。
実際、images.xmlファイルは別のサーバーに存在する可能性があります。