如何在一个动画作品中加载一个swf文件?
解决思路
我们利用【浏览器/网络】里面的loadmovie可以把相对地址或者绝对地址的awf文件,jpeg文件方便的加载到一部flash动画中。并且我们还可以随时卸载它。下面我们就来看看这个语句的语法以及用法。
具体步骤
1、??按照前两部分的知识制作两个flash动画,分别命名为flash1和flash2。
2、??登陆互联网,把flash2的swf文件发布到网站上,并获得一个作品的绝对地址。例如flash2.swf的绝对地址是:
?http://218.91.255.11/UpLoadFile/2003112316165898169.swf
3、??打开flash1文档,新建一层,在第1帧新建一个按钮,命名为loadmovie?flash2。如图3.2.19所示。
?
图3.2.19??新建按钮loadmovie
4、??选中此按钮,打开as面板,给按钮增加触发事件on(release)。
5、??双击【全局函数】|【浏览器/网络】中的loadmovie命令,此命令就会自动添加到右侧的输入框中。如图3.2.20所示。
图3.2.20????loadmovie命令
6、??下面我们了解一下loadMovie的各种参数的设置规律。【RUL】所欲加载的文件的绝对地址或者相对地址。我们在这里填写的是flash2.swf的绝对路径http://218.91.255.11/UpLoadFile/2003112316165898169.swf
7、??【目标】这里面有两项,一个是级别,另一个是目标。级别是加载的影片要放置到哪个级别层,并分配级别层编号。默认的级别层是0。分配个级别层的编号决定了相对其他级别的位置。如级别层为1,则加载的影片在原影片的上方。目标就是加载的影片赋予到一个影片剪辑中,这个影片剪辑的属性变化也决定了加载后的影片的变化。例如位置,大小,等等。在此例中,我们选择“级别1”。
8、??【方法】指定发送变量所使用的?HTTP?方法。一共三项选择,“不发送”,假如没有变量发送则学此项。“以GET方式发送”,用来发送少量变量。“以POST方式发送”用来发送长的变量字符串。在此例中我们没有变量发送,所以选择“不发送”。如图3.2.21所示。
9、??保存,登陆互联网进行测试。当我们播放flash1.swf文件时,单机“loadmovie”按钮,就会看到flash2.swf文件被我们加载到flash1.swf文档中了。如图3.2.22所示。
图3.2.22???最后效果
10、请参看源文件flash1,flash2。
注??意?——填写欲加载的swf文件的绝对地址的时候,朋友们经常把“http://”忽略了,我们要填入他的完整的地址。
提??示?——利用loadmovie我们还可以加载jpeg图片。
??技??巧?——获得swf文件的绝对地址的方法,选择论坛帖子中的【浏览文件】鼠标右键中的属性,就可以看到它的URL。
试一试?——上例中我们把FLASH2.SWF加载在FLASH1.SWF得上一层中,那么我们试一试FLASH2.SWF完全替换FALSH1.SWF。
非凡提示
loadmovie命令可以答应我们把一部完整的动画分成几个部分,分别放置在网络空间中,播放一部分以后加载一部分,实现动态的加载,这样大大缓解了文件体积过大而产生的下载等待缓慢的问题。也可以把一部动画中的各个元素分别放置,例如动画与音乐分开放置。
非凡说明
在论坛上,朋友们对loadmovie的问题很多。原因是loadmovie的用途非常广泛。我们可以利用它的特性来制作内容庞大的电子相册,观看我一个照片以后,卸载前一个,同时加载后一个,这样始终保持文件的体积精悍。
相关问题◎如何利用loadmovie在本地硬盘制作电子相册?
使用loadmovie语句来制作电子相册是一个非常简单有效果的办法。因为,假如我们利用传统的办法把照片导入到flash中去,文件的体积必然庞大。最重要的是照片的数量是不断增加的,假如我们想把新照片增加到电子相册中,就必然要在flash中修改,是非常麻烦的。我们利用loadmovie就可以轻松的解决这个问题。
现在我们就利用目前把握的知识,最简单的办法来实现电子相册的效果。
首先,我们新建一个flash文档,并整理四张jpeg图片分别命名为pic1,lic2……,把他们放到同一目录下。
第二,在图层1的第2帧插入要害帧,打开as面板,填入as:
??????stop();
??????loadMovieNum(“pic1.jpg”,1);
?????以此类推,分别在第3帧,第4帧,第5帧进行如上设置。
第三,新建一个图层,在第1帧我们制作一个按钮,并给第1帧添加as;stop();使其开始的时候停止播放。
第四,选择按钮,在按钮上添加as??;on(release){?????//当按钮点击时,执行下面的语句。?
????????????????????????????????????nextFrame();??????//播放下一帧
}
我们来测试一下效果吧?当单击按钮的时候,图片被加载进来了。这是一个比较简单的例子,朋友们可以通过编写按钮的控制as来进行加载。也可以在加载的同时设置图片的各种属性,例如透明度,位置等等。
本例只是向朋友们简单介绍一下loadmovie的功能。参看源文件pic。当我们向电子相册里面增加照片的时候,只要把?as设置一些就ok了,非常方便。
注??意??——在图层1的第2帧的as中,为什么没有写成loadmovieNum(“pic1.jpg”,0);呢?原因在于,加载进来的jpg会替代同级别的内容。假如这样设置的话,就把我们设置的按钮替换掉了。我们利用这个特性,在加载第3帧的时候没有卸载第2帧的图片。
提??示??——1、loadMovie的图片个是必须是jpeg格式。
???????????????????? 2、loadMovie进来的swf和jpg都会以场景的左上角对齐。
3、使用绝对地址的方法与上例相同。
◎如何指定导入外部swf文件的位置?
这个问题是关于loadmovie语句中问得最多的问题。在上一个问题中,我们已经向大家介绍了导入进来的swf和jpg会默认与场景的左上角对齐。但是有的时候我们需要认为确定导入的位置,那么我们就通过建立一个空的影片剪辑来实现。
解决思路是我们在场景中可以有效果的控制影片剪辑的位置,大小等属性,那么我们把swf或者jpg导入到这个影片剪辑中,通过制定这个影片剪辑的属性来完成修改导入文件的属性。
首先我们预备一个flash1文档和flash2文档,我们要把flash2导入到flash1中。
我们下把flash2发布成名称为2的swf文件。
然后在flash1中我们新建一个影片剪辑,命名为“mymc”。在这个影片剪辑中我们什么也不做,直接保存。这就是所说的空的影片剪辑。
把“mymc”拖放到场景中,在下面的属性面板中,填入这个影片剪辑的分身名“mymc”。如图3.2.23所示。?
???
图3.2.23???设置影片剪辑的分身名
新建一层,在第1帧填加as:stop();是动画在第1帧就停止播放。然后在第1帧种绘制一个按钮。选中按钮,打开as面板,填写as:
on(release){??????????????????????//当按钮单击时执行下面的动作。
loadMovieNum(“2.swf”,?mymc);?????//加载2.swf到目标影片剪辑mymc
setProperty(“_root.mymc”,_x,150);????????//设置影片剪辑mymc的x轴位置为150。
setProperty(“_root.mymc”,_y,50);?????????//设置影片剪辑mymc的y轴位置为50。
}????????
?好了,我们保存发布。单击按钮以后,2.swf被加载到1.swf影片中了。我们可以通过改变影片剪辑的坐标位置来改变导入影片的位置,大小等属性。
注??意??——1,空的影片剪辑mymc必须要拖放到场景中。
????????????????2,必须要给影片剪辑设置分身名,不然as无法判定要控制谁?
提??示??——1,上例的设置1.swf文件和2。Swf文件必须在同一目录下。
????????????????2,load进来的swf文件的背景,帧频等,会与主动画保持一致。
◎如何卸载已经加载影片中的swf?
在【浏览器/网络】里面有一条语句unloadMovie,是专门用来卸载loadMovie进来的swf和jpg的。他的参数比较好理解,因为我们在上面学习了loadMovie,unloadMovie是与其相反的。
【目标】中帖子需要卸载的swf的名称。例如,你把1.swf文件loadMovie名字叫2.swf,想要卸载它,那么就在目标上填入2.swf。与loadMovie的用法相同,只不过作用是相反的。
UnloadMovie可以加在按钮上,也可以放置在帧中。
◎可以精确控制load进来的swf文件的播放时间吗?
这位朋友的意思是,加载进来的swf影片不马上播放,而是指定时间播放。例如:想在主动画的第100帧播放外部动画1.swf,那么在100帧填加loadmovie,由于网络速度,电脑配置等原因,而无法在100帧的时候播放这个1.swf动画。有办法解决吗?从Flash的角度来讲,这是办不到的。正如上面所说的,加载命令是可以实现的,但是由于客观因素的影响,我们无法控制播放时间。