该放上几个砖块了在场景中,你也这样认为吧 添加砖块:
为了在游戏舞台范围内加上砖块,我们需要在库中的名为砖(brick)块的电影剪辑,它连接名字为"brick"。
 (图5)
为了能够简单地控制难度,我们将会使用map()方法,(这是我在Klas Kroon from Outside of Society找到的,我要好好感谢他。http://oos.moxiecode.com/)这个方法十分的简单,在全新的文件中,我们将要创建一个二维数组,数组里面显示了砖快的形状,这样说不明白?那么就看看下面的例子; 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] ];
这个数组将建立如下面形状的砖块:
 (图6)
正如你所见的,一个“1”在数组中将会放一个砖块在游戏舞台中,一个“0”就会出现一个洞,让我们尝试下面的代码 新建一个.as文件,和复制/粘贴数组map1,将这个文件命名为“maps.as",并且在"pong.as"中用#include调用。我们现在创建一个名为initBricks()的方法,我们初始化游戏时同样调用它,如下:
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()方法里有一个参数(是一个数组),map1已经在"maps.as"中定义了.
Game.prototype.initBricks = function (myMap) { brick_mc = this.timeline.createEmptyMovieClip ("brick_board",1); //创建一个空的电影剪辑来摆放砖块 // 砖块的大小 var h = 25; var w = 50; var c = 0; //这个是深度(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++; //深度增加,因为同一深度不能摆放两个电影剪辑的 } } } } ;
首先我们创建一个空的电影剪辑来摆放我们的砖块,名为brick_mc,然后我们将会循环数组的所有元素。 如果元素的值不为"0",我们将会提取一个砖块(brick)并将它放在相应的位置,如果你还是不明白,那么我建议你看看上面的砖块的图形和在脑里思考一下代码运行的原理。 我们最后定义一个变量叫"life",它是等同于数组里的值,我们只需要 “1”和“0”,当"life"的值是1,只要球碰撞了砖块,那么砖块就会消失。 如果你再次测试游戏,你将会看到砖块出现在游戏的舞台,但球对砖块完全不起作用,说到这里,是时候加上球和砖块的碰撞检测了,这是最难的部分,但不要害怕。 好,让我们继续!
出处:蓝色理想
责任编辑:qhwa
上一页 基于 as1.0 的挡板游戏 [4] 下一页 基于 as1.0 的挡板游戏 [6]
◎进入论坛Flash专栏版块参加讨论
|