欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

as腳本之loadMovie完全實(shí)現(xiàn)教程

 更新時(shí)間:2007年03月20日 00:00:00   作者:  
使用loadMovie可以動(dòng)態(tài)的載入外部文件,從而減少主文件的體積,有利于網(wǎng)上下載,以及對(duì)各項(xiàng)子文件的修改,更換。如果沒有做過FLASH網(wǎng)頁,可以看看這個(gè)FLASH網(wǎng)頁的基本組成情況,見圖2-2-1

只需要把圖中的主文件和子文件用比如ftp工具傳到自己的空間上,就可以輕的實(shí)現(xiàn)只下載主文件,如果需要瀏覽的子文件就可以單獨(dú)下載,可以想想,如果你的整個(gè)FLASH網(wǎng)頁不分主次,全部統(tǒng)一個(gè)FLASH,做成了幾M甚至10多M,那么有誰愿意等著看你的網(wǎng)頁呢?除非你自己。

于是使用loadMovie就顯得很重要了。現(xiàn)在就讓我們從基礎(chǔ)開頭,然后去分析使用loadMovie所涉及到的具體問題吧。使用loadMovie有兩種基本的方法:(一)將外部swf文件載入到某一層上。(二)將外部swf文件載入到時(shí)間軸的某個(gè)影片剪輯中。對(duì)這兩種方法的使用,用圖表示更加直觀些。見圖2-2-2

第二種方法又可以這樣寫:_root.mc.loadMovie(“a1.swf”);如果a1的后綴名為 jpg那么載入的是外部圖片。載入圖片與載入swf文件的道理是一樣的,就不贅述。說到這里還比較空洞,做一個(gè)實(shí)例來看看。

一、新建一個(gè)文件夾,任意取一個(gè)名字 比如:mywangye

二、做一個(gè)Flash發(fā)布成swf文件并且取名字為a1,保存在mywangye這個(gè)目錄中,這個(gè)a1就是我們要載入的子文件。

三、然后做主文件,由于我們是做最簡(jiǎn)單的,所以什么也不畫,就在這個(gè)主文件的第一楨,寫 loadMovie(“a1.swf”,1) 同樣將這個(gè)文件保存在mywangye目錄中,取個(gè)名字叫index

四、測(cè)試效果,源文件見本文后的打包中的01文件夾

然后用上面圖中的第2種語法,繼續(xù)做一個(gè),注意了,第二種方法需要在舞臺(tái)上放一個(gè)mc并且取一個(gè)實(shí)例名,或者創(chuàng)建一個(gè)空的MC。做了上面的小實(shí)驗(yàn)后,我們可以總結(jié)些什么結(jié)論呢?如果僅僅是得到可以加載外部文件這么一條結(jié)論的話,那么就太膚淺了??梢宰屛覀兿氲剑罕患尤脒M(jìn)來的外部文件的坐標(biāo)問題;長(zhǎng)寬問題;外部文件比較大,造成的加載延時(shí)問題;如何訪問被加載進(jìn)來的swf的問題;不要加載了,卸載問題…..這些問題我們?nèi)绻谎芯肯?,真正在做網(wǎng)頁的時(shí)候,會(huì)遇到很多麻煩的。

由上面的最簡(jiǎn)單的加載我們可以得到這樣的結(jié)論:(1)如果采用加載到層上的,加載進(jìn)來后默認(rèn)注冊(cè)點(diǎn)是舞臺(tái)的左上角;如果采用加載到mc里面的,那么默認(rèn)注冊(cè)點(diǎn)是MC的注冊(cè)點(diǎn)。如果MC的注冊(cè)點(diǎn)是左上角,那么被加載進(jìn)來的SWF文件就與MC的左上角對(duì)準(zhǔn);如果MC的注冊(cè)點(diǎn)是中心,那么加載進(jìn)來的SWF就把左上角與MC的中心對(duì)齊。(2)被加載進(jìn)來的MC保留原來的長(zhǎng)寬比例。

問題一:如何控制被加載進(jìn)來的SWF文件的坐標(biāo)和長(zhǎng)寬比例大小?

