【问题标题】:Load remote swf files in flex在 flex 中加载远程 swf 文件
【发布时间】:2010-05-05 12:22:09
【问题描述】:

我的 flex 应用程序的 mxml 中有一个 SWFLoader。

<mx:SWFLoader id="swfPreview"
     width="100%" height="90%"  y="20" visible="false"/>

现在单击按钮,我在动作脚本中执行以下代码。

swfPreview.addEventListener(Event.COMPLETE,loadComplete);
swfPreview.scaleContent = true;
swfPreview.load(url);

其中“url”是互联网上存在的 swf 的 url(此域可以相同或不同,我在这两种情况下都会遇到问题)

现在,在loadComplete,我执行以下操作:

private function loadComplete(event:Event):void
{
   Alert.show("Load complete");
   swfPreview.removeEventListener(Event.COMPLETE,loadComplete);
   swfPreview.visible = true;
}

我收到警报弹出窗口(即调用了 loadComplete),但没有加载任何 swf,无法查看任何内容。可能是什么问题,我是否遗漏了什么或一些安全问题?我还尝试了图像控件来加载 swf。此外,swf 是转换为 swf 的 pdf 文件,所以这可能是 flash 和 flex 之间不同帧速率的问题吗? 任何帮助将不胜感激。

谢谢

【问题讨论】:

  • 您是否尝试过使用不同的 swf 以查看是否按预期工作?
  • 实际上,我尝试在我可以访问的域中放置一个 swf,并且能够加载该 swf。在另一种情况下,我还尝试查看 swf 的内容属性,并且在内容中看到了 AVM1movie 对象。但令人惊讶的是,当我调试并离开调试器一段时间后,我看到一条消息“安全域试图访问不兼容的上下文”,我认为这是某种安全问题,必须放置一个跨域文件。
  • 我为 SWF 加载器使用了 LoaderContext 并上传了 flex 应用程序,然后就能够加载 swf,万岁!!但我的喜悦并没有持续多久,我看到加载的 swf 正在闪烁(加载的 swf 中的一些图像在闪烁,并且看不到任何文字)。这与不同的帧速率有关吗??

标签: apache-flex flash swfloader


【解决方案1】:

我从未专门使用过 SWFLoader,但听起来您没有将加载的对象添加到显示中。如果 SWFLoader 的行为至少与 flash.display.Loader 类似,则您必须在 Event.COMPLETE 上获取对象并将其添加到显示中。比如:

loader = new Loader();
var req:URLRequest = new URLRequest("http://example.com/your.swf");
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete);
loader.load(req);

private function onComplete(e:Event):void {
    addChild(e.target.loader.content);
}

有关使用加载器的完整示例,您可以查看 Vimeo 播放器 API,该 API 将他们的视频播放器 SWF 从他们的网站加载到您的应用中:

http://www.vimeo.com/api/docs/moogaloop

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-22
    • 1970-01-01
    • 1970-01-01
    • 2010-09-12
    • 2010-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多