AS3 0中的區塊設計

2021-04-14 22:58:39 字數 1790 閱讀 4676

這篇文章主要是講解如何基於as3來製作乙個區塊遊戲,但仍然保持oop的結構。

這篇文章的**能夠被諸如flexbuilder,flashdevilop這裡的編譯器解釋,當然flash ide也可以,但是要在主場景上指明main類。

該應用程式需要乙個xml檔案儲存地圖資料,它將會被轉換為實際地圖顯示在螢幕上。這裡面是沒有什麼互動的,不過是區塊的放置位置和管理。

程式需要x類,每個來都負責不同的功能。

1、main類:管理所有的類和所建立的例項。

2、xmlloader:載入乙個xml檔案並儲存他的資料。

3、parser:解析xml到乙個二維的陣列當中。

4、screen:接收parser所建立的數字來構造乙個區塊的矩陣。

5、tile:單個區塊,儲存型別x位置和y位置。

在最後我將會給出main檔案:

第乙個類:xmlloader

package tools

catch(e:error)

_loader.addeventlistener(event.complete,onloadxml);

}private function onloadxml(event:event):void  

public function get xml():xml}}

這個類接收xml檔案的路徑,嘗試載入它。xml被載入以後,類將會dispatch乙個事件,以便建立xmlloader例項的類能夠知道載入已經完成了,我們可以繼續了。(這是乙個非即時的操作,所有我們需要乙個事件機制)。

請注意:有乙個事件監聽來監聽載入的操作,還有乙個事件的派遣-main 來接收該事件。第乙個市內置的,第二個是同其他的類來連線。載入了xml資料以後,xmlloader 的例項會儲存該資料然後通過其他的類中的乙個指定的getter函式來獲得它。另乙個應該注意到的是try & catch

來處理一些特定的錯誤事件,這樣可以防止乙個錯誤資訊在執行中傳送給使用者。

第二個類:parser

解析的工作是非常的簡單的,-獲得乙個xml物件,然後分割成行,每一行對應乙個數字。在完成了劃分以後,這個類的乙個例項會儲存陣列中的行以便其他的類能夠讀取它。這也是由乙個getter函式來完成的。_rows陣列是乙個二維陣列。根據xml檔案,其中的每乙個單元都被描述成一行,每行都有若干的數字。

接收xml檔案的類的結構如下所示:

package tools

private function getrows():void

public function get type():uint

public function get locationx():uint

public function get locationy():uint}}

main 類

最後,我們讓所有的東西都執行起來:

package catch(e:error)

// wait till the xmlloader will finish loading the data

_xmlloader.addeventlistener(event.complete,onxmlready);      

}private function onxmlready(event:event):void}}

需要注意的是在建立了xmlloader以後,需要等到xmlloader說"ok-done"才能做起他的事情。

操作AS3 0中的timmer 物件

在這裡我只想談一下時間間隔函式的變化,在as2中有兩個時間間隔函式,我們最常用的可能就是setinterval 另外還有是settimeout 但在as3中,多了乙個timer類,也是用來進行間隔時間呼叫函式的。與前兩者不同的是,這個函式有一些屬性和方法,可以控制呼叫過程。具體的講,有四個屬性和三個...

AS3 0中獲取物件的類

object有乙個constructor的動態屬性可以返回物件的類,例如 1 package213 14 但是有幾點要注意 proxy類會在呼叫constructor屬性時丟擲異常 error error 2088 proxy 類不實現 getproperty。它必須由乙個子類覆蓋。at error...

AS3 0的聲音合成

以前,在flex2剛發布時,有人說as3.0能夠編輯聲音,方法是用bytearray與soundmixer。但被證明這是假的,soundmixer能讀不能寫!但現在新的方法出現了!把聲音用swf的格式寫到bytearray裡,再用loader讀進來,最後把它變為sound!實現這個的是andre m...