最新發(fā)現(xiàn)原來flash中可以加載外部swf文件2008-05-23 09:54
今天經(jīng)理說我做的FLASH動(dòng)畫太大了,所以讓我修正這個(gè)問題,這時(shí)候我就到網(wǎng)上找了一些資料但是都不行,沒有什么合適的,沒想到找到了這篇文章,真的很不錯(cuò)! 一,、loadMovie("url",target [, method])
描述:函數(shù),;在播放原始 SWF 文件的同時(shí)將 SWF 文件或 JPEG 文件加載到 Flash Player 中目標(biāo)影片剪輯的路徑。 首先我們可以看到該函數(shù)有3個(gè)參數(shù):url,、target,、method。其中,最后一個(gè)參數(shù)“method”是一個(gè)可選參數(shù),。 1.參數(shù)url:要加載的 SWF 文件或 JPEG 文件的絕對(duì)或相對(duì) URL(路徑),。 這就是說這個(gè)url可以是本地的文件路徑,也可以是Internet上的文件地址,。但是,,無論從何處加載,都只能是 SWF 或 JPEG 文件,。并且,,該參數(shù)是一個(gè)字符串,所以必須寫在半角雙引號(hào)中,,如: loadMovie("01.swf", _root) loadMovie("01.jpg", _root) loadMovie("http://www./01.swf", _root) loadMovie("http://www./01.jpg", _root) 2.參數(shù)target:指向目標(biāo)影片剪輯的路徑,。目標(biāo)影片剪輯將替換為加載的 SWF 文件或圖像。 這個(gè)參數(shù)表示要影片將被加載到的路徑,,它指向目標(biāo)影片剪輯的路徑,。加載后,目標(biāo)影片剪輯將替換為加載的 SWF 文件或圖像,。如: loadMovie("01.swf", _root) loadMovie("01.swf", _root.loading) loadMovie("01.swf", _root.loading.01) 3.參數(shù)method:可選參數(shù),,指定用于發(fā)送變量的 HTTP 方法。該參數(shù)必須是字符串 GET 或 POST,。如果沒有要發(fā)送的變量,,則省略此參數(shù)。GET 方法將變量追加到 URL 的末尾,,它用于發(fā)送少量的變量。POST 方法在單獨(dú)的 HTTP 標(biāo)頭中發(fā)送變量,,它用于發(fā)送大量的變量,。 二、loadMovieNum("url",level [, variables])
描述:函數(shù),;在播放原來加載的 SWF 文件的同時(shí)將 SWF 文件或 JPEG 文件加載到 Flash Player 中的某個(gè)級(jí)別,。 首先我們可以看到該函數(shù)有3個(gè)參數(shù):url、target,、variables,。其中,最后一個(gè)參數(shù)“variables”是一個(gè)可選參數(shù),。 1.參數(shù)url:要加載的 SWF 文件或 JPEG 文件的絕對(duì)或相對(duì) URL(路徑),。 該函數(shù)的此參數(shù)和上面loadMovie中的此參數(shù)用法完全一致,這里不再作解釋,。 2.參數(shù)level:一個(gè)整數(shù),,指定 SWF 文件將加載到 Flash Player 中的哪個(gè)級(jí)別。 加載的時(shí)候,可以這樣來寫: loadMovieNum("01.swf", 1); loadMovieNum("01.swf", 2); loadMovieNum("01.swf", 3); 控制的時(shí)候,,可以這樣使用: _level1._x=10 ; _level2.aa._alpha=50 ; _level3.aa.bb._width=110; 需要注意的的是,,每一個(gè)級(jí)別只能同時(shí)存在一個(gè) SWF 或 JPEG 文件。如果兩個(gè) SWF 或 JPEG 文件的級(jí)別相同,,那么后者將替換掉前者,。級(jí)別不同的_level,級(jí)別大的將覆蓋掉級(jí)別小的,,即:數(shù)字大的將處于數(shù)字小的之上,。 3.參數(shù)variables:可選參數(shù),指定發(fā)送變量所使用的 HTTP 方法,。該參數(shù)必須是字符串 GET 或 POST,。如果沒有要發(fā)送的變量,則省略此參數(shù),。GET 方法將變量追加到 URL 的末尾,,它用于發(fā)送少量的變量。POST 方法在單獨(dú)的 HTTP 標(biāo)頭中發(fā)送變量,,它用于發(fā)送大量的變量,。 三、loadMovie/loadMovieNum 的定位
我想,,也許這才是大家真正要找的東東:) 1.loadMovie的定位 由于用loadMovie加載進(jìn)來的 SWF 或 JPEG 文件,,最后是放置于目標(biāo)影片剪輯里的,所以我們完全可以像控制MC的_x和_y,,來控制加載到的目標(biāo)影片剪輯,。就好像我們?cè)趬Ρ冢╛root)上掛上了一個(gè)相框(目標(biāo)影片剪輯),然后又在相框里面放入(加載)了一張相片(SWF 或 JPEG 文件),,那么當(dāng)我們想挪動(dòng)相片的位置的時(shí)候,,只要移動(dòng)相框的位置就可以了。 比如在主場(chǎng)景中有一個(gè)實(shí)例名為aa的MC(坐標(biāo)為(20,30)),,我們要在里面加載一個(gè)02.swf文件,,并且要加載后這個(gè)放到相框(_root.aa)中的相片(02.swf)出現(xiàn)在主場(chǎng)景(_root)坐標(biāo)系的(50,100)處。代碼如下: loadMovie ( "02.swf" , _root . aa ); _root . aa . _x = 50 ; _root . aa . _y = 100 ; 在實(shí)際應(yīng)用中,,其實(shí)更加傾向于用AS創(chuàng)建一個(gè)空MC,,然后在這個(gè)MC中加載外部 SWF 或 JPEG 文件。代碼如下:
_root . createEmptyMovieClip ( "aa" , 1 ); with ( aa ) { _x = 50 ; _y = 100 ; loadMovie ( "02.swf" ); } 2.loadMovieNum的定位 從前面我們已經(jīng)知道了,,函數(shù)loadMovieNum是將 SWF 或 JPEG 文件加載到_level(級(jí)別)的,。并且是用_level1._x、_level2._x,、_level1.aa._x之類的來定位的,。比如我們要將02.swf加載到主場(chǎng)景坐標(biāo)系的(50,100)中,,代碼如下: loadMovieNum ( "02.swf" , 1 ); _level1 . _x = 50 ; _level1 . _y = 100 ; 但是在測(cè)試的時(shí)候大家會(huì)發(fā)現(xiàn)加載進(jìn)來的02.swf并沒有如我們預(yù)期的那樣出現(xiàn)在主場(chǎng)景坐標(biāo)系的(50,100)位置,這是為什么呢,? 原來,,在沒有使用loadMovieNum以前,所有的圖形,、MC等等都是處于_level0里的,,我們通常使用的_root其實(shí)就是_level0。你可以作個(gè)測(cè)試:trace(_root==_level0),,你會(huì)發(fā)現(xiàn)返回值是“true”,。 那么,我們用loadMovieNum加載 SWF 或 JPEG 文件的時(shí)候,,程序就要對(duì)你指定的_level進(jìn)行創(chuàng)建,,隨后再緊接著載入 SWF 或 JPEG 文件。如果像剛才代碼中寫的那樣,,不判斷_level是否存在而調(diào)用其屬性,,勢(shì)必?zé)o功而反。 解決的方法也很簡(jiǎn)單,,就是用一個(gè)循環(huán)來判斷指定的_level是否存在,。一旦_level產(chǎn)生,那么它的種種屬性自然可以調(diào)用了,。代碼如下: 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 ); } } fps = setInterval ( go ); 再或者大家可以使用Macromedia Flash MX 2004中的MovieClipLoader類來判斷加載狀態(tài),。使用方法參見以下教程: 如果是影片剪輯里的影片剪輯加載外面的swf文件,則不用加_root
|
|