Flash中載入外部檔案的方法_Flash As

來源:互聯網
上載者:User
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測試。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.