Когда использовать шаблон State? - PullRequest
0 голосов
/ 16 ноября 2011

Я работаю над проектом Flash, в котором изначально был простой шаблон для анимации, но теперь он имеет различные "состояния" с несколькими шаблонами (не под моим контролем)

Из-за этого мой цикл обновления (ENTER_FRAME) теперь начинает выглядеть примерно так:

private function update():void {
  switch (state) {

    case "intro":
        switch(layoutState) {
            case "large-images":
                // do one animation
            break;

            case "thumbnails":
                // do another animation
            break;

            case "text-on-top":
                // do another animation
            break;
        }
    break;

    case "main":
        switch(layoutState) {
            case "large-images":
                // do another animation
            break;

            case "thumbnails":
                // do another animation
            break;

            case "text-on-top":
                // do another animation
            break;
        }

    break;

    case "outro":
        switch(layoutState) {
            case "large-images":

            break;

            case "thumbnails":

            break;

            case "text-on-top":

            break;
        }

    break;
}

switch(backgroundState) {
    case "black":
        // do something
    break;

    case "white":
        // do something else
    break;
}

}

И мои методы инициализации начинают выглядеть так:

private function initalizeDescription() {
        description = new Description();
        switch(layoutState) {
                case "large-images":
                    // do something to description here
                break;

                case "thumbnails":
                    // do something else to description here 
                    if (backgroundState == "black") {
                        // do one thing
                    } 
                    if (backgroundState == "white") {
                        // do another thing
                    }
                break;

                case "text-on-top":
                    // do something else to description here
                break;
            }
    }

Я извиняюсь за псевдокод, но реальный код довольно длинный.

Является ли это ситуацией, когда было бы лучше использовать шаблон состояний, и если да, то может ли кто-нибудь предоставить (короткий) пример кода, как лучше всего это реализовать?

1 Ответ

1 голос
/ 16 ноября 2011

Вы уверены, что это отличная возможность использовать шаблон состояния! Я использую его всякий раз, когда в противном случае мне пришлось бы начинать вложение операторов switch, в частности, реализацию, рекомендованную в «Шаблоны проектирования ActionScript 3.0» (O'Reilly) .

(извините, я не смог найти свободно доступную версию главы для ссылки, но я думаю, что книга стоит денег.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...