loadMovie问题全解
2008-04-02 11:01:41来源:互联网 阅读 ()
使用loadMovie能够动态的载入外部文档,从而减少主文档的体积,有利于网上下载,连同对各项子文档的修改,更换。假如没有做过FLASH网页,能够看看这个FLASH网页的基本组成情况,见图2-2-1
只需要把图中的主文档和子文档用比如ftp工具传到自己的空间上,就能够轻松的实现只下载主文档,假如需要浏览的子文档就能够单独下载,能够想想,假如您的整个FLASH网页不分主次,全部统一个FLASH,做成了几M甚至10多M,那么有谁愿意等着看您的网页呢?除非您自己。
于是使用loadMovie就显得很重要了。现在就让我们从基础开头,然后去分析使用loadMovie所涉及到的具体问题吧。使用loadMovie有两种基本的方法:(一)将外部swf文档载入到某一层上。(二)将外部swf文档载入到时间轴的某个影片剪辑中。对这两种方法的使用,用图表示更加直观些。见图2-2-2
第二种方法又能够这样写:_root.mc.loadMovie(“a1.swf”);假如a1的后缀名为 jpg那么载入的是外部图片。载入图片和载入swf文档的道理是相同的,就不赘述。说到这里还比较空洞,做一个实例来看看。
一、新建一个文档夹,任意取一个名字 比如:mywangye
二、做一个Flash发布成swf文档并且取名字为a1,保存在mywangye这个目录中,这个a1就是我们要载入的子文档。
三、然后做主文档,由于我们是做最简单的,所以什么也不画,就在这个主文档的第一桢,写 loadMovie(“a1.swf”,1) 同样将这个文档保存在mywangye目录中,取个名字叫index
四、测试效果,源文档见本文后的打包中的01文档夹
然后用上面图中的第2种语法,继续做一个,注意了,第二种方法需要在舞台上放一个mc并且取一个实例名,或创建一个空的MC。做了上面的小实验后,我们能够总结些什么结论呢?假如仅仅是得到能够加载外部文档这么一条结论的话,那么就太肤浅了。能够让我们想到:被加入进来的外部文档的坐标问题;长宽问题;外部文档比较大,造成的加载延时问题;如何访问被加载进来的swf的问题;不要加载了,卸载问题…..这些问题我们假如不研究下,真正在做网页的时候,会碰到很多麻烦的。
由上面的最简单的加载我们能够得到这样的结论:(1)假如采用加载到层上的,加载进来后默认注册点是舞台的左上角;假如采用加载到mc里面的,那么默认注册点是MC的注册点。假如MC的注册点是左上角,那么被加载进来的SWF文档就和MC的左上角对准;假如MC的注册点是中央,那么加载进来的SWF就把左上角和MC的中央对齐。(2)被加载进来的MC保留原来的长宽比例。
问题一:如何控制被加载进来的SWF文档的坐标和长宽比例大小?
控制被加载进来的SWF文档控制其长宽要采用onEnterFrame,比如:
on (press) {
loadMovie("a2.swf", "_root.mymc");
onEnterFrame = function () {
_root.mymc._x = 0;
_root.mymc._y = 0;
_root.mymc._width = 330;
_root.mymc._height = 240;
};
}
为什么用 onEnterFrame呢?因为被加载进来的的过程中,有点延时,假如没有onEnterFrame语句,那么语句读取一次就不读取了,然而读取了这一次之后,还没有加载进来,所以就会导致坐标大小配置无效。同样,假如加载到层上,也是这样的。
on (press) {
loadMovie("a1.swf", 1);
onEnterFrame = function () {
_level1._x = 17;
_level1._y = 30;
_level1._width = 330;
_level1._height = 240;
};
}
请注意这两种方法,第一种,把外部的a2加载到mymc中,加在进来后,a2就自动的替换了mymc,我们直接配置mymc的属性就配置了被加载进来的swf的属性。第二种方法,_level是对于加载到时间轴上的电影的引用,加载到第2层就是_level2;加载到第3层就是_level3。
问题之二:如何实现点击按钮加载一个外部SWF文档,并且要显示加载的下载进度呢?
有两个方法来实现这个效果,其一:把加载londing写在主文档中,其二,被加载的子SWF文档有自己的londing。现在分别给予说明。
其一:在主文档中写londing
外部子swf文档名为a1,主文档中有一个动态文本框名为loadText,一个按钮名为bbt,现在把loadMovie和londing写在桢上。
_root.bbt.onPress = function() {
_root.createEmptyMovieClip("mc", 10);
mc.loadMovie("a1.swf");
mc._visible = false;
_root.bbt.onEnterFrame = function() {
var l = mc.getBytesLoaded();
var t = mc.getBytesTotal();
var getPercent = l/t;
loadText = Math.round(getPercent*100) "%";
if (l>0 && l>=t) {
mc._visible = true;
delete this.onEnterFrame;
}
mc._x = 10;
mc._y = 10;
mc._width =440;
mc._height = 320;
};
};
其二:子文档中有自己的londing
这个写法和前面说的londing相同,只是注意一个问题就是注意路径的问题,比如这样写:
第一祯
loaded = getBytesLoaded();
total = getBytesTotal();
lts = Math.round((loaded/total)*100);
wenben = lts "%";
第二祯
if (lts == 100) {
gotoAndStop(3);
} else {
gotoAndPlay(1);
}
和前面的londing中介绍的比较,看出不同之处没有呢?仅仅是去掉了_root因为被加载后,外部SWF文档就相当于主文档中的一个MC 有了_root 就是指向主文档的_root 了,当然会显示错误。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇: 用MovieClipLoader连续加载外部图片并进行控制
下一篇: 给Flash课件加把“锁”
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash