Что лучший подход к перемещению существующего ранее проекта от Flash 7/AS2 до Flex/AS3?

Для этого я попытался ответить выше, многие из них не работают в последней версии Angular (6 или новее)

Я использую элемент управления Material, который требует изменений после первого связывания.

    export class AbcClass implements OnInit, AfterContentChecked{
        constructor(private ref: ChangeDetectorRef) {}
        ngOnInit(){
            // your tasks
        }
        ngAfterViewInit() {
            this.ref.detectChanges();
        }
    }

Добавление моего ответа так, это помогает решить определенную проблему.

5
задан Herms 5 September 2008 в 16:04
поделиться

5 ответов

Некоторые известные проблемы я видел при попытке преобразовать большое количество классов AS2 к AS3:

Именование пакета

class your.package.YourClass
{
}

становится

package your.package
{
    class YourClass
    {
    }
}

Импорт требуется

Необходимо явно импортировать любые внешние используемые классы - относящийся к ним их полностью определенным именем, больше не достаточно.

Методы интерфейса не могут быть маркированы 'общедоступными'

Это имеет общий смысл, но AS2 позволит Вам сделать это поэтому, если у Вас будет кто-либо, который они должны будут быть удалены.

Явное ключевое слово 'переопределения'

Любые функции, которые переопределяют функцию родительского класса, должны быть объявлены с ключевым словом переопределения, во многом как C#. В том же направлении, если у Вас есть интерфейсы, которые расширяют другие интерфейсы и повторно объявляют функции, те переопределения должны быть удалены (снова, поскольку с общественностью, эта нотация не имела смысла так или иначе, но AS2 позволяют Вам сделать это).

Весь Flash встроенный измененный материал

Вы сослались на это выше, но это теперь flash.display. MovieClip вместо просто MovieClip, например. Существует много специфических особенностей в этой категории, и я не стал достаточно далеким для нахождения их всех, но там собираюсь быть большим количеством раздражения здесь.

Заключение

Я не взялся за работу над этим преобразованием на грани успеха, но я смог в течение часов записать быстрый инструмент C#, который обработал каждый аспект этого кроме ключевого слова переопределения. Автоматизация импорта может быть хитрой - в моем случае пакеты, мы используем всех, запускаются с нескольких пакетов корневого уровня, таким образом, их легко обнаружить.

6
ответ дан 14 December 2019 в 01:22
поделиться

Вот некоторые дополнительные ссылки для перемещения от AS2 до AS3:

Предоставьте Кожевникам Вводный Семинар AS3 slidedeck http://gskinner.com/talks/as3workshop/

Lee Brimelow: 6 Причин изучить ActionScript 3 http://www.adobe.com/devnet/actionscript/articles/six_reasons_as3.html

Colin Moock: Существенный ActionScript 3 (рассмотрел "библию" для Разработчиков ActionScript): http://www.amazon.com/Essential-ActionScript-3-0/dp/0596526946

камеры микрофона

mesh@adobe.com

1
ответ дан 14 December 2019 в 01:22
поделиться

Прежде всего я надеюсь, что Вы не используете eval() в Ваших проектах с тех пор в AS3 нет никакого эквивалента.

Одна из вещей, которые я сделал бы, проходят руководство по миграции Adobe (который является в основном просто перечисленным списком того, что изменилось), по пунктам и попытка выяснить, может ли каждый объект быть изменен через простой поиск и операцию замены (возможно использующий regex) или легче ли просто вручную редактирование случаи для соответствия AS3. Вероятно, в большом количестве случаев (особенно, если, как Вы сказали, объем кода, который будет перемещен, довольно высок) Вы будете лучшими от сценариев изменений (т.е. использование regex поиск и замена) и вручную фиксация любых случаев границы, где автоматизированные изменения перестали работать.

Будьте готовы отложить некоторое время некоторое время отладки и пробежки некоторых тестовых сценариев также.

