1

我正在使用 Flex,我需要在加载之前获取相对 URL 源属性并将其转换为绝对 URL。

我正在处理的具体案例涉及调整 SoundEffect 的加载方法。我需要通过查看源属性来确定文件是从本地文件系统加载还是通过网络加载,而我发现的最简单的方法是生成绝对 URL。

我在生成音效的绝对 URL 时遇到了麻烦。这是我最初的想法,但没有奏效。

  1. 查找 Sound Effect 所针对的 DisplayObject,并使用其 loaderInfo 属性。SoundEffect 加载时目标为空,因此这不起作用。

  2. 在 url 或 loaderInfo 属性中查看 FlexGlobals.topLevelApplication。然而,这些都没有设置。

  3. 查看 FlexGlobals.topLevelApplication.systemManager.loaderInfo。这也没有设置。

SoundEffect.as 代码基本上可以归结为

var url:String = "mySound.mp3";
/*>> I'd like to convert the URL to absolute form here and tweak it as necessary <<*/
var req:URLRequest = new URLRequest(url);
var loader:Loader = new Loader();
loader.load(req);

有谁知道如何做到这一点?任何帮助澄清如何为 ActionScript 中的 URLRequests 解析相对 url 的规则也将不胜感激。

edit 我也会非常满意某种方式来判断 url 是从本地文件系统加载还是通过网络加载。查看绝对 URL 很容易查看前缀,例如file://or http://

4

1 回答 1

0

我相信您只需将应用程序调用事件的 currentDirectory 属性放在 URL 的相对部分前面即可获得绝对 URL。请注意,这仍然可能包含 ./ 和 ../ 之类的内容。

以下是相关Adob​​e livedocs 页面中的一些代码:

var arguments:Array;
var currentDir:File;
public function onInvokeEvent(invocation:InvokeEvent):void {
    arguments = invocation.arguments;
    currentDir = invocation.currentDirectory;
}
于 2010-01-05T02:58:05.653 回答