IPB

Здравствуйте, гость ( Вход | Регистрация )

7 страниц V  « < 5 6 7  
Ответить в эту темуОткрыть новую тему
> дцать причин не любить AS3, AVM1 против AVM2
HaWK
сообщение 11.03.2011 - 23:38
Сообщение #121


Заряд: 100%
*****

Группа: Модераторы
Сообщений: 1118
Регистрация: 12.03.2008
Пользователь №: 4145



uspechov, уже плотно работал с AS3? Если работал - так что же не устроило то тебя? Не расскажешь? smile.gif

Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
chingachgoog
сообщение 28.03.2011 - 17:30
Сообщение #122


Ветеран конференции
*****

Группа: Пользователь
Сообщений: 1130
Регистрация: 27.02.2009
Из: Moscow
Пользователь №: 9144



36) Зачем buttonMode для мувиклипов?

В AVM1 было превосходнейшее средство для создания из мувиклипов настоящих кнопок: в мувиклип добавлялись специальные лейблы "_up", "_over", "_down" и как только на мувиклип назначался обработчик мыши, мувиклип автоматически переходил на кадры с этими метками по событиям onRollOut, onRollOver, onPress соответственно (эти события НЕ НАДО было назначать специально!).

Теперь для такого же функционала мувиклипу необходимо назначить свойству buttonMode значение true. Спрашивается: зачем? В AVM1 автоматический режим включался при добавлении любого из обработчиков кнопок. Если обработчик НЕ задан, то НЕ БУДЕТ и переходов по кнопке-клипу. В AVM2 опять маразм: даже если ни один обработчик НЕ задан, но задан buttonMode, то все равно есть переход по меткам.

Кстати, этот buttonMode теперь отвечает и за вид курсора в виде руки, а не стрелки. Зачем столько лишних телодвижений? Чтобы мистер Ли сказал, что это правда, что AS3 требует вдвое больше кода?

Сообщение отредактировал chingachgoog - 28.03.2011 - 17:52


--------------------
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
HaWK
сообщение 28.03.2011 - 17:33
Сообщение #123


Заряд: 100%
*****

Группа: Модераторы
Сообщений: 1118
Регистрация: 12.03.2008
Пользователь №: 4145



Цитата
Может я что-то не понимаю, но этой возможности в AVM2 я что-то не обнаружил.

не то? smile.gif
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
HaWK
сообщение 28.03.2011 - 19:40
Сообщение #124


Заряд: 100%
*****

Группа: Модераторы
Сообщений: 1118
Регистрация: 12.03.2008
Пользователь №: 4145



Цитата
36) Зачем buttonMode для мувиклипов?

Ты уже не знаешь за что придираться.

Цитата
Спрашивается: зачем?

Новая AVM - новые правила.

Цитата
В AVM1 автоматический режим включался при добавлении любого из обработчиков кнопок.

Ну и зачем нужна вся эта автоматика? Разработчик сам решает что у него button, а что у него "неbutton".
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
chingachgoog
сообщение 30.03.2011 - 18:12
Сообщение #125


Ветеран конференции
*****

Группа: Пользователь
Сообщений: 1130
Регистрация: 27.02.2009
Из: Moscow
Пользователь №: 9144



37) Run-time ошибки

На самом деле для разработчика наличие проверок ошибок в рантайме (т.е. при исполнении кода флеш-плеером) - неоценимое преимущество. Казалось бы - это круто, что в AVM2 можно поймать кучу ошибок, да еще с их кодами! И не в дебаг-плеере, а в самом обычном.
Казалось бы... Но. ЛЮБАЯ из ошибок приводит к выбросу исключения и - внимание - ПРЕРЫВАНИЮ КОДА, если не было обработчика исключения try-catch. Такого в AVM1 практически нет: во-первых, нет такой кучи разжеванных ошибок, а во-вторых - то, что для немца смерть (ошибка для AVM2), для русского хорошо (не является ошибкой для AVM1).
Выход - писать код без ошибок (ха-ха три раза) или на каждый вздох обрамлять код try-catch (а код в AS3 и без того громоздок). Иначе - код прервется (!) в самом неожиданном месте и разработчик об этом и знать не будет...


--------------------
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
chingachgoog
сообщение 18.04.2011 - 16:14
Сообщение #126


Ветеран конференции
*****

Группа: Пользователь
Сообщений: 1130
Регистрация: 27.02.2009
Из: Moscow
Пользователь №: 9144



38) Ограничения с работой JavaScript

AVM1 имел уникальный JavaScript API для работы с swf-файлом. Можно было как писать в swf, так и считывать из него инфу.
В AVM2 его убили, оставив только ExternalInterface.

Компилим swf под AS2
код на руте
Код
var ttt="asdfg"


В html-страничке пишем JS код:

Код
window.onload = function() {  
            //node - это наш ФП c swf
            setTimeout(function(){
                alert("= "+node.GetVariable('/:ttt'))
                }, 2000)

        }


Как и надо видим результат!

