天天看點

flash調用swf檔案伺服器,FLASH如何加載(調用)外部SWF檔案

這久遇到要在FLASH裡面調用外部的SWF檔案,在網上找了好久,介紹可是真多啊,用了快一天時間才學會!原來很簡單,隻不過走了很多彎路!現把方法介如下,希望後來人能少走些彎路!

(轉貼)

做FLASH站的時候考慮到隻做一個FLASH檔案,太大,是以經常将一個檔案分解開,做成站點的時候通過按鈕點選等方面載入單個欄目的SWF檔案,而浏覽者浏覽網頁的時候可逐個下載下傳,大大減少了主動畫的負擔。

那麼如何加載外部的SWF檔案呢?這裡就需要用到兩個ACTION關鍵詞:loadmovie或loadmovienum(它們之間的差别,下面會講到)

先讓我們來看一句寫在時間軸上的代碼:

loadMovieNum("about.swf",2);

//加載about.swf到主動畫的第二個級别(級别是相對于不同swf檔案而言的,其作用我們可以了解為層,比如FLASH裡的層,上一層的東西将覆寫下一層的東西,而級别則是上一級别的場景覆寫下一級别的場景)(用loadMovieNum語句來加載動畫,會受到浏覽器的安全限制,是以隻能加載本地或同一伺服器上的SWF檔案。)

運用這一句代碼我們就可以做一個簡單的SWF檔案的加載。

建立FLASH文檔,畫一個圓,紅色,在第20幀插入關鍵幀,向右移動,導出命名為about.swf,再建立一文檔,畫一矩形,場景大小,黑色,在第一幀寫入ACTON:

loadMovieNum("about.swf",2);

和about.swf同一檔案夾導出命名為index.swf,開始測試,可以發現about.swf裡的動畫覆寫在index.swf上,但about.swf的背景并沒有被加載進去。

現在也許有人要問,那我怎麼控制加載進來的動畫呢?比如停止、播放、關閉。。。一樣用上面about.swf為例,要達到控制的效果我們可以有兩個方法:

一、在about.swf裡控制;

做兩個按鈕,一個播放一個停止,在播放按鈕上寫ACTION:

on(release){

this.play();

}

在停止按鈕上寫:

on(release){

this.stop();}

這樣測試一下,在index.swf裡就可以播放和停止動畫了

二、在index.swf裡控制

同樣是做播放和停止的兩個按鈕

在播放按鈕加ACTION:

on(release){_level2.play();}

//_level(數值)是級别的意思,_level2就是第二級别

在停止按鈕加ACTION:

on(release){_level2.stop();}

測試一下,同樣可以達到效果。

值得一題的是我們可以再加一個功能,把about.swf關閉或解除安裝掉,因為它是加載進來的,有辦法讓它進來就有辦法讓它回去,是以我們現在加個關閉的按鈕,然後寫上ACTION:

on(release){unloadMovieNum(2);}

//解除安裝影片中加載進第2級别的動畫

到這裡我們就掌握了簡單的加載并控制外部swf檔案的方法,現在我們要介紹另一種方法,即加載外部檔案到主動畫裡的MC。仍然以最初的about.swf和index.swf檔案為例

在index.swf裡建立播放、停止、關閉三個按鈕,建立一MC,命名為“load”,回到主場景,從庫中将MC拖入場景,放在x=100y=100的位置上,命名執行個體名為:mc1

建立一層,在時間軸第1幀寫上ACTION:

mc1.loadMovie("about.swf");

//加載about.swf到主場景的load這個MC裡

在播放按鈕寫上:

on(release){_root.mc1.play();}

在停止按鈕寫上:

on(release){_root.mc1.stop();}

//以上的兩行代碼我們不難發現,按鈕并不是直接控制about.swf

而是通過控制執行個體名為mc1的MC

在關閉按鈕寫上:

on(release){_root.mc1.unloadMovie("about.swf");}

