当前位置: 首页 > 图文教程 > Flash动画 > ActionScript > 多层级加载相对路径遇到的问题解决方法

ActionScript
Flash AS实例:制作切换菜单动画
Flash AS3实例教程:简单的转动的星星
Flash AS3实例教程:制作旋转的菜单动画
项目中使用发布swc时遇到两个问题
Flash AS3教程:随图片大小而动态改变的图框
Flash AS3教程:创建好看的遮罩动画效果
Flash AS3.0教程:制作老鹰飞动实例
Flash as入门(6):文本与字符串
Flash as入门(8):加载和卸载swf文件
Flash as入门(17):Math类三角函数
Flash AS3实例教程:连锁反应的粒子动画
AS3实例教程:结合基本的动画和AS3绘图API
学习AS3知识:常用的8个AS3小技巧
Flash AS3实例教程:漂亮的水纹动画
Flash AS3实现动画中音乐音量逐渐关闭
AS 3.0的TransitionManager类制作动画
AS3实例教程:制作数码下落的动画特效
AS3面试题:复杂算法的改进
AS3.0实例:鼠标感应发光的文字效果
Flex4教程:添加事件的3种方法

ActionScript 中的 多层级加载相对路径遇到的问题解决方法


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-01   浏览: 187 ::
收藏到网摘: n/a

今天刚好在做多层级加载时发现了这个问题.就把解决方法贴出来了
问题描术:
路径结构是:根级:A.swf  data(文件夹)     data文件夹中有 B.swf   c.swf
在B的代码中有加载C.swf 单独运行B时正常。  用A加载B的时候,问题就出现B不会加载c.swf了。
得把c.swf移到和A.swf同级别。

问题原因:
所有加载的swf都是以最外层swf所在目录为根目录
被网页加载的swf都是以网页所在目录为根目录

解决方法:
function 计算文件目录() {
    var 目录索引 = _url.lastIndexOf("/");
    var 目录 = _url.substring(0, 目录索引);
    var 文件名 = _url.substring(目录索引+1);
    return [目录, 文件名];
}
trace(_url)
trace(计算文件目录())

//*****重点. 以上函数并把目录和文件名分离了. 所以返回值的[0]是目录 [1]是文件名.这样用起来就更方便了

利用上面的函数,先分析得到主加载器的绝对目录.  这时候不论下级载体 或下下级载体. 再调用一次该函数
得到下下级载体的绝对目录.

这样就能得到2个绝对地址  然后用字符串分析方法(IndexOf) 找出相同的部分.去掉, 剩下的就是需要的相对路径了. 这样在加载时把这个路径追加上.就能正常的加载N级关系的文件了.

本教程为本人原创,只供学习

//再把对比方法也补充上吧. 比较简单.
//========计算自己的相对路径=========
var 目录索引=文件目录[0].indexOf(_root.文件目录[0])
var 相对路径=文件目录[0].substring(目录索引+_root.文件目录[0].length+1)
trace("相对路径="+相对路径)


//=====trace环境===解析成功.
主文件目录=file:///F|/制作/A
子文件目录=file:///F|/制作/A/data
相对路径=data