Flex:需要嵌入式SWF才能与项目资产进行交互

时间:2011-01-13 19:01:47

标签: flex actionscript-3 flash loader swfloader

我有一个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"/>

2 个答案:

答案 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