這篇文章主要是講解如何基於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...