#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. В Интернете есть множество инструкций по этому поводу.