В чем разница между ActionScript 2.0 и ActionScript 3.0

#actionscript-3 #actionscript #actionscript-2

#actionscript-3 #actionscript #actionscript-2

Вопрос:

Каковы основные различия между версиями?

Ответ №1:

Помимо изменений в библиотеке, Actionscript 3 скомпилирован для и запущен на совершенно другой виртуальной машине (AVM2), которая была переписана с нуля. Сообщается, что он выполняет скомпилированный код AS3 в 10 раз быстрее, чем code script, скомпилированный для виртуальной машины AVM1.

Вам следует ознакомиться с этим документом для получения списка различий между AS2 и AS3, поскольку они не могут быть объяснены лучше на SO 🙂

Комментарии:

1. И нетехническое дополнение: AS2 — это устаревший язык, AS3 — текущий язык. Новые функции, которые добавляются во Flash Player, обычно недоступны из AS2.

Ответ №2:

В AS3 вы можете структурировать и организовать свое приложение намного более стратегически. Это быстрее, аккуратнее и гораздо более рекомендовано, чем AS2. Основное отличие заключается в том, что вы можете разрабатывать flash-приложения с гораздо более сильным влиянием ООП, чем в AS2.

AS3 значительно упрощает использование стороннего кода, такого как Tweenlite от Greensock, Papervision 3D и box2d.

В AS2 вам пришлось бы использовать prototype, чтобы беспорядочно достичь того, что класс может сделать для вас в AS3. Пример:

Прототип AS2:

 MovieClip.prototype.flip = function():Void
{
    this._rotation  = 180;
}
  

Класс AS3, который можно использовать в качестве базового класса для всех ваших видеоклипов:

 package
{
    import flash.display.MovieClip;

    public class MyMovieClip extends MovieClip
    {
        public function flip():void
        {
            rotation  = 180;
        }
    }
}
  

Хотя при создании вашего собственного класса требуется больше кода, теперь вы можете расширить этот класс и просто вызвать flip() изнутри него flip() метод. В AS2 вам пришлось бы находиться в той же области, что и ваша MovieClip.prototype.flip() функция, чтобы получить к ней доступ, что может привести к беспорядку.

Вот сравнение AS2 и AS3 для создания видеоролика, добавления его на сцену и последующего использования вашей flip() функции:

AS3:

 var mc:MyMovieClip = new MyMovieClip();
mc.flip();

addChild(mc);
  

AS2::

 MovieClip.prototype.flip = function():Void
{
    this._rotation  = 180;
}
var mc:MovieClip = attachMovie("your_library_mc", "newname", this.getNextHighestDepth());
mc.flip();
  

Ответ №3:

Как заявили несколько других людей, AS2 и AS3 — это разные языки и даже выполняются на разных виртуальных машинах в flash Player, AVM и AVM2 (виртуальная машина Actionscript).

Однако большая часть кода AS2 имеет прямые эквиваленты AS3, а в случае кода временной шкалы эти имена обычно совпадают (например, gotoAndPlay, stop и т.д.). Вы можете найти удобную шпаргалку здесь:http://actionscriptcheatsheet.com/downloads/as3cs_migration.pdf Как правило, если нет эквивалента AS3 тому, что у вас есть в вашем AS2, есть лучший и более надежный способ.

Существует также книга под названием «Руководство по миграции ActionScript 3.0», с которой вы, возможно, тоже захотите ознакомиться.

Также вы можете заставить коды AS2 и AS3 взаимодействовать друг с другом через LocalConnection. В Интернете есть множество инструкций по этому поводу.