Вопрос

Я пытаюсь сделать небольшую флеш-игру с графическим интерфейсом, по сути, это меню, в котором игроки могут выбирать определенные предметы, вроде игр в Tower Defense.

Было бы неплохо сделать графический интерфейс синглтоном? Потому что, очевидно, может быть только 1 экземпляр класса 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'));
    }
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top