|
五、用loadMovieNum()函數調用所有外部文件
(一)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)
}
(三)lloadMovieNum()的定位
從前面我們已經知道了,函數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 值越大,其載入的內容越往前,即越在上層,處於上方。
(四)小技巧:用lloadMovieNum()保護你的作品——使用虛假的文件後綴
其實載入外部文件的擴展名不一定非得以 .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 載入
*/ |
|