现在的位置: 首页 > 综合 > 正文

flex swf访问资源的路径问题

2013年09月17日 ⁄ 综合 ⁄ 共 1107字 ⁄ 字号 评论关闭

在做项目时,经常要将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的路径,

           然后就可以给资源加上绝对路径了。

抱歉!评论已关闭.