Но если закомпилить под AS3, то видим фигу (((

PS

ExternalInterface на самом деле работает достаточно убого.
Во-первых - это та же СИНХРОННАЯ работа.
Во-вторых, данных передается на порядок больше - они сериализируются в xml-описание-строку!

Сообщение отредактировал chingachgoog - 21.06.2011 - 13:13


--------------------
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
chingachgoog
сообщение 21.06.2011 - 13:19
Сообщение #127


Ветеран конференции
*****

Группа: Пользователь
Сообщений: 1130
Регистрация: 27.02.2009
Из: Moscow
Пользователь №: 9144



39) isDown почила в бозе...

Мало того, что Адоб лоханулся с глобальными обработчиками и теперь надо вешать их на стейдж на две фазы!
Так еще они прикрыли isDown! Якобы по соображениям их дырявой безопасности mad.gif
Надо ли объяснять какие возможности открывало это свойство? Я уж не говорю про правую кнопку мыши, но можно было назначить комбинацию клавиш, которую легко проверить в любой момент времени!


--------------------
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
DJKOT
сообщение 21.06.2011 - 16:57
Сообщение #128


Активный участник
***

Группа: Пользователь
Сообщений: 456
Регистрация: 3.01.2007
Из: г. Астана. Казахстан
Пользователь №: 2309



ничего себе юморок... трудно представить, на что это будет похоже через пару версий...


--------------------
все будет хорошо и еще лучше...
моя фотопленка)))
(последнее обновление 7.04.13)
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
chingachgoog
сообщение 22.06.2011 - 10:53
Сообщение #129


Ветеран конференции
*****

Группа: Пользователь
Сообщений: 1130
Регистрация: 27.02.2009
Из: Moscow
Пользователь №: 9144



Ну там еще isToggled () прибили, но я уж не стал об этом писать, т.к. в общем-то можно было поймать через isDown.


--------------------
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
chingachgoog
сообщение 1.07.2011 - 15:32
Сообщение #130


Ветеран конференции
*****

Группа: Пользователь
Сообщений: 1130
Регистрация: 27.02.2009
Из: Moscow
Пользователь №: 9144



40) Нет аналога onLoadComplete

В LoaderInfo событие complete попадает ПОСЛЕ того, как отработает событие init и после того как ролик целиком загрузится.
В AVM1 было все по-другому. Событие onLoadComplete у MovieClipLoader отрабатывалось после загрузки ролика, но до того как отработает его первый кадр, т.е. до события onLoadInit.
Событие AVM2 complete более похоже на событие onLoad у MovieClip.

Таким образом у AVM2 НЕТ ВАЖНОГО СОБЫТИЯ - когда клип загружен и доступны его графические элементы (можно определить их свойства), доступен таймлайн (можно переходить по кадрам), можно назначать новые свойства - и все это ДО ТОГО МОМЕНТА когда отработает код первого кадра (произойдет инициализация).

Как обычно - очередное "удобство"...

Сообщение отредактировал chingachgoog - 26.03.2012 - 15:10


--------------------
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
geenny
сообщение 7.09.2011 - 14:12
Сообщение #131


Новичок
*

Группа: Новичок
Сообщений: 1
Регистрация: 7.09.2011
Пользователь №: 10657



У класса LocalConnection под avm2 есть еще один не очень известный косяк. При загрузке swf написанных на as2 и as3 из разных доменов as2 может вызывать методы as3, а as3 в as2 - нет, хоть что там в allowDomain ни пиши - звезду, домен, айпишник. То есть прикрыли возможность!
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
chingachgoog
сообщение 7.09.2011 - 19:43
Сообщение #132


Ветеран конференции
*****

Группа: Пользователь
Сообщений: 1130
Регистрация: 27.02.2009
Из: Moscow
Пользователь №: 9144



Цитата(geenny @ 7.09.2011 - 15:12) *
У класса LocalConnection под avm2 есть еще один не очень известный косяк. При загрузке swf написанных на as2 и as3 из разных доменов as2 может вызывать методы as3, а as3 в as2 - нет, хоть что там в allowDomain ни пиши - звезду, домен, айпишник. То есть прикрыли возможность!


Нет - там все можно, просто есть хитрость.
см. п. 33


--------------------
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
chingachgoog
сообщение 26.03.2012 - 15:25
Сообщение #133


Ветеран конференции
*****

Группа: Пользователь
Сообщений: 1130
Регистрация: 27.02.2009
Из: Moscow
Пользователь №: 9144



41) Как обычное видео AVM2 убивает

Обычное флеш-видео (.flv) дергает обработчики onMetaData и onCuePoint во флешке. Естественно в новой событийной модели AVM2 возникают эксепшны, которые и рушат всю работу флешки. Конечно, решение есть. И даже несколько вариантов. Но факт характерен - очередная "забота" о разработчиках налицо.


--------------------
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
chingachgoog
сообщение 20.06.2012 - 11:27
Сообщение #134


Ветеран конференции
*****

Группа: Пользователь
Сообщений: 1130
Регистрация: 27.02.2009
Из: Moscow
Пользователь №: 9144



42) smoothing vs forceSmoothing