Кроме того, как другие уже упомянули, пытаясь объединить AS2 SWFs с AS3 SWFs, не хорошая идея и действительно даже не работает, таким образом, необходимо будет определенно переместить весь код в одном проекте сразу.

1
ответ дан 14 December 2019 в 01:22
поделиться

Мой опыт состоял в том, что лучший способ мигрировать на AS3 находится в двух фазах - сначала структурно, и второй синтаксически.

Во-первых, сделайте раунды рефакторинга, где Вы остаетесь в AS2, но добираетесь как близко к архитектуре AS3, как Вы можете. Естественно это включает перемещение всех Ваших кадровых сценариев и #include сценариев в пакеты и классы, но можно сделать более тонкие вещи как изменение всех слушателей события и диспетчеров для следования за потоком AS3 (использующий статические свойства класса для типов событий и регистрирующийся методом, а не объектом). Вы также захотите избавиться от всех своих "встроенных" событий (таких как onEnterFrame), и Вы захотите внимательно изучить нетривиальное взаимодействие мыши (такое как перетаскивание) и взаимодействие клавиатуры (такое как обнаружение, нажата ли клавиша). Эта фаза может быть сделана инкрементно.

Вторая фаза должна преобразовать от AS2 до AS3 - изменяющийся "_x" к "x" и всем API, и так далее. Это не может быть сделано инкрементно, необходимо просто сделать столько, сколько можно одним махом и затем начать фиксировать все ошибки компиляции. Поэтому, чем больше можно сделать в первой фазе, тем большего количества боли Вы избегаете во второй фазе.

Этот процесс работал на меня на довольно крупном проекте, но я должен отметить, что первая фаза требует основательного понимания того, как AS3 структурирован. Если Вы будете плохо знакомы с AS3, то необходимо будет, вероятно, попытаться создать часть функциональности, которую необходимо будет портировать. Например, если Ваше использование унаследованного кода, перетаскивающее цели, Вы захотите попытаться реализовать это в AS3, чтобы понять, как Ваш код должен будет измениться структурно. Если Вы затем осуществляете рефакторинг свой AS2, имея это в виду, заключительные изменения синтаксиса должны пойти гладко.

Самые большие ловушки для меня были частями, которые включили большое присоединение, дублирование и перемещение MovieClips, изменение их глубин, и так далее. Все это не может действительно быть повторно спроектировано для сходства с AS3; необходимо просто делать пюре из всего этого в более новый образ мыслей и затем начать исправлять ошибки.

Одно заключительное примечание - я действительно не волновался бы о материале как импорт и операторы переопределения, по крайней мере, не на грани автоматизации его. При пропавших без вести кого-либо это будет поймано компилятором. Но если Вы пропустите структурные проблемы, то Вы будете страдать от намного большего количества боли.

1
ответ дан 14 December 2019 в 01:22
поделиться

Миграция большего проекта как это от as2 будет больше, чем простой поиск и замена. Новый синтаксис довольно подобен и прост адаптироваться (как lilserf упомянутый), но если ничто иное то, что as3 более строг и новая модель событий, главным образом вероятно, не вызовет много проблем. Вы, вероятно, будете более обеспечены, более или менее переписывая почти все с нуля, возможно используя старый код как руководство.

Миграция от as2-> as3 с точки зрения знания довольно проста все же. Если Вы знаете, что объектно-ориентированный as2, идя дальше к as3 не будет проблемой вообще.

Вы все еще не должны использовать mxml для своего UI, если Вы конкретно не хотите. Mxml просто обеспечивает быстрый способ создать UI (и т.д.), но если бы Вы хотите сделать это сами с actionscript нет ничего останавливающего Вас (это также, вероятно, было бы легче, если у Вас уже есть тот UI в коде as2). Flex (Разработчик) является просто быстрым способом сделать материал, который Вы не можете хотеть делать сами, такие как создание UI и обязательных данных, но по существу это просто создает часть .swf для Вас - нет никакого волшебства к нему ;)

0
ответ дан 14 December 2019 в 01:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: