該放上幾個(gè)磚塊了在場景中,你也這樣認(rèn)為吧 添加磚塊:
為了在游戲舞臺(tái)范圍內(nèi)加上磚塊,我們需要在庫中的名為磚(brick)塊的電影剪輯,它連接名字為"brick"。
(圖5)
為了能夠簡單地控制難度,我們將會(huì)使用map()方法,(這是我在Klas Kroon from Outside of Society找到的,我要好好感謝他。http://oos.moxiecode.com/)這個(gè)方法十分的簡單,在全新的文件中,我們將要?jiǎng)?chuàng)建一個(gè)二維數(shù)組,數(shù)組里面顯示了磚快的形狀,這樣說不明白?那么就看看下面的例子; map1 = [ [1,1,1,1], [1,1,1,1], [1,0,0,1], [1,1,1,1], [1,1,1,1], [1,1,1,1] ];
這個(gè)數(shù)組將建立如下面形狀的磚塊:
(圖6)
正如你所見的,一個(gè)“1”在數(shù)組中將會(huì)放一個(gè)磚塊在游戲舞臺(tái)中,一個(gè)“0”就會(huì)出現(xiàn)一個(gè)洞,讓我們嘗試下面的代碼 新建一個(gè).as文件,和復(fù)制/粘貼數(shù)組map1,將這個(gè)文件命名為“maps.as",并且在"pong.as"中用#include調(diào)用。我們現(xiàn)在創(chuàng)建一個(gè)名為initBricks()的方法,我們初始化游戲時(shí)同樣調(diào)用它,如下:
Game.prototype.init = function () { trace ("Init method called") ; this.drawArena () ; this.initBar () ; this.initBricks (eval ("map" + this.level) ) ; this.MouseListener.onMouseDown = function () { trace ("The Mouse has been pressed") ; if (! this.Game.isPlaying) { ball.move (this.Game) ; this.Game.isPlaying = true ; } }
initBricks()方法里有一個(gè)參數(shù)(是一個(gè)數(shù)組),map1已經(jīng)在"maps.as"中定義了.
Game.prototype.initBricks = function (myMap) { brick_mc = this.timeline.createEmptyMovieClip ("brick_board",1); //創(chuàng)建一個(gè)空的電影剪輯來擺放磚塊 // 磚塊的大小 var h = 25; var w = 50; var c = 0; //這個(gè)是深度(depth) for (var i in myMap) { for (var j in myMap[i]) { if (myMap[i][j] != 0) { var cl = brick_mc.attachMovie ("brick", "b"+c, c); cl._x = j * w + this.left + w ; cl._y = i * h + this.up + h ; cl.life = myMap[i][j]; c++; //深度增加,因?yàn)橥簧疃炔荒軘[放兩個(gè)電影剪輯的 } } } } ;
首先我們創(chuàng)建一個(gè)空的電影剪輯來擺放我們的磚塊,名為brick_mc,然后我們將會(huì)循環(huán)數(shù)組的所有元素。 如果元素的值不為"0",我們將會(huì)提取一個(gè)磚塊(brick)并將它放在相應(yīng)的位置,如果你還是不明白,那么我建議你看看上面的磚塊的圖形和在腦里思考一下代碼運(yùn)行的原理。 我們最后定義一個(gè)變量叫"life",它是等同于數(shù)組里的值,我們只需要 “1”和“0”,當(dāng)"life"的值是1,只要球碰撞了磚塊,那么磚塊就會(huì)消失。 如果你再次測試游戲,你將會(huì)看到磚塊出現(xiàn)在游戲的舞臺(tái),但球?qū)Υu塊完全不起作用,說到這里,是時(shí)候加上球和磚塊的碰撞檢測了,這是最難的部分,但不要害怕。 好,讓我們繼續(xù)!
出處:藍(lán)色理想
責(zé)任編輯:qhwa
上一頁 基于 as1.0 的擋板游戲 [4] 下一頁 基于 as1.0 的擋板游戲 [6]
◎進(jìn)入論壇Flash專欄版塊參加討論
|