控制被加載進(jìn)來的SWF文件控制其長(zhǎng)寬要采用onEnterFrame,比如:

on (press) {
loadMovie("a2.swf", "_root.mymc");
onEnterFrame = function () {
_root.mymc._x = 0;
_root.mymc._y = 0;
_root.mymc._width = 330;
_root.mymc._height = 240;
};
}

為什么用 onEnterFrame呢?因?yàn)楸患虞d進(jìn)來的的過程中,有點(diǎn)延時(shí),如果沒有onEnterFrame語句,那么語句讀取一次就不讀取了,然而讀取了這一次之后,還沒有加載進(jìn)來,所以就會(huì)導(dǎo)致坐標(biāo)大小設(shè)置無效。同樣,如果加載到層上,也是這樣的。

on (press) {
loadMovie("a1.swf", 1);
onEnterFrame = function () {
_level1._x = 17;
_level1._y = 30;
_level1._width = 330;
_level1._height = 240;
};
}

請(qǐng)注意這兩種方法,第一種,把外部的a2加載到mymc中,加在進(jìn)來后,a2就自動(dòng)的替換了mymc,我們直接設(shè)置mymc的屬性就設(shè)置了被加載進(jìn)來的swf的屬性。第二種方法,_level是對(duì)于加載到時(shí)間軸上的電影的引用,加載到第2層就是_level2;加載到第3層就是_level3。

問題之二:如何實(shí)現(xiàn)點(diǎn)擊按鈕加載一個(gè)外部SWF文件,并且要顯示加載的下載進(jìn)度呢?

有兩個(gè)方法來實(shí)現(xiàn)這個(gè)效果,其一:把加載londing寫在主文件中,其二,被加載的子SWF文件有自己的londing?,F(xiàn)在分別給予說明。

其一:在主文件中寫londing

外部子swf文件名為a1,主文件中有一個(gè)動(dòng)態(tài)文本框名為loadText,一個(gè)按鈕名為bbt,現(xiàn)在把loadMovie和londing寫在楨上。

_root.bbt.onPress = function() {
_root.createEmptyMovieClip("mc", 10);
mc.loadMovie("a1.swf");
mc._visible = false;
_root.bbt.onEnterFrame = function() {
var l = mc.getBytesLoaded();
var t = mc.getBytesTotal();
var getPercent = l/t;
loadText = Math.round(getPercent*100)+"%";
if (l>0 && l>=t) {
mc._visible = true;
delete this.onEnterFrame;
}
mc._x = 10;
mc._y = 10;
mc._width =440;
mc._height = 320;
};
};

其二:子文件中有自己的londing

這個(gè)寫法與前面說的londing一樣,只是注意一個(gè)問題就是注意路徑的問題,比如這樣寫:

第一禎

loaded = getBytesLoaded();
total = getBytesTotal();
lts = Math.round((loaded/total)*100);
wenben = lts+"%";

第二禎

if (lts == 100) {
gotoAndStop(3);
} else {
gotoAndPlay(1);
}

和前面的londing中介紹的比較,看出不同之處沒有呢??jī)H僅是去掉了_root因?yàn)楸患虞d后,外部SWF文件就相當(dāng)于主文件中的一個(gè)MC 有了_root 就是指向主文件的_root 了,當(dāng)然會(huì)顯示錯(cuò)誤。

問題三:我想在舞臺(tái)上畫一個(gè)屏幕,然后點(diǎn)擊一個(gè)按鈕就載入一個(gè)外部swf進(jìn)行播放該怎樣做呢?