Докладываю. В AVM1 у класса MovieClip было много удобных свойств, например - forceSmoothing.
А в AVM2 у MovieClip такого свойства нет даже в наследуемых свойствах! Ближайший аналог - свойство smoothing у класса Bitmap
И тут, как обычно, вылезают грабли новых "удобств": для сглаживания растра надо лезть теперь в каждый битмап и выставлять smoothing. Но даже не это "замечательно" - если у меня нет доступа к подгружаемому, муву, например, который где-то как-то грузит/рисует битмап, то я не смогу выставить сглаживание у этого мува, а сглаживание по умолчанию отключено!
Занавес...


--------------------
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
chingachgoog
сообщение 20.09.2012 - 13:40
Сообщение #135


Ветеран конференции
*****

Группа: Пользователь
Сообщений: 1130
Регистрация: 27.02.2009
Из: Moscow
Пользователь №: 9144



43) enabled работает нефункционально!

В дополнению к п.36.
В AVM1 enabled работал интуитивно понятно и функционально: выставили его в false - кнопка становилась нерабочей (не реагирует на движения мыши, не включаются обработчики).
В AVM2 это какая-то насмешка над разумом:
1) во-первых это действительно только для режима выставляемого с помощью buttonMode
2) во-вторых, весь смысл теряется: enabled стал отвечать ТОЛЬКО за передвижением по кадрам кнопки, но даже если он false, то обработчики продолжают работать!!!

Вообщем выходит так, что enabled лишь дублирует функционал buttonMode. Ничего нового или уникального enabled не делает. Непонятно тогда, зачем вообще воткнули это свойство? Чтобы могли сказать: как много новых свойств у AVM2 по сравнению с AVM1?

PS

Забавно, что buttonMode имеет основной смысл ТОЛЬКО для мувиков. Для спрайтов - это только придание курсору вида руки - ведь в спрайтах нет кадров и нельзя перейти на кадры состояния кнопки!


--------------------
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
chingachgoog
сообщение 14.03.2013 - 17:33
Сообщение #136


Ветеран конференции
*****

Группа: Пользователь
Сообщений: 1130
Регистрация: 27.02.2009
Из: Moscow
Пользователь №: 9144



44) Недокументированные фичи

Да, в AVM1 была масса недокументированных вещей (спасибо адобам) типа ASnative.
Но в AVM2 стало не лучше. Вот, например, известный метод MovieClip, который ни разу не документирован:

addFrameScript(frame_number:uint,function_to_call:Function)

Метод позволяет добавлять функцию (ее вызов вернее) в кадр - при прохождении этого кадра, функция будет вызвана.
Как говорится, кто знает - есть ли что еще...


--------------------
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
MustLive
сообщение 15.03.2013 - 01:35
Сообщение #137


Ветеран конференции
*****

Группа: Flash Zone Team
Сообщений: 4836
Регистрация: 10.03.2005
Из: Киев
Пользователь №: 5



addFrameScript - интересная функция. Чтобы не руками в кадр на таймлайне добавлять код, а программно задавать вызов функции в нужном кадре. Как видно по этому примеру, Адобовцы продолжили традицию ASnative в новой AVM.

Цитата
Как говорится, кто знает - есть ли что еще...

Есть - это премиальные фишки, что мы в январе обсуждали. Этот недокументированный функционал доступен не на уровне AS, а на уровне опкодов.


--------------------
Best wishes & regards,
MustLive
Администратор сайта
http://mlfun.org.ua
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
chingachgoog
сообщение 5.04.2013 - 18:01
Сообщение #138


Ветеран конференции
*****

Группа: Пользователь
Сообщений: 1130
Регистрация: 27.02.2009
Из: Moscow
Пользователь №: 9144



45) XML vs E4X

Вообще, хотя лично мне E4X не удобен и упоминания о нем у меня чаще матерные, но сам по себе факт еще одного способа работы с xml-документами никакого раздражения не вызывает - наоборот, чем больше возможностей, тем лучше. Ну мне не нравится, а кому-то даже очень (встречал только двух таких восторженных smile.gif )
Но как обычно, адобы не просто дали еще одну возможность, а придушили старую.
Речь даже не о том, что теперь XML стал XMLDocument, хотя по уму надо бы наоборот. Ладно - это пустяк.
Все гораздо хуже.
В AVM1 класс XML разумеется динамический (как и все классы в AVM1). И даже если тупой адобовский компилятор не позволял использовать точечный доступ к объекту, то завсегда можно было использовать доступ [ имя свойства ]. Что позволяло хранить в XML-объекте полезные свойства.
В AVM2 засады две:
1) XMLDocument (XML -old style) стал НЕдинамическим! Как и XMLNode! Вот это просто уму не постижимо! Зачем?
2) XML (E4X style) хотя и динамический, но с какого-то перепугу final! Не так страшно, но все равно странно.

Т.е. адобы вместо того, чтобы проторить широкую дорогу работы с xml двумя способами, на самом деле дорогу сузили и перегородили препонами.




--------------------
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения

7 страниц V  « < 5 6 7
Ответить в эту темуОткрыть новую тему
3 чел. читают эту тему (гостей: 3, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия Сейчас: 30.05.2013 - 21:57