Архитектура программного обеспечения Flash CS AS3 OOP - PullRequest
2 голосов
/ 27 февраля 2010

Когда вы создаете флешку с нуля с использованием флеш-памяти, в основном это AS3, и вы используете все внешние файлы .as класса, как вы структурируете свое программное обеспечение? какой тип структуры глобальной переменной вы используете? Ваш класс высшего уровня всегда выглядит одинаково? какую строку кода вы используете для программирования присоединения основных вспомогательных экранных объектов к корневому мувиклипу?

Ответы [ 2 ]

2 голосов
/ 27 февраля 2010

В OOP Flash есть два основных способа решения архитектурных вопросов. Стандартная модель, с которой любой серьезный разработчик должен освоиться, использует пользовательские события. В приведенном выше примере ваш windowKnob не знает об этом окне - он просто знает, было ли оно нажато. При нажатии он отправляет событие «knobPressed». Объект Car перехватывает это событие и затем сообщает WindowManager открыть соответствующее окно.

Поначалу с событиями немного сложно работать, потому что не очевидно, как отправить с ними полезные данные. Может быть, ваша ручка может быть нажата вверх или вниз, но отправляет только одно событие. Как же тогда машина узнает, хотите ли вы открыть или закрыть окно? Поскольку вы расширяете класс Event до созданного WindowKnobEvent, а в WindowKnobEvent вы открываете открытое свойство с именем «direction», которое может быть установлено как вверх или вниз. Когда это событие запускается и передается вашему WindowManager, может быть, у вас настроен оператор switch для поведения по-разному в зависимости от свойства direction, это имеет смысл?

Таким образом, в 95% случаев вы захотите использовать модель событий для распространения данных по всему приложению.

Иногда, однако, может быть целесообразно использовать обратные вызовы. Другими словами, вы должны передать объекту WindowKnob ссылку на функцию OpenWindow в вашем WindowManager. Поскольку все функции являются объектами, вы просто должны сказать var openWindowFunction: Function = WindowManager.openWindow, а затем передать openWindowFunction вашему классу регулятора.

ЭТО ОБЩАЯ ПЛОХАЯ ИДЕЯ: это означает, что ваш код тесно связан. Это означает, что вы не можете взять эту ручку и бросить ее в другую машину - вы сломаете ее, так как она больше не сможет содержать ссылку на WindowManager первого автомобиля. Однако при определенных обстоятельствах обратные вызовы могут быть более эффективными. Например, при оптимизации мобильных устройств обычно лучше минимизировать количество создаваемых объектов. Каждое событие, которое вы отправляете, использует память. Несколько эффективнее установить ссылку на обратный вызов один раз, а затем позволить ему работать без создания нового объекта Event каждый раз, когда кто-то нажимает на ручку.

Это помогает? Я имею в виду, что ООП-архитектура AS3 вряд ли можно легко обобщить в одном ответе SO, но я предполагаю, что суть заключается в следующем: узнать, как работают события, и все станет на свои места. Не используйте обратные вызовы, если вы не понимаете последствия.

Ура, и я надеюсь, что это поможет! MYK

1 голос
/ 27 февраля 2010

Программирование AS3 должно быть в большинстве случаев похоже на программирование на C #, Java или каком-либо другом языке OO.

Класс верхнего уровня остается очень похожим и создан по модели Adobe Practices. Это выглядит примерно так:

package 
{
    import flash.display.Sprite;

    public class FirstCircle extends Sprite
    {
        public function FirstCircle( )
        {

        }
    }
}

Присоединение кода к корневому мувиклипу выполняется в среде IDE путем ввода имени вашего класса в основных свойствах Flash.

Не используйте глобальные переменные, используйте свойства как в C # или Java:

private var _prop:String;

public function get prop():String {
    return _prop;
}

Надеюсь, это поможет.

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