之前都分享的是createjs的技术,今天就来分享一篇flash的吧,毕竟flash也是我的专长。
做过flash项目的人都知道,你在flash里加载文件写相对目录,但是当你的flash被网页加载的时候,目录就会变成相对于网页的,这个问题直接导致了,要不就是flash要与网页同一目录,不方便集中管理;要不就是flash在放到网页之前就要变成网页上的加载目录,这样的话本地调试就非常麻烦。
不过其实用工具类就可以解决了,这里分享下工具类的代码。
先获取主flash的目录 catalogue = getCatalogue(stage.loaderInfo.url) 保存起来
/**
* 获取根目录地址
* @param source 地址
* @return 目录地址
*
*/
public static function getCatalogue(source:String):String
{
if(!source) return source;
var str:String = source.split("?")[0];
var index:int = str.lastIndexOf("\\");
if(index == -1)
{
index = str.lastIndexOf("/");
}
var contents:String = str.substring(0,index);
return contents;
}
然后每次加载文件的时候目录上都加一个字符来代替这个目录,我是用...来代替
/**
* 地址转换 加上“.../”后会对地址加上目录
* @param source 地址
* @return 转化后的地址
*
*/
public static function sourceTransition(source:String):String
{
return source.replace("...",catalogue);
}
然后我举例加载一个文件
loader.load(new URLRequest(sourceTransition(".../xx.swf")));
这样子,flash的加载目录,永远是以主flash为准,不会被网页加载而改变。