问题描述
|
在Flex中,如何在运行时将swf分配为图像源,而不是将其嵌入。
[Bindable] public var myImg:String;
<mx:Image id=\"intImg\" source=\"{myImg}\" width=\"96%\" height=\"96%\" />
在我的应用程序中,我从Web服务调用中动态获取图像URL,并将其分配给\“ myImg \”。
但是,直到我没有从Web服务调用获得响应之前,我想在上面的图像控件中显示一个加载程序swf。我分配了类似的东西:
myImg = \"assets/AS3.swf\";
并且swf的路径是正确的,但是没有显示。
更新:
我上面显示的代码在Flex 3应用程序中完美运行,而swf在Flex 4应用程序中未显示。是否因为Image control放弃了Flex 4对swf的支持?
请帮帮我。
谢谢
解决方法
使用
SWFLoader
加载SWF,图像是为图像制作的...
,您绝对确定您的路径正确吗?因为它应该工作。
请记住,您编写的路径(assets / AS3.swf)相对于应用程序swf文件的位置。因此,例如,如果您正在FlashBuilder / FlexBuilder中进行调试,则文件应位于
[yourprojectdirectory]/bin-debug/assets/AS3.swf
未嵌入的文件不会自动复制到bin-debug文件夹(或与此相关的bin-release文件夹)。因此,您必须手动进行。
您可以使用Web调试代理(例如Charles)来查看是否在您使用的路径中找到该文件。
,您是否在从Flex 3到Flex 4.5的迁移中意外地将mx:Image重构为s:Image?
对于Spark Image,可能是您需要在SWF中引用符号名称。
我发现这可行:
<s:Image source=\"@Embed(source=\'path.swf\',symbol=\'name\')\" ...
不过,这似乎是一种不好的做法-与mx:Image本身会加载SWF的方式不同,Spark Image用于位图数据。
,对于Flex 4,我认为仅删除了支持AS3(AVM2 *)的SWF。
尝试在AVM1中运行的AS1和AS2 *
* AVM(ActionScript虚拟机)