【问题标题】:Loaded .swf in Adobe AIR cannot find its media filesAdobe AIR 中加载的 .swf 找不到其媒体文件
【发布时间】:2012-05-08 22:18:52
【问题描述】:

我正在开发一个 Adob​​e AIR javascript 应用程序,它加载从 InDesign(交互式书籍)导出的 .swf 文件。该 .swf 有一个“MySWF_Resources”目录,其中包含一个示例 .flv 视频。

问题是,当我使用 SWFobject 将该 .swf 加载到我的 AIR 应用程序中时,它失去了加载其资产的能力 - 在 AIR 环境中运行时路径不正确。在浏览器中执行的同一个 .swf 文件会从“MySWF_Resources”目录正确加载视频。

是否可以以某种方式强制 .swf 应在其中查找文件的工作目录? AIR 以某种方式破坏了包含的 .swfs 的相对路径。

【问题讨论】:

  • 我认为 Stackoverflow 上的这个类似答案应该对您有所帮助 - [上一个问题][1] [1]:stackoverflow.com/questions/1489137/…
  • 我认为这不是沙盒的问题。 .swf 本身可以很好地从 app-storage:/ 加载。此外,当我尝试从所述 .swf 加载它们时,该错误似乎只影响 .flv 媒体文件。不同的 .swf 可以加载 .mp3 文件就好了。

标签: javascript flash air swfobject


【解决方案1】:

以下是如何通过 SWF 在空中应用程序中包含 FLV/电影文件。您需要使用 FLV 文件的绝对路径,因为 Flash 不知道 Air app:/ 结构。您可以执行以下操作:

  1. 包含 AIRAliases.js(位于 air sdk 包中)
  2. 包括 jPlayer (LINK)
  3. 为调用添加空中事件侦听器 (LINK)
  4. 将当前目录保存到 javascript 中的变量/对象
  5. 位置的反斜杠 (myVar.replace(/\\/g,"/"))
  6. 将 location + file.flv 传递给 jPlayer 对象

使用 jPlayer 可以节省许多步骤,但如果您想通过标准 SWF 来完成,则需要通过 javascript 创建嵌入/对象并传入 flashvars 以获取 FLV 文件的位置。然后让 flashvars 通过 ActionScript (LINK) 在 SWF 中设置内容源。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-03-13
    • 1970-01-01
    • 2015-08-14
    • 1970-01-01
    • 2012-04-25
    • 1970-01-01
    • 2020-11-15
    相关资源
    最近更新 更多