五月综合缴情婷婷六月,色94色欧美sute亚洲线路二,日韩制服国产精品一区,色噜噜一区二区三区,香港三级午夜理伦三级三

您現(xiàn)在的位置: 365建站網(wǎng) > 365文章 > FLASH小游戲開發(fā) 第三節(jié)

FLASH小游戲開發(fā) 第三節(jié)

文章來源:365jz.com     點(diǎn)擊數(shù):175    更新時(shí)間:2008-07-10 08:12   參與評(píng)論

在具體講解CLASS構(gòu)造前,想花點(diǎn)篇幅幫小鳥們理解下CLASS是什么東東。
還是來舉個(gè)例子,有一個(gè)機(jī)械戰(zhàn)士的MC,這個(gè)MC里有機(jī)械戰(zhàn)士完整的構(gòu)造,手腳、身體、武器……
但這個(gè)機(jī)械戰(zhàn)士仍然不能動(dòng),因?yàn)樗皇且痪邫C(jī)械,沒有大腦程序告訴它該怎么走動(dòng),怎么攻擊……


而我們做的“機(jī)械戰(zhàn)士控制.as”的CLASS,綁定在這個(gè)戰(zhàn)士身上。
這個(gè)CLASS可以看作為一個(gè)封閉的黑匣子,里面裝載了指導(dǎo)機(jī)械人行動(dòng)的程序,包括怎么移動(dòng)、怎么攻擊、怎么做事情A、怎么做事情B。
而這一切都是封閉在黑匣子里的,影響不到外界程序,外接程序也影響不到它。是個(gè)獨(dú)立的東西。
這個(gè)黑匣子可以裝載到任何一個(gè)機(jī)械戰(zhàn)士身上,任何一個(gè)機(jī)械戰(zhàn)士軀體的MC一旦綁定上這個(gè)CLASS,就能立即行動(dòng)起來。
而且我們可以給這個(gè)CLASS做個(gè)外界可以調(diào)用的接口。
就像黑匣子上裝了個(gè)可以給外界摁的按鈕,你摁一次它就發(fā)一次絕招。

FLASH小游戲開發(fā) 第三節(jié)(圖一)

象上一節(jié)說的,CLASS模式做游戲可以團(tuán)隊(duì)開發(fā)。我可以讓別人幫我做CLASS,做好我拿來用。我不需要知道他代碼怎么寫的,我只需要知道這個(gè)CLASS能讓這個(gè)機(jī)械人按照什么規(guī)則行動(dòng),有什么按鈕可以讓我摁。
封裝性的好處由此顯示出來了。

再闖關(guān)游戲里,經(jīng)常出現(xiàn)比如畫面上主角一人對(duì)N個(gè)敵人的場面。這些敵人每個(gè)都可以綁定同一個(gè)CLASS。就是說寫了一個(gè)CLASS分別裝載到N個(gè)實(shí)例化的MC中去,而不用每個(gè)敵人都各自寫一段代碼。

FLASH小游戲開發(fā) 第三節(jié)(圖二)

可能其中兩個(gè)敵人的生命和攻擊力不同。這也很簡單,在CLASS里做一個(gè)接收外部傳入生命和攻擊力兩個(gè)參數(shù)的功能,在敵人MC綁定CLASS后,再傳生命和攻擊力兩個(gè)變量的值到MC里即可。

不過要說明,CLASS并不是只能實(shí)例化在MC上,還可以裝在例如Object之類的上面。
比如我們很常用的一個(gè)FLASH本來就有的CLASS:SOUND

mySound=new Sound()
mySound.attachSound("a.mp3")
mySound.start(0,1)

這里我們就可以看作Sound類實(shí)例化了在mySound的上,而attachSound和start都是Sound類的“按鈕”,可以讓外部操控這個(gè)裝載了Sound類的mySound。我們并不知道Sound這個(gè)CLASS內(nèi)部代碼是如何的,但我們知道按鈕可以用來干什么,用的也不是很爽嗎?

前面說了CLASS的基本應(yīng)用,可能有鳥鳥們要問了,我做個(gè)function一樣可以用啊,或者在MC里敲代碼,跟你寫CLASS一樣。
那為什么還要寫CLASS???

那下面我就來寫點(diǎn)CLASS的另外個(gè)重要的特性-“繼承”

先來個(gè)小例子:

隔壁阿三寫了個(gè)類“機(jī)器人控制.as”,里面寫了若干行的代碼,包括“移動(dòng)、跳躍”兩個(gè)個(gè)功能。
我現(xiàn)在也想寫個(gè)類“超級(jí)流氓機(jī)器人.as”,里面包括“移動(dòng)、跳躍、攻擊”三個(gè)功能。

和阿三寫的類比較起來,“移動(dòng)、跳躍”兩個(gè)功能是一樣的啦,我想寫的類只多了個(gè)“攻擊”功能~
于是可以偷懶了。

在我寫的類“超級(jí)流氓機(jī)器人.as”第一行加句簡單的代碼,就可以把阿三寫的類完全COPY過來。(代碼語法命令后面的課程會(huì)講的)
然后我的“超級(jí)流氓機(jī)器人.as”文件里,內(nèi)容就只有段寫“攻擊的代碼”。