那么我們就來一起做一個(gè)相冊(cè)吧。當(dāng)主文件載入后,單擊按鈕就載入一個(gè)外部swf 文件,并且都有l(wèi)onding顯示。首先我們做好以下準(zhǔn)備工作:(1)準(zhǔn)備幾張圖片,現(xiàn)在我們準(zhǔn)備7張,6個(gè)子文件一個(gè)一張,主文件用一張。(2)主文件舞臺(tái)大小為了適應(yīng)網(wǎng)頁的需要,設(shè)置為770*420。子文件舞臺(tái)大小設(shè)置為512*384,這樣就不需要載入后控制大小了,方便些(其實(shí)我們應(yīng)當(dāng)這樣,省去一些麻煩。

一、制作子文件。每個(gè)都用來顯示圖片,第一和第二禎寫londing,第三禎~~二十禎根據(jù)自己的愛好做點(diǎn)亮度變化,以產(chǎn)生動(dòng)感,最后一禎寫上stop()。第一和第二禎的londing如下

第一禎

loaded = getBytesLoaded();
total = getBytesTotal();
lts = Math.round((loaded/total)*100);
wenben = "數(shù)據(jù)下載中 "+lts+"%";

第二禎

if (lts == 100) {
gotoAndPlay(3);
} else {
gotoAndPlay(1);
}

就這樣如法炮制的制作6個(gè),分別命名為b1…..b6都發(fā)布成swf文件。保存在一個(gè)文件夾中。

二、制作主文件

第一禎用來寫londing,第2禎放一些像屏幕一樣的東西,和按鈕,為了增加效果,放一個(gè)音樂在時(shí)間軸上。

第一禎的londing//由于前面已經(jīng)說得多了,就不贅述了

stop();
i = 0; ,
onEnterFrame = function () {
// 使用不斷觸發(fā)的事件
loaded = _root.getBytesLoaded();
total = _root.getBytesTotal();
var aa = Math.round((loaded/total)*100);
_root.dongtai.wenbens = aa+"%";
_root.dongtai._x = 188+aa*3;
_root.bb._width = aa*3;
if (aa>=100) {
// 檢測(cè)到滿足條件就跳出來,否則繼續(xù)循環(huán)
_root.gotoAndStop(2);
delete this.onEnterFrame;
// 使用delete的目的是當(dāng)完成下載后銷毀onEnterFrame事件,以節(jié)約資源的消耗。
}
};

第2禎的按鈕上的AS

on (press) {
_root.i++;
if (i == 7) {
i = 6;
}
loadMovie("b"+i+".swf", "_root.mc");
_root.tishi = "第"+i+"張圖片";
}

偷點(diǎn)懶,就不詳細(xì)的贅述其含義, 我們也可以用很長(zhǎng)的語句來實(shí)現(xiàn)相同的效果,這種寫法是對(duì)AS的一種濃縮。

具體情況請(qǐng)參看原文件。

問題四:我想逐次載入多個(gè)外部文件,當(dāng)?shù)谝粋€(gè)載入播放完畢后,立即載入第2個(gè),第二個(gè)播放完畢后,立即載入第3個(gè) ,……,直到結(jié)束。怎么辦?

首先對(duì)這種提問,我們先要質(zhì)問一下提問的人,這樣做有什么意義? 與其這樣,不如全部做到一個(gè)SWF中,因?yàn)槊看握{(diào)用一個(gè)外部SWF的時(shí)候,需要一定的時(shí)間來等待下載。當(dāng)然,如果你想制作一個(gè)連續(xù)劇,播放完了一個(gè)后,用londing下一集的londing畫面顯示“正在載入下集,請(qǐng)稍候”那么還是可以的。

方法很簡(jiǎn)單:依照問題三的原文件,稍微修改,去掉一個(gè)按鈕,用一個(gè)按鈕載入第一個(gè),然后再第一個(gè)的最后一禎放個(gè)調(diào)用主文件中的函數(shù)即可。

按鈕:

on (press) {
loadMovie("b1.swf", "_root.mc");
}

主文件定義的函數(shù)

function go2() {
loadMovie("b2.swf", "_root.mc");
}
function go3() {
loadMovie("b3.swf", "_root.mc");
}
function go4() {
loadMovie("b4.swf", "_root.mc");
}
function go5() {
loadMovie("b5.swf", "_root.mc");
}
function go6() {
loadMovie("b6.swf", "_root.mc");
}

第一個(gè)b1 SWF的最后一禎_root. go2(),第二個(gè)外部SWF的最后一禎 _root.go3()………..

相關(guān)文章

最新評(píng)論