宜昌本地软件开发与弱电工程服务商
项目咨询 · 快速响应
您当前的位置: > 博客2 > AS2与AS3技术

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

2016-10-13 00:16:48 点击量:12 标签: 收藏本文

首先,说明我测试的系统地址和网络地址的情况:
某电脑一: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/”

ABOUT US
宜昌农人网络科技有限公司

我们是一家提供综合软件外包与弱电工程服务的技术公司。

业务涵盖定制软件、管理系统、网站、小程序、APP、系统集成、网络布线、监控安防、门禁、机房建设及长期技术维护。

公司地址:湖北省宜昌市伍家岗区东站二路6号三峡(宜昌)大数据产业园海洋馆二楼A203室