Actionscript 3 AS3面向对象GUI设计

Actionscript 3 AS3面向对象GUI设计,actionscript-3,user-interface,oop,menu,Actionscript 3,User Interface,Oop,Menu,我正在尝试制作一个带有GUI的小型Flash游戏,它基本上是一个菜单,玩家可以在其中选择某些项目,有点像塔防游戏 让GUI成为一个单体是一个好主意吗?因为很明显,GUI类只能有一个实例 有更好的方法吗?在我看来,系统的其他部分不应该知道您的GUI,因此将其设置为单例是毫无意义的。视图(GUI)应该绑定到某种模型以显示当前状态 一般来说,完全避免单身是个好主意 通过绑定到模型,我的意思是: class MyGUI { ... public function set game(g:G

我正在尝试制作一个带有GUI的小型Flash游戏,它基本上是一个菜单,玩家可以在其中选择某些项目,有点像塔防游戏

让GUI成为一个单体是一个好主意吗?因为很明显,GUI类只能有一个实例


有更好的方法吗?

在我看来,系统的其他部分不应该知道您的GUI,因此将其设置为单例是毫无意义的。视图(GUI)应该绑定到某种模型以显示当前状态

一般来说,完全避免单身是个好主意

通过绑定到模型,我的意思是:

class MyGUI
{
    ...
    public function set game(g:Game):void {
        g.addEventListener('pointsChanged', function(e:Event):void {
            ptsLabel.text = g.points.toString() + " points";
        })
    }
}

class Game extends EventDispatcher
{
    private var _points:int = 0;

    public function get points():int {
        return _points;
    }

    public function set points(points:int):void {
        _points = points;
        dispatchEvent(new Event('pointsChanged'));
    }
}

在我看来,系统的其他部分不应该知道您的GUI,因此将其作为一个单例是毫无意义的。视图(GUI)应该绑定到某种模型以显示当前状态

一般来说,完全避免单身是个好主意

通过绑定到模型,我的意思是:

class MyGUI
{
    ...
    public function set game(g:Game):void {
        g.addEventListener('pointsChanged', function(e:Event):void {
            ptsLabel.text = g.points.toString() + " points";
        })
    }
}

class Game extends EventDispatcher
{
    private var _points:int = 0;

    public function get points():int {
        return _points;
    }

    public function set points(points:int):void {
        _points = points;
        dispatchEvent(new Event('pointsChanged'));
    }
}

谢谢你的回答:-)但是我不确定你所说的“GUI应该绑定到某种模型”是什么意思。所以你的模型在AS3项目中经常是一个单独的项目-它存储关于游戏状态的各种细节。GUI从这个模型中提取信息,但它本身只是另一个视图——您应该从GUI中调度GUI事件,并让控制器在其他视图中实现它们。这有意义吗?您应该看看MVC架构,注意耦合方向:视图知道模型,但模型不知道视图。这个视图->模型耦合可以让你在不影响模型的情况下对视图进行更改。谢谢你的回答:-)但是我不确定你所说的“GUI应该绑定到某种模型”是什么意思。所以你的模型在AS3项目中经常是单例的-它存储关于游戏状态的各种细节。GUI从这个模型中提取信息,但它本身只是另一个视图——您应该从GUI中调度GUI事件,并让控制器在其他视图中实现它们。这有意义吗?您应该看看MVC架构,注意耦合方向:视图知道模型,但模型不知道视图。此视图->模型耦合允许您在不影响模型的情况下更改视图。