我有一個類Pawn,它是遊戲中所有「角色」的基類,具有健康等屬性,可以移動並死或說話等。擴展這個類的一個類是「男孩」類。 「男孩」級是玩家在這個遊戲中控制的角色。在AS3中使用接受不同類型參數的方法創建子類
爲了控制字符「狀態」,創建了狀態類。這些方法具有onEnterState,onStateTick和onLeaveState等方法。一個狀態可以用來表示蹲下,走路,跳躍,並且將發送諸如「keyPressed」「< - 」之類的消息來處理或忽略,因爲它選擇了。
我的問題是,我的基地「狀態」類有方法如下:
function onEnter (pawn:Pawn) :void;
function onLeave (pawn:Pawn) :void;
function onGameTick (pawn:Pawn) :void;
function onAnimEnd (pawn:Pawn) :void;
正如你可以看到這實際上是一個接口,但我沒有嘗試基類第一,直到它變得明顯的ActionScript3沒有按不喜歡抽象類。
因此,無論如何,一個類「BoyJumpState」顯然需要擴展/實現這個類/接口,以確保公共方法在那裏進行交互,然而,這阻礙了ActionScript不允許我擴展,說,這個:
public override function onEnter (boy:Boy) :void { trace("Hey"); }
這是拒絕編譯時,因爲它不符合藍圖(即它不接受一個典當)。但是,我需要它接受一個男孩,因爲方法體中需要使用特定於該類的方法!
我搞清楚我原來的接口是問題,那我應該指定的參數應該改爲延長典當實際上並不需要是一個,但我沒有看到任何方式來實現這個動作腳本。
......或者我可能完全處於錯誤的軌道上,在這種情況下,會非常感激地收到建議!
我意識到我不能繼承繼續,但我所做的遊戲更多的是面向對象編程的實踐,因爲它比我以前的規模更大。然而,我已經擺脫了我的舒適語言(Java),我真的超越了自己在這裏做什麼。
任何幫助,將不勝感激,謝謝。
你沒有得到某種抽象類爲你服務的具體問題是什麼?我感到困惑,因爲無論何時將基類應用於庫元件,基類都充當抽象類,並且爲庫元件生成的類是特定的實現。這只是一個例子,但我始終使用Abstract/Base類。 –