Flash可以通過幀、按扭、影片剪輯來調用外部文件。調用的外部文件包括:外部文本文件、外部程序文件、外部*.swf文件、外部圖片文件、外部音樂文件、外部腳本文件 .現總結如下:
【loadMovieNum()函數】
[用法]:loadMovieNum("url",level [, variables])
[功能]: 函數;在播放原來加載的 SWF 文件的同時將 SWF 文件或 JPEG 文件加載到 Flash Player 中的某個級別。
[參數]:首先我們可以看到該函數有3個參數:url、target、variables。其中,最后一個參數 variables 是一個可選參數。
1.參數url:要加載的 SWF 文件或 JPEG 文件的絕對或相對 URL(路徑)。
該函數的此參數和上面loadMovie中的此參數用法完全一致,這里不再作解釋。
2.參數level:一個整數,指定 SWF 文件將加載到Flash Player中的哪個級別。加載的時候,可以這樣來寫:
loadMovieNum("01.swf", 1);
loadMovieNum("02.swf", 2);
loadMovieNum("03.swf", 3);
【loadMovieNum加載后的控制】
可以這樣使用:
_level1._x=10 ;
_level2.aa._alpha=50 ;
_level3.aa.bb._width=110;
_level4.mysound.stop();// 加載到級別為4的對象MC:mysound停止(播放音樂)
需要注意的的是,每一個級別只能同時存在一個 SWF 或 JPEG 文件。如果兩個 SWF 或 JPEG 文件的級別相同,那么后者將替換掉前者。級別不同的_level,級別大的將覆蓋掉級別小的,即:數字大的將處于數字小的之上(如上例:03.swf處在02.swf和01.swf上方,02.swf處在01.swf上方) 。
注意:如果將 SWF 文件加載到級別 0,則 Flash Player 中的每個級別均被卸載,并且級別 0 將替換為該新文件。處于級別 0 的 SWF 文件為所有其它加載的 SWF 文件設置幀頻、背景色和幀大小。如:
loadMovieNum("00.swf", 0); //以下均不顯示,這樣只有一個00.swf
loadMovieNum("01.swf", 1);
loadMovieNum("02.swf", 2);
loadMovieNum("03.swf", 3);
3.參數variables:可選參數,指定發送變量所使用的 HTTP 方法。該參數必須是字符串 GET 或 POST。如果沒有要發送的變量,則省略此參數。GET 方法將變量追加到 URL 的末尾,它用于發送少量的變量。POST 方法在單獨的 HTTP 標頭中發送變量,它用于發送大量的變量。
【loadMovieNum()的卸載】
使用 unloadMovieNum() 可刪除用 loadMovieNum() 加載的 SWF 文件或圖像。
用法: unloadMovieNum(level)
參數: level 所加載影片的級別 (_levelN)。
如:on(release){
unloadMovieNum (1200);//如下:unloadMovieNum (_level1200);不能卸載
loadMovieNum ("sje.swf",1200)
}
【loadMovieNum()的定位】
從前面我們已經知道了,函數loadMovieNum是將 SWF 或 JPEG 文件加載到_level(級別)的。并且是用_level1._x、_level2._x、_level1.aa._x之類的來定位的。比如我們要將02.swf加載到主場景坐標系的(50,100)中,代碼如下:
loadMovieNum ( "02.swf" , 1 ); //極有可能不能如愿定位
_level1. _x = 50 ;
_level1. _y = 100 ;
但是在測試的時候大家會發現加載進來的02.swf并沒有如我們預期的那樣出現在主場景坐標系的(50,100)位置,這是為什么呢?
原來,在沒有使用loadMovieNum以前,所有的圖形、MC等等都是處于_level0里的,我們通常使用的_root其實就是_level0。你可以作個測試:trace(_root==_level0),你會發現返回值是“true”。
那么,我們用loadMovieNum加載 SWF 或 JPEG 文件的時候,程序就要對你指定的_level進行創建,隨后再緊接著載入 SWF 或 JPEG 文件。如果像剛才代碼中寫的那樣,不判斷_level是否存在而調用其屬性,勢必無功而反。
解決的方法也很簡單,就是用一個循環來判斷指定的_level是否存在。一旦_level產生,那么它的種種屬性自然可以調用了。代碼如下:
loadMovieNum ( "02.swf" , 1 ); //如愿定位
onEnterFrame = function () {
if ( _level1 ) {
with ( _level1 ) {
_x = 50 ;
_y = 100 ;
}
delete onEnterFrame ;
}
};
或者:(上面的較好些)
loadMovieNum ( "02.swf" , 1 );
function go () {
if ( _level1 ) {
with ( _level1 ) {
_x = 50 ;
_y = 100 ;
}
clearInterval ( fps ); //清除對 setInterval() 的調用
}
}
fps = setInterval ( go,100 );//每隔一定的時間,就調用函數、方法或對象
再或者大家可以使用Macromedia Flash MX 2004中的MovieClipLoader類來判斷加載狀態。
【注意】深度depth值越大,其加載的內容越往后,即越在下層,處于下方,被遮蓋;這與級別標識符_levelN 相反,在_levelN 中 N 值越大,其加載的內容越往前,即越在上層,處于上方。
【loadMovieNum()保護你的作品――使用不同的擴展名】
但要強掉的一點的是:加載影片的擴展名不一定要以 .swf 命名!雖然加載的影片也在IE的臨時文件夾中,但已是自定義的文件格式了,這樣可以起到保護作用!
例如:
loadMovieNum("feng.exe",0);//加載feng.swf 將擴展名改為---> feng.exe加載
/*
loadMovieNum("feng.txt",0); //加載feng.swf 將擴展名改為---> feng.txt 加載
loadMovieNum("feng.doc",0); //加載feng.swf 將擴展名改為---> feng.doc 加載
loadMovieNum("feng.abcde",0); //加載feng.swf將擴展名改為 ---> feng.abcde 加載
loadMovieNum("feng",0); //加載feng.swf 將擴展名刪除---> feng 加載
*/
另一個!
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
一.調用外部文本文件:(文本文件開頭要以flash中的動態文本框的變量名開頭,如
msg=".........."這樣的形式,要和編輯的Flash文件放在同一目錄下)
1.用工具箱中的文本工具,選擇動態文本,給動態文本一個變量名,如:msg,在編輯區拖出一個文本框
2.制作兩個按扭(一個調用,一個清除)拖放到場景中。
3.調用按扭上添加AS:
on(release){//松開鼠標后執行下面的代碼;
loadVariables("msg.txt",msg);//調用和你編輯的Flash處于同一目錄下的msg.txt文本文件到動態文本msg中;
System.useCodepage=true;//使外部文件的中文字符能夠正確顯示;
}
4.清除按扭上的AS:
on(release){//松開鼠標后清楚動態文本框中的內容;
msg="";
}
5.Ctrl+Enter測試.
當然代碼也可以寫在幀上:(調用按扭的實例名是bt1,清除按扭的實例名是bt2)
在第一幀上加如下代碼:
stop();
_root.bt1.onRelease=function(){
loadVariables("msg.txt",msg);
System.useCodepage=true;
}
_root.bt2.onRelease=function(){
_root.msg="";
}
Ctrl+Enter測試.
調用的外部文本文件能夠滾動:
1.用工具箱中的文本工具,選擇動態文本,給動態文本一個變量名,如:msg,在編輯區拖出一個文本框
2.新建一層,制作兩個按扭(一個調用,一個清除)拖放到此層中
3.新建一層,在動態文本框的右側用矩形工具畫一個豎條,高度和動態文本一樣;再制作一個向上的方向"箭頭"按F8轉為按扭元件;復制一個"箭頭"按扭,垂直鏡象,使這兩個按扭和豎條的兩端對齊.
4.調用按扭上的AS:
on(release){//松開鼠標后執行下面的代碼;
loadVariables("msg1.txt",msg);//調用msg1.txt文本文件到動態文本框msg中;
System.useCodepage=true;//使外部文件的中文字符能夠正確顯示;
}
清除按扭上的AS:
on(release){
_root.msg="";//清除動態文本框中的內容;
}
向上的按扭上的AS:
on(press){//在按扭的感應區上每按一次鼠標執行下面的代碼;
_root.msg.scroll=_root.msg.scroll-1;//文本向下滾動一行;
}
向下的按扭上的AS:
on(press){//在按扭的感應區上每按一次鼠標執行下面的代碼;
_root.msg.scroll=_root.msg.scroll+1;//文本向上滾動一行;
}
Ctrl+Enter測試.
當然代碼也可以寫在幀上:(調用按扭的實例名是bt1,清除按扭的實例名是bt2,向上按扭的實例名是:up,向下按扭上的實例名是down)
在第一幀上加如下代碼:
_root.bt1.onRelease=function(){//松開鼠標后執行下面的代碼;
loadVariables("msg1.txt",msg);//調用msg1.txt文本文件到動態文本框msg中;
System.useCodepage=true;//使外部文件的中文字符能夠正確顯示;
}
_root.bt2.onRelease=function(){//松開鼠標后執行
_root.msg="";//清除動態文本框中的內容;
}
_root.up.onPress=function(){//在向上按扭上每按一次鼠標執行下面的代碼;
_root.msg.scroll=_root.msg.scroll-1;//文本向下滾動一行;
}
_root.down.onPress=function(){//在向下按扭上每按一次鼠標執行下面的代碼;
_root.msg.scroll=_root.msg.scroll+1;//文本向上滾動一行;
}
Ctrl+Enter測試.
二.調用外部*.swf文件(加載到影片剪輯中):
外部*.swf文件要和編輯的Flash文件放在同一目錄下
1.新建立一個空的影片剪輯mymc,把它放在場景中,實例名是:mymc.
2.新建一層,制作兩個按扭(一個調用,一個清除)拖放到此層中
3.調用按扭上的AS:
on(release){//鼠標離開按扭后執行下面的代碼;
loadMovie("flash8.swf","mymc");//加載外部的"flash8.swf"文件到"mymc"空影片剪輯中;
mymc._x=70;//加載影片的X軸坐標;
mymc._y=20;//加載影片的Y軸坐標;
mymc._xscale=70;//加載影片的寬度;
mymc._yscale=70;//加載影片的高度;
}
清除按扭上的AS:
on(release){//鼠標離開按扭后執行下面的代碼
unloadMovie(mymc);//刪除用loadMovie加載的*.swf文件;
}
Ctrl+Enter測試
三.調用外部*.swf文件(加載到時間軸上):
外部*.swf文件要和編輯的Flash文件放在同一目錄下
1.制作兩個按扭(一個調用,一個清除)拖放到場景中
2.調用按扭上的AS:
on(release){//鼠標離開按扭后執行下面的代碼
loadMovie("flash8.swf",1);//加載外部的"flash8.swf"文件到場景中,層深為1;
}
清除按扭上的AS:
on(release){//鼠標離開按扭后執行下面的代碼
unloadMovie(1);//刪除層深為1的用loadMovie所加載的"flash8.swf"文件
}
Ctrl+Enter測試。
當然二和三的代碼都可以寫在幀上。
四.調用外部圖片(加載到影片剪輯中)
外部圖片必須和正在編輯的Flash文件放在同一目錄下
1.制作兩個按扭(一個調用,一個清除)拖放到場景中
2.制作一個空的影片剪輯,拖到場景中,實例名是:mymc;
3.時間軸上第一幀上的AS:
i=0;//定義一個變量i,并且賦初值為0;
調用按扭上的AS:
on(release){//鼠標離開按扭后執行下面的代碼;
i++;
if(i>9){//因為外面這有9張圖,當變量大于9的時候,讓變量為1,這樣能夠使加載的圖片是連續的,即,每點一次按扭,就換一張圖,等到換到第9張圖,再點按扭,則循環到第一張圖(j1.jpg到j9.jpg,因為沒有j0.jpg,如果i=0,則會提示沒有找到j0.jpg);
i=1;
}
loadMovie(("j"+i)+".jgp",mymc);//從j1.jpg開始加載圖片到影片剪輯mymc中;
mymc._x=110;//以下設置加載圖片的屬性
mymc._y=35;
mymc._xscale=130;
mymc._yscale=130;
}
清除按扭上的AS:
on(release){
unloadMovie(mymc);//刪除掉用loadMovie加載到影片剪輯的圖片;
}
Ctrl+Enter測試。
當然AS可以寫在幀上。
五.調用外部聲音文件(加載到場景中)
外部聲音文件必須和正在編輯的Flash文件放在同一目錄下
1.制作兩個按扭(一個調用,一個清除)拖放到場景中
2.調用按扭上的AS:
on(release){//鼠標離開按扭后執行下面的代碼;
mySound=new Sound();//建立一個新的聲音對象mySound;
mySound.loadSound("zaihuni.mp3",true);//加載外部的*.mp3聲音文件到mySound對象中,并且按流的方式播放(參數為false時,是以裝載完后播放);
}
清除按扭上的AS:
on(release){
mySound.stop();//當按下清除按扭后,停止聲音的播放
}
Ctrl+Enter測試。