講到這裡我們就可以開始結合第二講的導航來制作FLASH站了:)簡單的FLASH站點說到底,無非就是通過導航按鈕來加載動畫!下面以加載到MC的方法為例,結合導航按鈕。

首先回到第二講裡的導航按鈕,我們講述了滑鼠經過、離開效果的制作

on(rollOver){this.btn1.gotoAndPlay(2);}

on(rollOut){this.btn1.gotoAndPlay(1);}

但這并不是真正意義上的按鈕,它實作不了點選進入界面的功能!是以我們在上面兩句代碼後加上:

on(release){_root.mc1.loadMovie("about.swf");}

這樣就實作了導航按鈕滑鼠經過、離開、點選的三個功能了,是不是很簡單?沒錯就是這麼簡單!

上面講過了如何通過按鈕點選加載外部swf檔案的基本知識,現在我們開始進行更深一層的探讨,如何才能給加載的動畫定個位置,不然豈不是要亂成一團了?呵呵。。

定位的方法主要有兩種:

1、制作被加載的flash時先定位

比如主動畫a.swf的畫布大小是700*400,想被加載的b.swf大小為200*200并載入主動畫_x=300_y=200的位置。

那我們就可以,在b.swf裡做畫布和a.swf相同為:700*

400,将原來做的b.swf裡的動畫位置放于x=300y=200的位置,這樣導出影片。在a.swf裡做一按鈕,按鈕上的ACTION如下:

on(release){

loadMovieNum("b.swf",2);

}

這樣就完成了一種定位加載的方法。

2、導入到主動畫MC

這裡的主動畫MC指的是,在a.swf裡建立一空的MC,将外部檔案加載到這個MC裡。現在我們開始:

同樣是制作主動畫a.swf和被加載動畫b.swf,b.swf的畫布和自身動畫大小一緻。傳回主動畫a,建立一MC,無内容放空,将MC放于你希望b.swf加載進來播放的位置,比如方法1裡的x=300y=200執行個體名為loadmc然後建一按鈕,加上ACTION:

on(release){

_root.loadmc.loadMovie("b.swf");

}

★如何控制加載的動畫

(位置、播放、停止、解除安裝)

位置在上面我們已經講過了,在這裡介紹另一種常用的方法

運用attachMovie,加載庫中的元件(如loadmc)到主動畫場景裡,再載入外部swf到loadmc中。ACTION如下:

_root.attachMovie("loadmc1","loadmc",1);

//loadmc1為連結辨別,loadmc為這個MC的執行個體名,1為Depth,指定MC加載到場景的深度級别

_root.loadmc._x=200;

_root.loadmc._y=300;//定位MC,x=200y=300

_root.loadmc.loadMovie("b.swf");

連結辨別在哪呢?打開庫面闆,選一進制件右擊選擇“連結”,彈出“連結屬性”對話框,“辨別符”欄就是你要填的連結辨別了。

按鈕實作停止和播放:

在幀上:

_root.loadmc.loadMovie("b.swf");

//加載b.swf到loadmc

在按鈕上:

on(release){

loadmc.stop();//停止播放,播放則為play()

}

按鈕實作解除安裝:

on(release){

_root.loadmc.unloadMovie("b.swf")

}

到這裡關于載入swf檔案的基本知識也講得差不多了,突然發現一小問題,加載檔案時的loading要怎麼做啊?其實和上面講的制作方法差不多,呵呵馬上開始!建一按鈕,寫如下ACTOIN:

on(release){

with(loadmc){

_root.loadmc.loadMovie("b.swf");

onEnterFrame=function(){

total=getBytesTotal();

loaded=getBytesLoaded();

_root.percent=int(loaded/total*100)+"%";

//percent是場景中的一個動态文本框的變量名

if(int(loaded/total)==1)//如果加載完畢

deletethis.onEnterFrame;//删除該方法

}

}

}

補充::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

Flash加載外部檔案調用外部*.swf檔案(加載到影片剪輯中)

二.調用外部*.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測試

繼續閱讀