将相对URL转换为Actionscript / Flex中的绝对URL

时间:2010-01-05 01:23:47

标签: flex url actionscript relative-path absolute-path

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

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

我在制作声音效果的绝对URL方面遇到了麻烦。这是我最初的想法,但没有奏效。

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

  2. 在url或loaderInfo属性中查看FlexGlobals.topLevelApplication。但是,这些都没有设定。

  3. 查看FlexGlobals.topLevelApplication.systemManager.loaderInfo。这也没有确定。

  4. 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是从本地文件系统还是通过网络加载。查看绝对网址,可以很容易地查看前缀,例如file://http://

1 个答案:

答案 0 :(得分:0)

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

以下是来自相关者Adobe livedocs page的一些代码:

var arguments:Array;
var currentDir:File;
public function onInvokeEvent(invocation:InvokeEvent):void {
    arguments = invocation.arguments;
    currentDir = invocation.currentDirectory;
}