基于 Flash ActionScript 1.0 編寫(xiě)的擋板游戲 作者:Pom 翻譯:ShuhanKuang 本文章發(fā)表已經(jīng)獲得作者的允許, 原文章地址:http://www.kirupa.com P/S:里面的教程都很棒的,有興趣的可以到那里學(xué)習(xí)學(xué)習(xí)。^_^。還有就是翻譯過(guò)程中難免出現(xiàn)錯(cuò)誤,希望指出和更正。
正如你所知,在FLASH中有很多方法檢測(cè)碰撞的,有一個(gè)方法叫hitTest(),在自帶字典里有兩中解釋:
myMovieClip.hitTest(target) // 電影剪輯和電影剪輯的檢測(cè) myMovieClip.hitTest(x, y, shapeFlag) //點(diǎn)和電影剪輯的檢測(cè)
如果你曾經(jīng)用過(guò)這兩個(gè)個(gè)方法,你肯定會(huì)發(fā)現(xiàn)它的局限:第一函數(shù),只能檢測(cè)兩個(gè)包含剪輯的最小框的碰撞,(圖中包含剪輯的藍(lán)色矩形),在我下面做的簡(jiǎn)單的示例中,你可以得知當(dāng)剪輯不是規(guī)則的矩形的時(shí)候,這樣的檢驗(yàn)是沒(méi)有什么作用的,(例如兩個(gè)圓,或兩條角度不同的直線)。
(圖1)
你可以得到這個(gè)結(jié)論,F(xiàn)LASH檢測(cè)了“非”碰撞。(“非”這里是自己想的,畢竟水平有限不知道怎么解釋好) 第二個(gè)函數(shù)能進(jìn)一步準(zhǔn)確地檢測(cè)碰撞,但它只局限在一個(gè)電影剪輯和點(diǎn)的范圍內(nèi)。 下面還有一個(gè)關(guān)于hitTest()方法的問(wèn)題。我將它叫做“Where-did-my-hitTest-go?”(消失的碰狀?~_~翻譯過(guò)來(lái)不好聽(tīng)的,呵呵),讓我們嘗試檢測(cè)一個(gè)球和一面墻(這里用垂直的線表示)是否發(fā)生了碰狀。
(圖2)
你可以從上面的圖看出,在每一幀中都沒(méi)發(fā)生物理的碰狀,就算球已經(jīng)穿過(guò)了墻壁,這是因?yàn)榕鰻钍腔趲瑱z測(cè)的。很幸運(yùn)地,這個(gè)問(wèn)題可以得到解決,或者至少可以說(shuō)這個(gè)問(wèn)題不會(huì)在我們做游戲過(guò)程中帶來(lái)太多的麻煩。心急了吧?那么讓我們開(kāi)始有趣的部分吧
游戲:
我們要做的事是創(chuàng)建一個(gè)簡(jiǎn)單的PONG游戲,那么先看看下面的一個(gè)簡(jiǎn)單的例子,你可以測(cè)試一下效果
當(dāng)你看到第一個(gè)原文件(名字叫pong_00.fla),你可以發(fā)現(xiàn)里面只有兩層:
1:code,里面調(diào)用了一個(gè)外部的AS文件 2:object ,里面包含了一個(gè)名為bar的擋板和名為ball的球
可能有一部分的人不那么熟悉#include的語(yǔ)法,通過(guò)運(yùn)用這個(gè)語(yǔ)法好處就是,你能用外部編輯器修改你的代碼,例:如Scite|Flash、SE|PY,而不局限在FLASH的動(dòng)作面板,如果你曾經(jīng)過(guò)這個(gè)語(yǔ)法,那么給你帶來(lái)的結(jié)果一定不會(huì)讓你失望的,當(dāng)然,如果你不喜歡用這個(gè)方法,那么你就要?jiǎng)h去#include這一句和復(fù)制代碼到FLASH的動(dòng)作面板里面。
為了保證代碼的簡(jiǎn)潔和容易更新,我們應(yīng)該為我們的游戲?qū)懸恍┖?jiǎn)單的類。(這里用的是as1.0,如果你有時(shí)間和想要訓(xùn)練自己,建議你將代碼寫(xiě)成2.0的)。但是先不要害怕,你沒(méi)必要熟悉了oop(面向?qū)ο缶幊蹋┎拍芸疵靼走@個(gè)游戲的代碼。
出處:藍(lán)色理想
責(zé)任編輯:qhwa
上一頁(yè) 下一頁(yè) 基于 as1.0 的擋板游戲 [2]
◎進(jìn)入論壇Flash專欄版塊參加討論
|