Apache flex 运行时未显示Flex ItemRenderer图像

Apache flex 运行时未显示Flex ItemRenderer图像,apache-flex,image,runtime,itemrenderer,Apache Flex,Image,Runtime,Itemrenderer,在datagrid中,我有一个ItemRenderer(扩展UIComponent),它根据数据值加载图像,例如: _img.source = "assets/images/flags/" + value[dglistData.dataField] + ".gif"; 当我运行我的应用程序时,图像(标志)出现在ItemRenderer中。当我将应用程序作为SWF文件构建并部署到BlazeDS中时,图像不会出现。相反,Internet explorer中出现了标准的“缺少图标”链接 据我所知

在datagrid中,我有一个ItemRenderer(扩展UIComponent),它根据数据值加载图像,例如:

 _img.source = "assets/images/flags/" + value[dglistData.dataField] + ".gif"; 
当我运行我的应用程序时,图像(标志)出现在ItemRenderer中。当我将应用程序作为SWF文件构建并部署到BlazeDS中时,图像不会出现。相反,Internet explorer中出现了标准的“缺少图标”链接

据我所知,我的ANT构建脚本包括上面的目录“assets/images/flags/”和SWF文件中的所有图像

这是一个相对路径问题吗?不确定,任何帮助都会被告知

谢谢
Mike

当您将路径指定为
源时,Flash Player正试图通过HTTP请求加载图像。因此,在SWF中嵌入图像没有效果

有两种可能的解决办法。将包含图像的文件夹部署到服务器,并使用相应的路径作为源文件,或者将所有图像嵌入SWF

第二个解决方案的简单示例。代码假定
值[dglistData.dataField]
对应于带有
[Embed]
元数据的一个变量

[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]]; 

哦,对不起,我复制了Michael的示例,忘了删除这部分。我已经编辑了我的答案。嗨,格哈德,谢谢你的回答。我确实喜欢使用[Embed]标记的第二个解决方案。我确实有很多图像要加载,总共大约有75个标志,有没有办法动态加载和缓存图像而不是键入每个[Embed]标记?这也将有助于当更多的图像被添加,我将不必改变我的任何代码。幸运的是,您可以在运行时加载图像(比如浏览器会像对待其他web资源一样缓存这些图像),也可以将图像嵌入SWF(在您的情况下,这意味着您必须键入75条[embed]语句)。你必须选择其中一个。。。如果在添加更多图像时不想更改代码,则应在运行时加载图像。