我有一个类,Pawn,它是游戏中所有“角色”的基类,具有诸如健康、可以移动、死亡或说话等属性。扩展它的一个类是“男孩”类。“男孩”类是本游戏中玩家控制的角色。
为了控制字符“状态”,创建了状态类。这些有 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"); }
这在编译时被拒绝,因为它与蓝图不匹配(即它不接受 Pawn)。但是,我需要它来接受一个男孩,因为该类特定的方法需要在方法体中使用!
我认为我的原始界面是问题所在,并且我应该指定参数应该改为扩展pawn 而实际上不需要是一个,但是我没有看到任何在 ActionScript 中实现它的方法。
...或者我可能完全走错了路,在这种情况下,我们将不胜感激地接受建议!
我意识到我无法继续进行继承,但我正在制作的游戏更多的是面向对象编程的实践,因为它比我习惯的更大规模。然而,我已经摆脱了我的舒适语言(Java),我真的超出了我自己在这里做什么。
任何帮助将不胜感激,谢谢。