看到這里,鳥鳥們又要問了,為什么不直接ctrl+c然后ctrl+v把阿三寫的類復(fù)制過來,然后在里面加?

別人寫的代碼,復(fù)雜的要死,反正我腦子轉(zhuǎn)不過來,不想去分析別人的東西。分析別人寫的代碼,痛苦的來~
日后我再要寫個(gè)“移動(dòng)、跳躍、翻滾”的代碼,我不是還要再ctrl+c然后ctrl+v?多麻煩!
假使我用ctrl+c然后ctrl+v的方法做了,但突然發(fā)現(xiàn)“移動(dòng)”功能里有個(gè)錯(cuò)誤要改……郁悶吧?你要一個(gè)個(gè).as文件改了。而如果是繼承的方法做的,你只要讓阿三把他寫的類修改了,你自己寫的兩個(gè)類就一點(diǎn)不需要改動(dòng)了,因?yàn)椤耙苿?dòng)”部分的功能,是直接繼承過來的嘛~
說到這里,順帶再提下,F(xiàn)LASH里我們經(jīng)常也在用類,只是你感覺不到。
做游戲用到最多,同時(shí)也是FLASH里最重要的類,就是~~~~~~~~~“MovieClip類”!
鳥鳥們不知不覺的就一直在用MovieClip類,比如你有沒有經(jīng)常寫:mc.onEnterFrame..
onEnterFrame就是MovieClip類里的一個(gè)方法,只要是個(gè)MC(自動(dòng)被綁上了MovieClip類),就都能用onEnterFrame。

現(xiàn)在回到第一節(jié)說的那個(gè)天上掉寶地下人物接的游戲。

人物有兩個(gè):小李和鳴人
經(jīng)過分析,這兩個(gè)人物基本控制部分是一樣的,然后就區(qū)別在兩個(gè)人的各自的特殊技能不一樣。

于是我們可以這么做:

先建個(gè)“人物基本控制.as”類
建個(gè)“小李.as”類,第一行一句代碼繼承“人物基本控制.as”類,然后在正文內(nèi)容里寫上小李特殊技能

  1. 建個(gè)“鳴人.as”類,第一行一句代碼繼承“人物基本控制.as”類,然后在正文內(nèi)容里寫上鳴人特殊技能

見圖:

FLASH小游戲開發(fā) 第三節(jié)(圖三)

大家可以看到,“人物基本控制.as”類也是繼承了MovieClip類,因?yàn)橐玫組ovieClip類里的功能嘛~比如人物移動(dòng)要用到onEnterFrame,MC._x,MC._y這點(diǎn)功能。

類的繼承,還可以覆蓋繼承過來類里的方法。
比如A類有move、jump、attack三個(gè)方法
我要寫個(gè)B類,也包括這三個(gè)方法,但是attack這個(gè)方法和A類的attack有點(diǎn)不同,而move、jump這兩個(gè)方法則和A類里的一模一樣。
于是我們寫B(tài)類,第一行先寫句話繼承了A類。然后在正文里把a(bǔ)ttack方法重寫一次,就自動(dòng)覆蓋掉了繼承過來的A類的attack方法。其它的方法就不用寫了,因?yàn)橹苯永^承過來了。

讓我們來換個(gè)思路做上面那個(gè)例子。
直接寫了“小李.as”類,然后讓“鳴人.as”類繼承小李類,正文里只需要把特殊技能方法重寫遍就OK了。

見圖:

FLASH小游戲開發(fā) 第三節(jié)(圖四)

看了那么多概念,小鳥們要想,咋還不教具體怎么寫CLASS呢?
別急啊,下節(jié)里會(huì)簡單的教些的。
其實(shí)我對(duì)這種死東西教學(xué)還是比較頭大的,鳥鳥們也可以自己網(wǎng)上搜下具體CLASS撰寫格式、規(guī)矩和變量、方法類型??隙ū任医痰囊敿?xì)。因?yàn)槲以贑LASS方面也只能算只比小鳥略微胖點(diǎn)點(diǎn)的中鳥啊,哈哈

如對(duì)本文有疑問,請(qǐng)?zhí)峤坏浇涣髡搲?,廣大熱心網(wǎng)友會(huì)為你解答??! 點(diǎn)擊進(jìn)入論壇

發(fā)表評(píng)論 (175人查看0條評(píng)論)
請(qǐng)自覺遵守互聯(lián)網(wǎng)相關(guān)的政策法規(guī),嚴(yán)禁發(fā)布色情、暴力、反動(dòng)的言論。
昵稱:
最新評(píng)論
------分隔線----------------------------

其它欄目

· 建站教程
· 365學(xué)習(xí)

業(yè)務(wù)咨詢

· 技術(shù)支持
· 服務(wù)時(shí)間:9:00-18:00
365建站網(wǎng)二維碼

Powered by 365建站網(wǎng) RSS地圖 HTML地圖

copyright © 2013-2024 版權(quán)所有 鄂ICP備17013400號(hào)