我最初的目标是在 SWF 外部有一个 XML 文件,我的客户可以自己维护,因此他们可以控制显示的图像。
我发布的第一个答案并不完全是我所追求的解决方案: usingfx:XML
意味着 XML 文件的内容实际上已编译为 SWF,因此编译后不可更改。
所以我实施了詹姆斯的解决方案。
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 文件可以存在于另一台服务器上。