第一課:
這是我們第一次接觸到的語句。學(xué)代碼有以下幾條注意事項:
第一條,你得把單詞記住了,四個字母,一個也不能錯。要是字母寫錯了,那就全完了,我也幫不了你了。
第二條:記住它的意思,這也非常重要。一個單詞,究竟是什么意思呀?不知道怎么用,我也幫不了你了。
第三條:在寫代碼的時候,要注意大寫小寫,不能亂寫。上面是標(biāo)題,全部大寫。但寫到程序里面去時,不是這個樣子的哦。
第四條:在使用的時候,標(biāo)點符號也是有特定的要求的,也一點點不能錯的?。
今天我們學(xué)的STOP是停止的意思。就像是馬路上紅燈亮了,緊急剎車。我們知道:在以前制作的小動畫,當(dāng)播放完了之后,會自動又從頭放起,沒完沒了地一遍又一遍地放。最好是讓它播完后就停下來,讓用戶來決定是不是要從頭放起。那么,這個STOP就派上用處了。在你的小動畫的最后一幀上,寫這個命令:
stop();
現(xiàn)在我們看到了,除了stop這個單詞之外,后面有一個小括號,最后是一個分號。這是必不可少的,你得記住了。不要光寫一個stop,后面什么都不寫哦。至于為什么要寫小括號,為什么要寫分號,這個留到下一課再講吧。好了,這樣,你的小動畫就再也不會沒完沒了的了,放到最后一幀就會停下來了。你可以寫上你的網(wǎng)名,讓大家看清楚是誰創(chuàng)作的啦!
第二課:gotoAndPlay(跳到某一幀繼續(xù)運行)
怎么樣?有沒有把你的小動畫的最后一幀加上stop?是不是很聽話地停下來了?體會到了代碼的威力了吧。
好,我們來接著學(xué)習(xí)第二個語句:
gotoAndPlay();
在英語里,這是由四個單詞構(gòu)成的。第一個是go,是去的意思,to是方向and是和的意思,或說是并且。play是大家熟悉的了,播放。連起來的意思就是跳到某一幀去繼續(xù)運行。括號里一定要填上一個數(shù)字。如果(10),就是跳到第十幀繼續(xù)運行。注意它的大小寫。這后面也有一個分號??梢哉f:代碼的每一句的最后就是一個分號。
這個東西有什么用呢?這好像是一個交通警,可以指揮FLASH的運行。就像唱歌,有時,唱完一支歌之后,并不是再從頭唱的,而是再唱一遍副歌。假定一首歌有一百幀。當(dāng)唱到一百幀的時候,寫上一句:
gotoAndPlay(80);
這就是重新回到第八十幀來唱,而不要回到歌曲的頭一句來唱。這就起到了指揮的作用。?這個容易理解吧。
那么,得寸進(jìn)尺,我們再來學(xué)一個相近的命令:
gotoAndStop();
大家一定猜得出來,這個命令是跳到某一幀去停止,聽候別的命令。真聰明。我再打個比方:如賽跑,跑到終點或是某一點的時候,教練告訴運動員,你趕快到田徑場等待別的比賽。是停在田徑場。這個命令有兩個用處:一個是用于結(jié)束。停在某一個幀上就結(jié)束了,可能這一幀是最漂亮的吧?另一個用處是跳到某一個幀停在那兒,聽候其它的命令。例如:?一個小動畫的第五十幀上寫有
gotoAndStop(20);
這意思就是說,運行到了五十幀后,不要再運行五十一幀了,回到第二十幀停在那兒。可能是聽候別的命令,也可能是讓別的人出場表演了。
好了,這一課學(xué)了兩個命令了,有沒有搞混呀?順便補充一句:第一課中的stop();括號里是不用寫數(shù)字的,而這一課的括號里必須寫上數(shù)字,一定要回答這個問題:跳到第幾幀呀?如果你不告訴,這個語句就是錯的,無法執(zhí)行!你這個指揮官沒當(dāng)好。
第三課:按鈕上的控制代碼
前兩課,我們已經(jīng)學(xué)了三個語句了。記住了嗎?會用了嗎?stop比較簡單,gotoAndPlay與gotoAndStop稍稍有點兒難。就是那個小括號里面要加上數(shù)字。以后我們還會講到,小括號里不僅僅是寫入數(shù)字那么簡單,還會寫上別的東西,還會更復(fù)雜一些?,F(xiàn)在為了便于記憶,先不說這些了。
這一課,我們要講按鈕上的控制代碼,有點兒麻煩哦,可要用心聽啊。
現(xiàn)在我們先來寫一個最簡單的按鈕代碼(注意,這些代碼不是寫在幀上面的,而是寫在按鈕上面的):
on?(press)?{
stop();
}
凡是按鈕代碼,都是這個樣子的。別急,聽我一句一句地解釋。
先是一個on?,意思是當(dāng)什么什么的時候。后面有一個小括號,小括號里面的press,意思是“按下”。這一部分的意思就是:“當(dāng)按鈕被按下的時候”,后面接下來是一個大括號。大括號里的命令就是所要執(zhí)行的。這兒是停止。就是說:一個動畫正在播放,不管它放到第幾幀了,只要一按這個按鈕,動畫就停止住了。如果我們這樣寫:
on?(press)?{
gotoAndPlay(30);
}
那么,當(dāng)一按下的時候,這個動畫不管播放到第幾幀了,它立即會跳到第三十幀開始繼續(xù)播放。
按鈕很厲害是不是?現(xiàn)在我們換一個寫法:
on?(release)?{
gotoAndStop(69);
}
現(xiàn)在我們注意到:小括號里寫的不是press,而是release,這是什么意思?這是“松開”的意思。也就是說:在用戶按下(press)之后,還不執(zhí)行,一定要等用戶松開鼠標(biāo),才開始執(zhí)行后面大括號里的命令。這樣給用戶一個反悔的機會。要是他不想松開而移走了鼠標(biāo),就不會執(zhí)行。一般我們用release比較多一些。那么上一句的意思就是:當(dāng)用戶按下按鈕并松開鼠標(biāo)的時候,就跳到第69幀停住。
好了,別說太多了。這一課我們學(xué)到了按鈕代碼的寫法,這像是一種公式化的東西。在代碼學(xué)習(xí)中,尤其要注意公式化,規(guī)范化??刹灰汛罄ㄌ柾浀袅耍袝r寫了前面的大括號,忘記寫后面的大括號,或者把大括號的左右方向?qū)戝e了。我經(jīng)常丟三拉四的,你可別學(xué)我哦!
記住這兩個單詞:press?release
第四課:StartDrag(拖動)
前面三課,我們學(xué)了幾個單詞啦?學(xué)了幾條語句啦?可不要前學(xué)后忘,跟熊?瞎子搿棒子似的呀!
其實,我們前面學(xué)到的,是最簡單,最常用的了。你已經(jīng)可以做出很規(guī)范的MTV來了。
什么是規(guī)范的MTV呢?就是網(wǎng)頁一打開,就有一個畫面。而這個畫面是停止的。因為有時,用戶還沒有決定,究竟要不要往下看??赡芩@時有事要走開,去倒杯水啦,上趟衛(wèi)生間啦,過一會兒來看;也可能他是看過的,不想繼續(xù)往下看。所以,最好是一打開是停止的。所以,你一定是在第一幀上寫了一句:
stop();你也正好趁此機會,在第一幀上來個簡單的內(nèi)容介紹,做做廣告。標(biāo)題,內(nèi)容簡介,作詞作曲什么的,引起觀眾的興趣。然后,在畫面的一角,出現(xiàn)一個漂亮的按鈕,上寫play。讓觀眾來按,這一按,影片就開始了。這個按鈕上,你一定是寫上了:
on(release){
gotoAndPlay(2);
}
到了影片結(jié)束了,讓它停止。在最后一幀寫上stop。這時,你又可以做廣告了,動畫制作人,QQ號,Email,謝謝觀賞之類的。這時,在畫面上又出現(xiàn)了一個“重播”按鈕。如果觀眾想再看一遍,一按就又從頭放了。這個按鈕上寫的什么代碼?我不說了。你一定能猜出來。
這些都是很親切的很人性化的東西。以人為本嘛。這些就是規(guī)范化的了。
可以說,你學(xué)到了前三課,已經(jīng)進(jìn)入了一個新的階段,祝賀你!
今天,我們要繼續(xù)前進(jìn)。不讓你有喘息的機會,嘿嘿!
在學(xué)習(xí)新課之前,先得解決新概念的問題。
我們知道:符號有三種,一是圖形、二是按鈕、三是影片剪輯,即
MovieClip,簡稱MC。(以下我只提MC,也讓我打字輕松點)。MC是最有用的東西了,編寫代碼離不開MC。因為它可以有實例名。什么是實例名呢?哇,問題太多了,這些書上全有詳細(xì)的說明,我就不多說了。我們還是先來舉個例子吧。
先做一個MC,名叫:s?里面有一個圓。然后到主場景,把這個圓拖出來。(這就是MC的實例)。點中這個圓,到屬性欄,給它起個實例名,叫p。(注意不要把MC的名字與它的實例名搞錯了。他們的關(guān)系好比是父親與兒子的關(guān)系。我們可以指揮兒子,不能指揮老子。這一點千萬拜托搞清,記得牢牢的。)
現(xiàn)在我們做一個“開始拖動”按鈕,在按鈕上寫:
on(press){
startDrag("p",?true);
}
這一句就是今天我們要學(xué)的。是“一按下就開始拖動”意思。小括號里是兩個參數(shù),逗號前的是第一個參數(shù),就是拖動什么東西?這個p就是我們所要拖動的實例名。假定在場景中有好多個實例名,你一定要指定是哪一個,用引號引起來。逗號后是第二個參數(shù),true在英語里是“真實的、對的”的意思。放在這兒,是指一開始的時候,讓這個實例在場景的中心。
這下我們知道怎么用鼠標(biāo)來拖動一個東西了吧!
那么怎么把它放掉呢,老是粘在鼠標(biāo)上總得放掉吧?好的??梢杂眠@個語句:
stopDrag();
這個語句的括號里是沒有參數(shù)的。跟stop();相似,也是不用寫入?yún)?shù)的。而且這個語句跟startDrag();是一對兒,可以一起記。
現(xiàn)在我們在主場景中放上一個“結(jié)束拖動”按鈕,寫上:
on(press){
stopDrag();
}
意思是一按這個按鈕,就放掉粘在鼠標(biāo)上的東西。好了,你做一下試試,體驗一下以便加深記憶。這一課非常重要,是進(jìn)入第二階段的基礎(chǔ).
第五課:常量與變量 放心,這一節(jié)課,我們不學(xué)任何新的英語單詞。你可以花時間來背誦前面學(xué)過的單詞與語句。
這節(jié)課,我們先來學(xué)習(xí)常量與變量。
什么是常量?就是在程序中自始至終保持不變的數(shù)值。
常量分為三種:
一、數(shù)值型常量:是具體的數(shù)值,可以用來計算的數(shù)。如725、18等。如用加
法,則725加18等于743。完全可以用數(shù)學(xué)方式來處理,如乘法、除法、減法,開方,平方等。
二、字符串型常量:是不可計算的字符,如“abc”、如電話號碼“8824517”(而不是八百八十二萬四千五百一十七)。字符串型常量一定要用引號。字符串也可以用加法,不過,它只是把兩個字符串連起來,如“abc”+“8824517”=“abc8824517”
這好像是個汽車牌照了。如果是字符串“725”加上字符串“18”,就成了“72518”,只是一個號碼,而不是數(shù)值。這一點一定要搞清楚。當(dāng)然,我們也可以用一種手段,根據(jù)需要,把數(shù)值變成電話號碼,或者把純數(shù)字的字符串,(如“8824517”)變成數(shù)值。但含有英文字母或中國字的字符串則是無法互換的。字符串只有加,不能進(jìn)行減、乘、除及其它數(shù)學(xué)方式。
字符串還有一個*作符--連接*作符add。如:
p?add?i
結(jié)果就是pi。如果初始值i=5,盡管這是一個數(shù)值,我們也因有add的存在而把它看作是字符串,結(jié)果得出的是p5?;蛘呖梢哉f:add會自動把前后兩個全部當(dāng)作字符串而連接起來。
也就是說:add只能連接兩個字符。這個add也會經(jīng)常用到的。
三、邏輯型常量:表示邏輯的真和假,只有兩個值:"true"(真)或是"false"(假)。比如說:太陽比地球大,這個值就是“true”,說地球比太陽大,這個值就是“false”。在FLASH中,經(jīng)常用來作出判斷:如果是“true”,就做什么動作;如果是“false”就做另外的動作。這就是邏輯型的。
這三種常量經(jīng)常要用到的。我們一定要分辨清楚。
接下來說一說變量:
變量是用于存儲可變數(shù)據(jù)的命名單元,可以用來記錄一些在影片播放時改變了的值,或是計算某些條件是真還是假。一般都是一些英文字詞。如你可以寫:
a=0,i=1,sum=100,word="hello!"。但是有些單詞是FLASH內(nèi)部專用的,你不可以再用來當(dāng)作變量名。如:if,goto,play,stop等等,當(dāng)然也不能是true,false。
在首次定義一個變量時,最好賦給它一個已知的值,稱為初始化變量。初始化變量常常是在影片的第一幀進(jìn)行。對變量初始化使我們能夠在播放影片時更容易跟蹤和比較變量的值。也就是說,一開始定義變量:a=0,后來又讓a再加上100,再后來,又讓a除以10,最后這個a又要減去10,現(xiàn)在a?是多少啦?這就是變量,一直會變的。
也就是說:變量,我們看到的是字母,而實際上,它是代表著前面所說的三種常量的。
一開始說這一課不學(xué)單詞的,結(jié)果還是學(xué)了一個:add。
第六課:duplicateMovieClip(復(fù)制電影)
雨點是如何做的呢?是做上幾百個小雨點從空中落下來嗎?那不是太累啦!
這兒就用上了標(biāo)題的這個讓語句了,復(fù)制影片。
我們先來看看制作的方法與過程:(//后面是說明與解釋)
先做一個MC:drop。小細(xì)線,由上而下,在水面時變成一個扁圓水波放大后消失,最后一幀寫上STOP。共36幀。然后,再做一個MC:rain。共兩幀。把drop拖入到場景中,實例名為drop1。加一層代碼層。在第一幀寫:
duplicateMovieClip?("drop1",?c,?c);
//復(fù)制這個drop。新名字為c,深度也是c。
setProperty?(c,?_x,?random?(400));
setProperty?(c,?_y,?random?(100)-100);
//設(shè)定復(fù)制品的坐標(biāo)。X隨機,在0至399之間;Y隨機,在-100至1之間。
第二幀寫:
gotoAndPlay(1);
//?繼續(xù)在不同的地方復(fù)制雨線。這樣就會不斷地產(chǎn)生雨線了。由于僅兩幀,前面的雨還沒消失,后面的雨又復(fù)制出來了。
最后把這個MC:rain拖到主場景就可以了,就這么簡單。
這個語句小括號里有三個參數(shù)。第一個是所要復(fù)制的影片的實例名。注意:
這兒制作的MC的名字是drop,而實例名是drop1。所以,第一個參數(shù)里寫的是實例名。不要搞錯了。這個容易混淆。
第二個參數(shù)是新的實例名,也就是復(fù)制品的實例名。這里是c。
第三個參數(shù)是深度。因為復(fù)制出來的東西,是分成層來顯示的。一個層只能放一個復(fù)制品。如果幾個復(fù)制品都放在同一個層,而且位置也一樣的話,那么新的復(fù)制品就會把舊的復(fù)制品蓋住了。這里是c。是隨意起的。
這樣就可以產(chǎn)生一個復(fù)制品了。
現(xiàn)在我們再來看以下的這兩句:
setProperty?(c,?_x,?random?(400));
setProperty?(c,?_y,?random?(100)-100);
這個語句的意思是設(shè)定影片的屬性。它也有三個參數(shù):
第一個參數(shù)是要設(shè)定的影片的名稱。這兒是c,就是復(fù)制品的名稱。
第二個參數(shù)是屬性的名稱。一個影片剪輯的屬性有許多呢,如透明度(_alpha)、旋轉(zhuǎn)角度(_rotation)、寬度(_width)等等。它們的特點是都用下橫杠線打頭的。這兒的第一句中_x是指x坐標(biāo);第二句中的_y是指y坐標(biāo)。就是要設(shè)定復(fù)制品的坐標(biāo)。
第三個參數(shù)是屬性值。那么x的坐標(biāo)值究竟設(shè)定為多少呢?是 random(400)。本來,這兒的x坐標(biāo)也可以設(shè)為100,200,一個數(shù)字就行了。但是因為我們下雨是隨機的,所以設(shè)定為一個隨機數(shù)。這是一個隨機數(shù)的表達(dá)式。是隨機產(chǎn)生一個小于400的數(shù)字。即從0至399隨機產(chǎn)生一個數(shù)。y的值也是一個隨機數(shù)。產(chǎn)生的是從0至99中的一個數(shù),再減去100,結(jié)果就是從-100到-1中的一個隨機數(shù)。
通過這兩句,就把復(fù)制品的坐標(biāo)定下來了,它會出現(xiàn)在某一個地方。隨著不斷地復(fù)制,不斷地消失,這雨就下個不停了。
這一課學(xué)了兩種很有用的語句,還學(xué)了一點MC的屬性及隨機數(shù)的知識。內(nèi)容比較多,好好消化哦。
第七課:LoadMovie(載入外部影片)
我們?nèi)绻谱魅珉娨曋械漠嬛挟嫷男Ч梢岳眠@個語句來載入另外的swf文件。為了控制外來動畫的位置,我們需要先制作一個空MC。名為loadswf。
現(xiàn)在把這個MC拖入主場景,實例名為load。現(xiàn)在我們看到在主場景中只是一個小圓點。這個小圓點將會成為載入的影片的左上角。因此,你要記下這個小圓點的XY坐標(biāo)。這樣,你就可以知道:將要載入的影片會出現(xiàn)在什么地方,如果不合適,就要把這個小圓點移動一下位置。
現(xiàn)在假定我要載入的SWF文件是jisuanqi.swf。
在主場景放上一個按鈕,寫上代碼:
on?(press)?{
loadMovie("jisuanqi.swf",?_root.load);
}
//當(dāng)按下按鈕后,就載入外來動畫給名為load的MC實例。
如果要變化一下影片的大小,實際上是變化了load的大小。所以,可以再制一個按鈕,寫上代碼是:
on?(release)?{
setProperty("_root.load",?_xscale,?60);
setProperty("_root.load",?_yscale,?60);
}
//這是把這個MC縮小到百分之六十。這里是設(shè)定MC的屬性。_xscale是指原MC的寬,60是百分比。
如果要移動MC的位置:再加一個按鈕,寫上:
on?(release)?{
setProperty("_root.load",?_x,?50);
setProperty("_root.load",?_y,?50);
}
//這是把MC從原來的坐標(biāo)移動到XY都是五十的位置上,也就是說:影片的左上角的位置是50,50。
如果要卸載的話,再制作一個按鈕,寫上代碼:
on?(release)?{
setProperty("_root.load",?_xscale,100);
setProperty("_root.load",?_yscale,?100);
setProperty("_root.load",?_x,?250);
setProperty("_root.load",?_y,?50);
unloadMovie("_root.load");
}
//這里是在卸載之前,先把MC的一切復(fù)原,然后再用卸載語 言,不然的話,下一次再載入就不一樣了。
制作完畢后,保存為loadmv.swf。這個文件一定要與外來動畫jisuanqi.swf放在同一個目錄中。才能有效。
第八課:
前面我們學(xué)了多少個語句啦?我沒數(shù)過,不知你記住了多少?
現(xiàn)在我們要學(xué)一個非常重要非常有用的語句,利用這個語句,我們可以將動作引向當(dāng)前時間線以外的任意時間線,從而控制當(dāng)前影片以外的其他MC。也就是說:我們可以站在這個MC的位置上,去指揮別的MC的動作。這是不是很神奇?它只有一個參數(shù),就是所要控制的那個MC的實例名。比如說下面的按鈕代碼:
on(release){
tellTarget("_root.colorBall"){
gotoAndStop(5);
}
}
//這個按鈕如果按下再松開,就可以命令另外一個名叫“colorBall”的MC跳到它的第五幀并停在那兒。這個第五幀不是主場景的第五幀,而是那個MC的第五幀。也可以改變它的屬性,放大縮小或是透明度或是移動位置。
如果一個影片中有好幾個按鈕,也有好幾個MC,它們都可以利用這個語句來互相指揮。
下面我們來看一個例子來說明這個語句的功能:
這個帽子運動是一個MC。實例名為h。第15幀前是行走,后面是翻滾。我們用了四個按鈕來指揮它。
第一個按鈕是開始運行:
on?(press)?{
tellTarget("_root.h"){
gotoAndPlay(1);
}
}
第二個按鈕是讓它停止在第18幀上:
on?(press)?{
tellTarget("_root.h"){
gotoAndStop(18);
}
}
第三個按鈕是將它放大一倍:
on?(press)?{
tellTarget?("_root.h")?{
setProperty("_root.h",?_xscale,?200);
setProperty("_root.h",?_yscale,?200);
}
}
第四個按鈕是讓它復(fù)原大?。?
on?(press)?{
tellTarget?("_root.h")?{
setProperty("_root.h",?_xscale,?100);
setProperty("_root.h",?_yscale,?100);
}
}
第九課:條件語句if及switch
我們經(jīng)常要判斷根據(jù)什么條件,再來執(zhí)行什么命令。這就是條件語句。它的一般格式是這樣的:
if(條件){
符合條件就......;
}else{
不符合條件就......;
}
例如:
if(a=0){
b=0;
}else{
b=1;
}
//a=0是條件。如果是,那么就讓b也等于0。如果a不是0,那么就讓b=1。
這是在只有一個條件的情況下的語句。要是有好幾個條件,會得出不同的結(jié)果,怎么寫呢?
下面這個例子很好地說明了它的用法。我們想把學(xué)生的不同考分來區(qū)別不同的級別。不足60分的定為D級,60以上不足70分的定為C級,70以上不足85分的定為B級,85以上不足100分的定為A級。下面的例子中,result是學(xué)生考分,grade是級別。
if(result<60){
grade="D";
}else?if(result<70){
grade="C";
}else?if(result<85){
grade="B";
}else?if(result<=100){
grade="A";
}
這樣四個條件,就得出四種不同的結(jié)果。包含了全部的可能性。
下面我們再來看一個特殊的條件語句:switch。
例如:在電腦中,星期日是用0來表示的,星期六是用6來表示的。我們需要把數(shù)字轉(zhuǎn)換成中文。假定我們以day作為星期值的變量。那么,day=0,就是星期天,day=6就是星期六。一共是七個數(shù)字。我們要以week來表示中文。以下語句就是用來把數(shù)字轉(zhuǎn)換成中文的。
switch?(day){
case?0:
week="星期日";break;
case?1:
week="星期一";break;
case?2:
week="星期二";break;
case?3:
week="星期三";break;
case?4:
week="星期四";break;
case?5:
week="星期五";break;
case?6:
week="星期六";break;
}
switch會對后面括號里的條件進(jìn)行判斷,如果條件的值等于case后面的值,就執(zhí)行緊跟的語句塊,執(zhí)行之后,再根據(jù)break,跳出switch語句,結(jié)束執(zhí)行?,F(xiàn)在下面有七個case,只要day的值等于case其中的一個值,它就會執(zhí)行case的冒號后的命令,然后因為有一個break,它就會執(zhí)行后跳出。我們假定day是3,那么,就會到case?3去,執(zhí)行:week="星期三",再跳出去。這樣就得到了week的中文。要注意的是:這里case的值是一個明確的固定的數(shù)值,不適合大于多少小于多少。另外,如果沒有break,它就不會跳出,而繼續(xù)向下看條件來執(zhí)行。
第十課:
循環(huán)語句:for
我們經(jīng)常會用循環(huán)地執(zhí)行同一個命令,直到不需要執(zhí)行為止,這樣,使用循環(huán)語句就很方便了。
我們先來看for的一個例子:
for(i=1;i<100;i++){
duplicateMovieClip("segment","segment"?add?i,i);
}
這是在復(fù)制MC的時候常用的一種寫法。for后面的括號中是它的參數(shù)。第一個參數(shù)是起始值。就是說,這個循環(huán)從i=1開始。第二個參數(shù)是結(jié)束值。這里是i<100,就是到了99之后就終止循環(huán)。第三個參數(shù)是步長值,i++的意思是變量自加1。就是每一次循環(huán)就加上1。這樣我們可以知道,一共會循環(huán)99次。每一次的i值都會加上1,就是1,2,3,……一直到99為止。在大括號里就是執(zhí)行的命令。這里是復(fù)制MC,其實例名叫segment,這個命令我們前面學(xué)過了,括號中的三個參數(shù)中,第一個是要復(fù)制的MC目標(biāo)名稱。第二個是復(fù)制品的名稱。那么這兒的復(fù)制品的名稱就是segment1,segment2,……一直到segment99為止。第三個參數(shù)是復(fù)制品的深度。每一個復(fù)制品的深度都跟它的編號是一樣的。這樣,一共會產(chǎn)生九十九個復(fù)制品。這就是利用了循環(huán)語句。
第十一課:關(guān)于MC的路徑
我們經(jīng)常看到這樣的代碼:
on?(press)?{
tellTarget?("_root.h")?{
setProperty("_root.h",?_xscale,?200);
setProperty("_root.h",?_yscale,?200);
}
}
這里面的_root就是一個MC的路徑。因為我們?nèi)绻笓]一個MC,就要指明這個MC在什么位置上。在FLASH中,有主場景,自然就有分場景,也就是說:主場景是最高級,其它MC是主場景的下級,有時MC還有自己的下級MC。所以,我們在調(diào)用一個MC的時候,除了要標(biāo)明MC的實例名以外,還得標(biāo)明它的路徑,也就是沿著什么路可以找到它?
在一般情況下,我們把主場景稱為_root,在英語里是“根”的意思。也可以稱為_level0,是第零層的意思。這兒的層跟圖層是沒有關(guān)系的。我們可以理解為影片層,就是影片已經(jīng)做成之后所組成的一個總的層。主場景里可以有許多的圖層。但做完了之后,只能組成一個主場景電影層。也可以理解成只有一條時間軸。而一個MC有它自己的一條時間軸,盡管它也有好多個圖層。那么,這個MC也成為獨立的一個電影層。
為了說明問題,我們來假定一下:
1、主場景;
2、MC1,它里面還包含一個MCa。
3、MC2。
第一個級別是主場景。第二個級別是MC1和MC2,它們倆是平級的。第三個級別是MCa,因為它是包含在MC1的里面的。
現(xiàn)在我們先學(xué)用絕對路徑來表示:
表示MC1的寫法是:_root.1
如:
tellTarget?("_root.1"){
setProperty("_root.1",?_xscale,?200);
setProperty("_root.1",?_yscale,?200);
}
表示MCa的寫法是:?_root.1.a
如:
tellTarget?("_root.1.a"){
setProperty("_root.1.a",?_xscale,?200);
setProperty("_root.1.a",?_yscale,?200);
}
至于MC2的寫法請你來寫吧。這就是絕對路徑的表示法,它總是從主場景開始向下數(shù)的。也就是說:總是先站在主場景的位置來挨著排下去的。絕對路徑是比較好理解的。
下面我們來看一下相對路徑:
如果每一次都要從主場景開始排起,有時會感到反而麻煩。因為有時,我們不是在主場景來寫代碼,而是在下一級寫代碼,也就是說:假如我們是站在MC1的立場上,要指揮下一級MCa,就沒有必要再回到主場景來排隊,只要寫成“/MCa"就可以了。如寫在MC1上的代碼是:
tellTarget?("/a"){
setProperty("/a",?_xscale,?200);
setProperty("/a",?_yscale,?200);
}
注意:這幾句代碼不是寫在主場景的幀上面的,而是寫在MC1身上的。你會在MC上寫代碼嗎?這就跟在按鈕上寫代碼差不多,先點中MC1然后打開寫代碼的面板。
那么,如果要在MCa上寫代碼來指揮它的上一級MC1,怎么寫呢?上一級的相對路徑的寫法是:“../”。就是寫成:
tellTarget?("../"){
setProperty("../",?_xscale,?200);
setProperty("../",?_yscale,?200);
}
而在點語法中,可以寫成:“_parent”。如:
onClipEvent(load){
_parent._xscale=150;
_parent._yscale=150;
}
相對路徑的出發(fā)點不是在主場景,而是從自身所在點出發(fā)。這就是與絕對路徑不同的地方。如果你覺得有點糊涂的話,不如干脆全部采用絕對路徑則更清楚簡單了。
|