我有一个Flex项目,我在其中嵌入了一个包含图像查看器的Flash SWF。我嵌入的SWF文件由一个XML文件补充,该文件包含要显示的图像列表,以及包含图像的图像文件夹。
我遇到的问题是嵌入式SWF文件无法加载图片。我能够看到前进/后退导航按钮,但没有加载的图像。当我在Flex项目之外查看SWF文件时,它工作正常。这是因为Flex不允许SWF到达外部并访问其他项目资产吗?我怎么能绕过这个?
这是我嵌入SWF的代码:
<mx:Script>
<![CDATA[
import mx.controls.Image;
import mx.events.CloseEvent;
import mx.managers.PopUpManager;
[Embed(source = '../components/sampleReportViewer/photo_stack_gallery.swf')]
[Bindable] public var SWFClass:Class;
private function init():void {
//add the swf to the container
var img:Image = new Image();
img.source = MovieClip(new SWFClass());
contentBox.addChild(img);
PopUpManager.centerPopUp(this);
}
]]>
<mx:VBox id="contentBox"
width="600" height="450"/>
答案 0 :(得分:1)
我的猜测是你的工作路径不一样。从您的网址(../
)中的相对路径判断,您的项目结构看起来像这样:
|
index.html
|
+ swf
| |
| main.swf
|
+ components
|
+ xml
如果是这种情况,您的Flash播放器将假定index.html的父文件夹作为您当前的工作路径,如果您将HTML页面加载到浏览器中,并且您的所有../
引用都找不到正确的资源,而如果你开始直接双击SWF,一切都会正常工作。
答案 1 :(得分:1)
首先你应该通过加载器加载图像,
var loaderSmall:Loader = new Loader(); loaderSmall.load(新 的URLRequest(imgArr [0]。路径)); loaderSmall.contentLoaderInfo.addEventListener(使用ProgressEvent.PROGRESS,loadThumbImage); loaderSmall.contentLoaderInfo.addEventListener(Event.COMPLETE,hideThumbImageLoader);
在这里,
imgArr [0]。路径
是要加载的图像的路径,现在你可以做更多的事情,使用这种类型的设置,现在你可以检查图像是否正在加载
这是一个exmaple画廊,我开发的,它不是很完美,但我加载的图像是通过装载机, http://no-refresh.com/demo/PortfolioSlideshow2/
在你的问题中,你首先检查一下路径,不论那是否正确,可能是图像不正确,
正如@weltraumpirat写的那样,也要检查一下,
我知道它不会对你有所帮助,但是有很多方法,希望它对你有所帮助,tc
ANKUR