游戲類:
這個(gè)游戲類只包含了一些游戲中需要到的重要信息和游戲建立的過程中要顯示信息,里面的方法解決了游戲的一些基礎(chǔ)的游戲規(guī)則。這就是第一個(gè)代碼的草稿(pong_00.as):
trace ("Welcome to Pong!") ; //不要我說這句了吧? Game = function () { //定義一個(gè)Game類 trace ("New Game created") ; this.timeline = _root ; //初始變量,指向_root的時(shí)間軸 this.left = 100 ; this.right = 400 ; this.up = 50 ; this.down = 350 ; this.barLevel = 330 ; this.lives = 3 ; } ; Game.prototype.init = function () { trace ("Init method called") ; this.drawArena () ; this.initBar () ; } ; Game.prototype.drawArena = function () { trace ("DrawArea method called") ; var Arena = this.timeline.createEmptyMovieClip ("Arena", 0) ; Arena.lineStyle (0, 0, 100) ; Arena.moveTo (this.left, this.up) ; Arena.lineTo (this.right, this.up) ; Arena.lineTo (this.right, this.down) ; Arena.lineTo (this.left, this.down) ; Arena.lineTo (this.left, this.up) ; } ; Game.prototype.initBar = function () { trace ("InitBar method called") ; bar.StartDrag (true, this.left + bar._width/2, this.barLevel,this.right - bar._width/2, this.barLevel); ball.followBar () ; } ; MovieClip.prototype.followBar = function () { this.onEnterFrame = function () { this._x = bar._x ; this._y = bar._y - this._height / 2 ; } } ;
Pong = new Game () ; Pong.init () ;
承認(rèn)代碼有點(diǎn)長,但我可以肯定里面沒有一塊是復(fù)雜的,讓我們了解一下下面的代碼,這樣才能使我們更加清晰:
Game = function () { trace ("New Game created") ; this.timeline = _root ; //初始變量。 //下面是舞臺(tái)范圍 this.left = 100 ; //左邊界 this.right = 400 ; //右邊界 this.up = 50 ; //上邊界 this.down = 350 ; //下邊界 this.barLevel = 330 ; //擋板的水平位置 this.lives = 3 ; //生命數(shù) } ;
我們這里定義一個(gè)Game的類。實(shí)際上,我們僅僅定義了一些在當(dāng)前時(shí)間軸需要用到的全局變量,里面有游戲舞臺(tái)的邊界,擋板在舞臺(tái)的位置和玩家的生命數(shù)。夠簡單了吧?
Game.prototype.init = function () { trace ("Init method called"); this.drawArena () ; this.initBar (); };
這里我們定義在類中的第一個(gè)方法:init(),當(dāng)我們初始化游戲的時(shí)候要做些什么呢?我們要畫游戲中的墻壁和初始化擋板,以便我們調(diào)用另外的兩個(gè)方法,drawArena()和initBar(), 注意下面的原型,它將會(huì)涉及到游戲的實(shí)例: Game.prototype.drawArena = function () { //這里就是定義Game類的一個(gè)方法函數(shù),是用來畫游戲的舞臺(tái)范圍 trace ("DrawArea method called") ; var Arena = this.timeline.createEmptyMovieClip ("Arena", 0) ; //創(chuàng)建一個(gè)空的電影剪輯 //定義線的顏色和透明度還有就是游戲區(qū)的大小 Arena.lineStyle (0, 0, 100) ; Arena.moveTo (this.left, this.up) ; Arena.lineTo (this.right, this.up) ; Arena.lineTo (this.right, this.down) ; Arena.lineTo (this.left, this.down) ; Arena.lineTo (this.left, this.up) ; //如果不明白上面的函數(shù),你可以按(F1)看看自帶的幫助 } ;
drawArena ()方法的實(shí)質(zhì)是畫線,也就是畫墻壁。因?yàn)橹赶蛄水?dāng)前的時(shí)間軸,所以主舞臺(tái)創(chuàng)建了一個(gè)空的電影剪輯來畫墻壁。 Game.prototype.initBar = function () { trace ("InitBar method called") ; bar.StartDrag (true, this.left + bar._width/2, this.barLevel, this.right - bar._width/2, this.barLevel); ball.followBar () ; } ;
initBar()方法調(diào)用了擋板(bar)的StartDrag()方法,里面包含了復(fù)雜的參數(shù),先面讓我們看看參數(shù)的意義:
(圖3)
擋板(bar)( 注:它的注冊(cè)點(diǎn)在中央 )不能垂直移動(dòng),因?yàn)橛胁蛔兊腳y值,我們同樣調(diào)用了在類中屬性barLevel,所以水平的位置會(huì)一直保持為barLevel=300,根據(jù)圖片的顯示,左邊界的參數(shù)的值為左邊墻壁(this.left)減去一半的擋板長度(bar._width/2 ),如下: this.left + bar._width/2
followBar()是一個(gè)簡單方法,它使得一個(gè)球電影剪輯跟隨指定的電影剪輯(bar)移動(dòng)。 Pong = new Game () ; //定義一個(gè)實(shí)例 Pong.init(); //初始化游戲
我們創(chuàng)建一個(gè)Game類的一個(gè)實(shí)例,名字為Pong,跟著調(diào)用了init()方法,你可以在pong_00.as中看到以上的代碼。
下載fla文件(zip)
出處:藍(lán)色理想
責(zé)任編輯:qhwa
上一頁 基于 as1.0 的擋板游戲 [1] 下一頁 基于 as1.0 的擋板游戲 [3]
◎進(jìn)入論壇Flash專欄版塊參加討論
|