(не следует считать этот топик отрицанием AVM2 и AS3. Хороший флешер должен уметь понимать любой код: от кода в стиле флеш-5 (на объектах), до кода AS3. Но чтобы хорошо в чем-то разбираться, надо знать не только сильные стороны, но и слабые, а также тщательно скрываемые)
Итак, поехали:
1) Адоб сознательно (умышленно) пошла на СДЕРЖИВАНИЕ развития AVM1. От версии к версии (флеш-плеера) AVM1 развивалась. Но адоб выпустила новые продукты - основанные на AVM2 (флеш-редактор-9 - он же CS3 и уже CS4, флексы всех мастей и аир). Развитие AVM1 тормозиться, заставляя переходить сообщество на продукты с использованием AVM2.
Например, интерпретатор AVM1 может считывать байт-коды названия меток кадра. Т.е. в самом ФП эта возможность реализована. А вот реализацию этого в AS1/2 адобовцы добавить "забыли", хотя для AVM2 с AS3 это сделано. И так во многом.
2) AS3 не сохранил преемственности с прежними версиями AS. Это ДРУГОЙ язык. С другими традициями и особенностями применения. По сути, те, кто захочет и кого заставит адоб перейти на AVM2 будут должны выучить новый язык.
3) AS3 имеет незаметные, но фатальные отличия от AS2. Например, в типизации :Void и :void
Пустячок? Но отчего у макромедии с каждым обновлением ФП не скакали зарезервированные слова?
4) AS3 гораздо более НЕГИБКИЙ (какое издевательство над слово флекс), чем AS1. Это касается очень широкого спектра средств языка: наследования, областей видимости, обращения к объектам, формата записи во внешние файлы и т.д. и т.п. (см. ниже)
5) AS3 не позволяет менять родителей класса. AS1 делает это легко, динамически и в любое время.
Например, после этого:
Код
Video.prototype.__proto__=MovieClip.prototype
У объекта Видео начинают работать методы мувиклипа типа swapDepths() и removeMovieClip() !!!
6) Код на таймлайне
7) Новый синтаксис пакетов и классов
8) Нет duplicateMovieClip
9) Необходимость деструкторов
10) Мучения с Sound
11) Выделение искусственных классов
12) Громоздкий хелп
13) Кастрация событийной модели
14) Смешной onReleaseOutside
15) Зачем в AS3 убили arguments.caller
16) Как сыпятся песочницы адоба
17) Восьмеричный запрет
б/н Откровения мистера Ли из адоба
18) Жесткий override
19) Ограничения override
20) Убогий super
21) А есть ли полиморфизм?
22) Немного об ECMAScript
23) Ограничения таймлайна
24) Глобальный объект и глобальная видимость
25) Они убили watch()...
26) Нет глобальных событий
27) Компилятор AVM2 не оптимизирует код
28) valueOf ()
б/н Про вес ФП
29) Виртуализация таймлайна и баги с этим связанные
30) Идиотизм Loader-а
31) "Легкие" глубины.
32) Автосоздание прототипов
33) allowDomain у LocalConnection
34) Неоправдавшиеся надежды по поводу расшаренных объектов
35) Преобразование типа null к числам
36) Зачем buttonMode для мувиклипов?
37) Run-time ошибки
38) Ограничения с работой JavaScript
39) isDown почила в бозе...