flex swf访问资源的路径问题
在做项目时,经常要将flex写的swf文件嵌入到jsp/html页面中,实践过程中比较头痛的就是路径问题了。
经常会遇到路径配置不对,而导致主swf文件无法加载资源的问题。下面笔者谈谈自己的解决方法:
思路:在swf中我们通常写的是资源的相对路径,但是将swf嵌入到页面后由于页面跳转等原因导致加载
资源时路径不正确,这时候可以在主swf初始化时获取主swf的绝对路径(可以是网络路径)然后将主
swf要访问的资源前加上绝对路径,这时候访问的就是资源的绝对路径了,就不会出现上述问题了。
具体方法:
1、在主应用(mx:Application)的initialize事件(init)中,获取该应用的路径,代码如下:
public var currSwfUrl:String; //在Application中声明的当前swf的路径
private function init():void
{
var swfPath:String = this.parent.stage.loaderInfo.url;//获取当前swf的路径
var swfPathArray:Array = swfPath.split("/");
if (swfPathArray[0] == "file:") { //本地路径
if(swfPathArray.length<=3){
currSwfUrl = swfPathArray[2];
currSwfUrl = currSwfUrl.substring(0,currSwfUrl.lastIndexOf(currSwfUrl.charAt(2)));
}
else{
currSwfUrl = swfPath;
currSwfUrl = currSwfUrl.substring(0,currSwfUrl.lastIndexOf("/"));
}
}else{ //网络路径
currSwfUrl = swfPath;
currSwfUrl = currSwfUrl.substring(0,currSwfUrl.lastIndexOf("/"));
}
currSwfUrl += "/";
}
2、在其他地方可以通过Application.application.currSwfUrl获取到主swf的路径,
然后就可以给资源加上绝对路径了。