土人系列AS入門教程 -- 對象篇
2024-09-12 17:50:55
供稿:網(wǎng)友
雖然AS不是真正的面向?qū)ο蟮木幊?,但是它也有對象的概念。這個概念貫穿整個AS的始終,所以,對對象的理解,比對語法或者其他的理解更為重要?,F(xiàn)在開始吧:
首先,我們來了解一下路徑,路徑分兩種:絕對路徑和相對路徑。做過html的朋友應(yīng)該知道這個概念。但這里我還是要詳細(xì)解釋一下,我認(rèn)為對路徑的理解要深入,我初學(xué)的時候就是磕在路徑上。
在講路徑之前,有必要先講一下 .語法 : 舉例說明,這里要表示房間里的桌子上的一本書,用 .語法這么表示:
房間.桌子.書
如果要再細(xì)到書上的頁上面的字,很顯然
房間.桌子.書.頁面.字
看明白了吧?我也不懂得怎么說, .語法就是這樣表示對象的,點(diǎn)的前面是其后面的父級。如房間是桌子的父級,桌子的子級就是書。
還是不明白?這樣吧,你把 . 里結(jié)成“里面的”就可以了,這樣就是
房間(里面的)桌子(里面的)書(里面的)頁面(里面的)字
這樣容易多了吧?
現(xiàn)在我開始說路徑了,其中也要夾雜的對象的說明,看:
從例子入手。新建一個Flash文件,然后創(chuàng)建一個MovieClip,MC命名為“MC”,放在主場景里面,然后再創(chuàng)建一個按鈕,放在“MC”里面,然后從庫里面拖一個出來放在主場景,分別給這兩個元素實(shí)例命名(Instance Name , 注意是實(shí)例名不是MC的名字):MC->myMC button->myBtn
現(xiàn)在我們假設(shè)主場景是房子,MC是桌子,按鈕是書,那么分別怎么表達(dá)房子,桌子,書呢?如下
[color=red]_root[/color] 房子
[color=red]_root.myMc[/color] 房子.桌子
[color=red]_root.myMc.myBtn[/color] 房子.桌子.書
這里的 _root 是Flash的關(guān)鍵字,表示主場景的 Timeline 。
很容易理解對不。這里的 房子,桌子,書 都是我們要理解的“對象”。
當(dāng)你找到這個對象后,才能對對象進(jìn)行操作,才能給對象施加方法。比如,我現(xiàn)在要打掃房子,打掃是方法,但對象是房子,表達(dá)式是這樣 :
房子.打掃()
如果你不能正確的表達(dá)房子這個對象,你的打掃也就不能正確的實(shí)施了。
*說明:這里為什么要在打掃后面加()呢?因?yàn)榇驋呤欠椒ú皇菍ο?,為了讓Flash知道這是個方法,我們必須加上(),要不然它會以為房子里面有“打掃”這個東西。
現(xiàn)在,我們可以很容易的對房間里面的各個東西進(jìn)行操作,如
房子.打掃();
房子.木桌子.整理();
房子.玻璃桌子.打碎();
房子.書桌.書.看();
等等,相信你把它們"翻譯"成AS代碼沒什么問題吧 比如要主場景停止播放,就是
_root.stop();
要MC停止播放,就是
_root.myMc.stop();
現(xiàn)在說說相對路徑。還是上面的例子。假如給你下了一個命令:修理房子里面的紅色的椅子。那么怎么表達(dá)呢?就是:
房子.紅色椅子.修理()
無論給你下命令的人在哪里告訴你的,你都會知道要修理的椅子是哪一張。但是他如果這么說:修理你現(xiàn)在坐的這張椅子。紅色的?還是藍(lán)色的?這就要取決于你坐在哪個椅子上了。那么相對的表達(dá)式就是
我坐的椅子.修理();
這里為什么不這么寫呢:房子.我坐的椅子.修理()
這么寫是錯的,因?yàn)槲易囊巫邮遣还潭ǖ?,我說不定把椅子搬到房子外面去坐,那這個表達(dá)式就錯了,因?yàn)橐巫痈揪筒辉诜孔永锩妗?
換過來用Flash實(shí)例說明。現(xiàn)在我想讓主場景下的 myMC 在一開始就不要播放,而是先停止。那么你有什么辦法呢?
我你猜想到的辦法可能就是在主場景放入這個MC的那個幀寫上:
_root.myMc.stop();
這個是對的。但是一旦 myMc 的名字一變,你就得跟著改這句話了。
有沒有辦法不管這個“MC”的實(shí)例名不管怎么改,都會被我們同樣一句的AS找到?當(dāng)然可以,前提是你的AS必須“坐在這個MC上”。
進(jìn)入Mc的編輯狀態(tài) , 在 Mc 的 Timeline 的第一幀寫上
this.stop();
這里的this也是Flash的關(guān)鍵字 , 這個 this 指AS所在的這條 Timeline .
現(xiàn)在不管你這個MC放在哪里,命名是什么,我都不管,反正肯定會停下來。為什么,因?yàn)锳S正“坐在MC上”。
如果你在這里寫上 _root.stop(); 那就錯了。為什么?仔細(xì)想想。
這個 this 就是相對路徑的關(guān)鍵字之一。你必須要仔細(xì)理解它。
另外的一個關(guān)鍵字就是 _parent 。如果你理解了 this , 那么 _parent 并不難理解。舉例:
還是哪個假設(shè) 房子(_root) , 桌子( mc_zhuozi ) , 書 (mc_shu) 他們的關(guān)系是(括號內(nèi)為mc實(shí)例名)
房子.桌子.書
_root.mc_zhuozi.mc_shu
在 mc_zhuozi 的 timeline 里面寫
_parent.打掃();
意思就是打掃房間;
在 mc_shu 的 timeline 里面寫
_parent.打掃();
意思就是打掃桌子。
_parent 也就是父級。桌子的 _parent 就是房子的 timeline , 書的 _parent 也就是 桌子的 timeline。點(diǎn)的后面的對象 的 _parent 就是點(diǎn)前面的對象。
今次就到這吧,回顧下:
點(diǎn)語法
學(xué)會表達(dá)對象
學(xué)會用絕對路徑和相對路徑表達(dá)對象
如果你都理解了,那么我們就可以進(jìn)入實(shí)戰(zhàn)了.俺喝水去也..(待續(xù))