ActionScript扩展类(嵌套建议)

时间:2014-01-10 19:49:39

标签: actionscript-3 flash class oop extends

我在AS2中写过Pacman,现在我想使用类将其移植到AS3 ....

我正在寻找我的方法上的建议来解决这个问题(感觉我已经出错了)......

我制作了一个控制台类,它包含程序输出和一个舞台的容器,其中包含迷宫类(带点和分数),然后是Pacman类和怪物类,以及水果类。 / p>

(image output for clarity)

public class Console Extends MovieClip
    // creates a stage and consoles for development (extending MovieClip) 
    // (see image link below).

    public var gameStage:MovieClip = new MovieClip();
    // to gameStage I've added the maze and all the dots (working fine).

public class Maze Extends Console
    var maze:maze1 = new maze1(); // simplified for here
    gameStage.addChild(maze);

public class Monsters Extends Maze
    // bla bla bla

public class Fruits Extends Monsters
    // bla bla bla

public class Pacman Extends Fruits
    var pac:MsPacman = new MsPacman(); //from library
    gameStage.addChild(pac);
    //now I just add this Pacman Class to the main timeline
    //...and the ALL the others are added through inheritance.

我正在尝试让每个班级都能在Console类中访问公共gameStage MovieClip,而无需创建多个控制台实例。

所以......我应该像这样将每个类嵌套在'堆栈'中,每个类都扩展前者,最后一个是Pacman类,然后将它添加到主时间轴?还是我要去黑暗的小巷?我看过MVC模式,对我来说很困惑。

我是否在没有意识到的情况下无意中使用了其他一些设计模式?这方向继续下去是否安全?我希望能够正确完成这项工作,以便我可以将其作为未来项目的模板。

非常感谢你的时间。

的Digi

(image output (same as above)) - 正如您可能看到的那样,我将Console用于很多事情,包括一个中心舞台,它在开发过程中帮助了我很多,我只是在生产时禁用它。

1 个答案:

答案 0 :(得分:0)

为什么要一直扩展控制台?控制台真的是游戏对象的一般类吗?它是否像动物 - >狗与狗猫?我非常怀疑,在我看来,它只是一个容器,而不是你的Maze类(没有课程,正如我所见)。在你的情况下,我实际上没有看到使用继承的太多用法。也许我会做一个Collectible类(然后将它子类化为水果和点)。

如果我是你,我会创建一个包含所有这些内容的“游戏”类。它将有一个enterframe事件,它将更新所有资产(怪物,pacman)的位置并检查冲突。其他类中没有其他enterframe事件。我可能会创建一个迷宫课,如果它是必要的,并且仅仅为了Pacman,收藏品等等,可以使用Sprite ...