·您当前的位置:首页 > 技术教程 > AS2与AS3技术 >

[AS3]as3.0获取swf文件的路径问题的解决方案

时间:2014-02-08 15:20yangkd548
[AS3]as3.0获取swf文件的路径问题的解决方案,在AS项目中获取当前项目编译的SWF所在的服务器路径或本地路径

首先,说明我测试的系统地址和网络地址的情况:
某电脑一:file://E:\vcs\HelloWorld\bin-debug\player.swf
某电脑二:file://D:/vcs/HelloWorld/bin-debug/player.swf
由于两者的不同,下面程序在发布之后进行了修改。
但要明确的是无论什么系统开发,网络程序在运行时,获取的服务器地址都是
http://www.baidu.com/mp3/...形式的,即地址分隔符均为“/”

1、在AS项目中获取当前项目编译的SWF所在的服务器路径或本地路径

  1. package { 
  2.     import flash.display.Sprite; 
  3.  
  4.     public class HelloWorld extends Sprite 
  5.     { 
  6.         public static var currSwfUrl:String; 
  7.          
  8.         public function HelloWorld(){ 
  9.             //写网络相关的项目时,就可以通过这个自动选择调用的服务器端程序了 
  10.             var doMain:String = this.stage.loaderInfo.url; 
  11.             var doMaindoMainArray:Array = doMain.split("/"); 
  12.              
  13.             if (doMainArray[0] == "file:") { 
  14.                 //为处理本地系统返回的路径由“/”或“\”两种间隔组成的不同情况,而分别处理 
  15.                 if(doMainArray.length<=3){ 
  16.                     currSwfUrl = doMainArray[2]; 
  17.                     currSwfUrlcurrSwfUrl = currSwfUrl.substring(0,currSwfUrl.lastIndexOf(currSwfUrl.charAt(2))); 
  18.                 }else{ 
  19.                     currSwfUrl = doMain
  20.                     currSwfUrlcurrSwfUrl = currSwfUrl.substring(0,currSwfUrl.lastIndexOf("/")); 
  21.                 } 
  22.             }else{ 
  23.                 currSwfUrl = doMain
  24.                 currSwfUrlcurrSwfUrl = currSwfUrl.substring(0,currSwfUrl.lastIndexOf("/")); 
  25.             } 
  26.             currSwfUrlcurrSwfUrl = currSwfUrl + "/"; 
  27.              
  28.             trace("CuPlayer.com的项目路径: "+ HelloWorld.currSwfUrl); 
  29.         } 
  30.     } 

输出结果:“项目路径: E:\vcs\HelloWorld\bin-debug/”

2、在Flex Web项目中获取当前项目编译的SWF所在的服务器路径或本地路径

把下面的代码放在Flex的App类中即可使用

  1. <?xml version="1.0" encoding="utf-8"?> 
  2. <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" initialize="initApp()"> 
  3.     <mx:Script> 
  4.         <![CDATA[ 
  5.             public static var currSwfUrl:String; 
  6.              
  7.             private function initApp():void{ 
  8.                 //写网络相关的项目时,就可以通过这个自动选择调用的服务器端程序了 
  9.                 var doMain:String = this.parent.stage.loaderInfo.url;//注意此行和AS的写法略有不同 
  10.                 var doMainArray:Array = doMain.split("/"); 
  11.  
  12.                 if (doMainArray[0] == "file:") { 
  13.                     if(doMainArray.length<=3){ 
  14.                     //为处理本地系统返回的路径由“/”或“\”两种间隔组成的不同情况,而分别处理 
  15.                     currSwfUrl = doMainArray[2]; 
  16.                     currSwfUrl = currSwfUrl.substring(0,currSwfUrl.lastIndexOf(currSwfUrl.charAt(2))); 
  17.                 }else{ 
  18.                     currSwfUrl = doMain; 
  19.                     currSwfUrl = currSwfUrl.substring(0,currSwfUrl.lastIndexOf("/")); 
  20.                 } 
  21.             }else{ 
  22.                     currSwfUrl = doMain; 
  23.                     currSwfUrl = currSwfUrl.substring(0,currSwfUrl.lastIndexOf("/")); 
  24.                 } 
  25.                 currSwfUrl += "/"; 
  26.                  
  27.                 trace("CuPlayer.com提示项目路径: "+ HelloFlex.currSwfUrl); 
  28.             } 
  29.         ]]> 
  30.     </mx:Script> 
  31. </mx:Application> 

输出结果:“项目路径: E:\vcs\HelloFlex\bin-debug/”

热门文章推荐

请稍候...

保利威视云平台-轻松实现点播直播视频应用

酷播云数据统计分析跨平台播放器