当前位置 :主页>知识堂>Flash实例教程>列表

关于flash动态加载路径的讨论

时间:2008-03-25 来源:http://youyee.org  作者:youyee   点击:
    核心提示:近日由于工作原因,需要把SWF文件放在一个子目录,而根目录内的index.html则把处于子目录的SWF文件嵌入并显示出来。

近日由于工作原因,需要把SWF文件放在一个子目录,而根目录内的index.html则把处于子目录的SWF文件嵌入并显示出来。很简单,只需要把movie这个参数做相应的修改便可。
但是接下来的问题确出现了,由于SWF文件是一个类似ViewPoint这样的程序,需要动态加载图片,文本,音乐,以及视频,在数据方面还需要调用AMFPHP方法,需要执行上传下载服务。结果许多涉及到网络请求的很多服务都无法使用,经过一个下午的仔细研究终于得出答案:

1、基于NetConnection的所有链接必须使用相对SWF文件的路径地址。
2、FLV播放由于也是基于NetConnection所以同上。
3、Upload服务虽然不是基于NetConnection上,但是也同上。
4、那么剩下的例如MP3,图片,URLLoader读取文本文档或者PHP脚本返回的数据,这些都是相对HTML页面的路径。

这样疑问就出来了,为什么在Flash里面的相对路径机制这么混乱呢?我一开始也是有点觉得奇怪。但是仔细一想,并测试了几个小程序之后终于发现这里面的小秘密了。

首先,常规的读取Flash Player会依靠我们的浏览器来请求和读取,他只是监控当中的数据进度。所以相对路径的计算则是交付给浏览器来完成,浏览器根据当前页面的URL来计算要请求的位置。
其次,由于安全机制FlashPlayer并不能完全访问浏览器里面的数据,我估计其中就包括当前的URL位置(这也是为什么Flash自身的包里面没有提供获取当前地址栏的URL的相关类),连Flex都是利用JavaScirpt来获取当前地址的。
既然Flash Player无法获取当前的URL地址,那么怎么来计算相对路径呢?唯一的方法就是通过嵌入Flash文件的时候浏览器传入给Flash Player容器的参数,这里面当然是只有SWF的原始地址是唯一有用的了,所以Flash Player只能通过这个救命稻草来或许有限的路径信息。
这样,事情就变得很明了了,NetConnection是基于Flash自家的技术,当然建立的连接也是由Flash Player自身来完成的了,所以我们的AMF数据是无法被浏览器缓存的,而Upload服务就更不用说了,在Flash Player 8 以前,Flash 压根就没有文件上传下载的API,之前的解决方法都是通过调用JavaScirpt来解决,而自从Flash 8 问世以后 Flash才能方便的监控上传和下载,但是这个监控必须是通过其自身的API来完成。而这一步和浏览器也完全没有任何关系。所以其地址的计算也是相对SWF本身的路径来完成。

上一篇:没有了     下一篇:手把手教您Flash小型日志信息输出器制作附录源码
版权申明:除部分特别声明不要转载,或者授权我站独家播发的文章外,大家可以自由转载我站点的原创文章,但原作者和来自我站的链接必须保留(非我站原创的,按照原来自一节,自行链接)。文章版权归我站和作者共有。
转载要求:转载之图片、文件,链接请不要盗链到本站,且不准打上各自站点的水印,亦不能抹去我站点水印。
特别注意:本站所提供的源文件,电子书,第三软件,如需使用,请与原作者联系,版权归原作者所有,文章若有侵犯作者版权,请与我们联系,我们将立即删除修改。
 评论内容:(最新评论共有 0) 位网友发表了评论不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名: 密码: 匿名? 马上注册
 
 
知识堂分类
 
本站所提供的所有素材版权归原作者所有,本站只供网友参考与交流,未经作者同意请勿用于商业用途
服务器带宽提供:零刻数据 本站CDN由海诺互动提供技术支持。 下载带宽支持:重庆万网
京ICP备08051668号