我正在使用Flex,我需要获取相对URL源属性并在加载之前将其转换为绝对URL。
我正在处理的具体案例涉及调整SoundEffect的加载方法。我需要确定是否从本地文件系统或通过网络查看源属性来加载文件,我发现这样做的最简单方法是生成绝对URL。
我在制作声音效果的绝对URL方面遇到了麻烦。这是我最初的想法,但没有奏效。
查找Sound Effect所针对的DisplayObject,并使用其loaderInfo属性。加载SoundEffect时,目标为null,因此不起作用。
在url或loaderInfo属性中查看FlexGlobals.topLevelApplication。但是,这些都没有设定。
查看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是从本地文件系统还是通过网络加载。查看绝对网址,可以很容易地查看前缀,例如file://
或http://
。
答案 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;
}