![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
![]()
Сообщение
#121
|
|
Заряд: 100% ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 1118 Регистрация: 12.03.2008 Пользователь №: 4145 ![]() |
uspechov, уже плотно работал с AS3? Если работал - так что же не устроило то тебя? Не расскажешь?
![]() |
|
|
![]()
Сообщение
#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 -------------------- |
|
|
![]()
Сообщение
#123
|
|
Заряд: 100% ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 1118 Регистрация: 12.03.2008 Пользователь №: 4145 ![]() |
Цитата Может я что-то не понимаю, но этой возможности в AVM2 я что-то не обнаружил. не то? ![]() |
|
|
![]()
Сообщение
#124
|
|
Заряд: 100% ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 1118 Регистрация: 12.03.2008 Пользователь №: 4145 ![]() |
Цитата 36) Зачем buttonMode для мувиклипов? Ты уже не знаешь за что придираться. Цитата Спрашивается: зачем? Новая AVM - новые правила. Цитата В AVM1 автоматический режим включался при добавлении любого из обработчиков кнопок. Ну и зачем нужна вся эта автоматика? Разработчик сам решает что у него button, а что у него "неbutton". |
|
|
![]()
Сообщение
#125
|
|
![]() Ветеран конференции ![]() ![]() ![]() ![]() ![]() Группа: Пользователь Сообщений: 1130 Регистрация: 27.02.2009 Из: Moscow Пользователь №: 9144 ![]() |
37) Run-time ошибки
На самом деле для разработчика наличие проверок ошибок в рантайме (т.е. при исполнении кода флеш-плеером) - неоценимое преимущество. Казалось бы - это круто, что в AVM2 можно поймать кучу ошибок, да еще с их кодами! И не в дебаг-плеере, а в самом обычном. Казалось бы... Но. ЛЮБАЯ из ошибок приводит к выбросу исключения и - внимание - ПРЕРЫВАНИЮ КОДА, если не было обработчика исключения try-catch. Такого в AVM1 практически нет: во-первых, нет такой кучи разжеванных ошибок, а во-вторых - то, что для немца смерть (ошибка для AVM2), для русского хорошо (не является ошибкой для AVM1). Выход - писать код без ошибок (ха-ха три раза) или на каждый вздох обрамлять код try-catch (а код в AS3 и без того громоздок). Иначе - код прервется (!) в самом неожиданном месте и разработчик об этом и знать не будет... -------------------- |
|
|
![]()
Сообщение
#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 -------------------- |
|
|
![]()
Сообщение
#127
|
|
![]() Ветеран конференции ![]() ![]() ![]() ![]() ![]() Группа: Пользователь Сообщений: 1130 Регистрация: 27.02.2009 Из: Moscow Пользователь №: 9144 ![]() |
39) isDown почила в бозе...
Мало того, что Адоб лоханулся с глобальными обработчиками и теперь надо вешать их на стейдж на две фазы! Так еще они прикрыли isDown! Якобы по соображениям их дырявой безопасности ![]() Надо ли объяснять какие возможности открывало это свойство? Я уж не говорю про правую кнопку мыши, но можно было назначить комбинацию клавиш, которую легко проверить в любой момент времени! -------------------- |
|
|
![]()
Сообщение
#128
|
|
![]() Активный участник ![]() ![]() ![]() Группа: Пользователь Сообщений: 456 Регистрация: 3.01.2007 Из: г. Астана. Казахстан Пользователь №: 2309 ![]() |
ничего себе юморок... трудно представить, на что это будет похоже через пару версий...
-------------------- все будет хорошо и еще лучше...
моя фотопленка))) (последнее обновление 7.04.13) |
|
|
![]()
Сообщение
#129
|
|
![]() Ветеран конференции ![]() ![]() ![]() ![]() ![]() Группа: Пользователь Сообщений: 1130 Регистрация: 27.02.2009 Из: Moscow Пользователь №: 9144 ![]() |
Ну там еще isToggled () прибили, но я уж не стал об этом писать, т.к. в общем-то можно было поймать через isDown.
-------------------- |
|
|
![]()
Сообщение
#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 -------------------- |
|
|
![]()
Сообщение
#131
|
|
Новичок ![]() Группа: Новичок Сообщений: 1 Регистрация: 7.09.2011 Пользователь №: 10657 ![]() |
У класса LocalConnection под avm2 есть еще один не очень известный косяк. При загрузке swf написанных на as2 и as3 из разных доменов as2 может вызывать методы as3, а as3 в as2 - нет, хоть что там в allowDomain ни пиши - звезду, домен, айпишник. То есть прикрыли возможность!
|
|
|
![]()
Сообщение
#132
|
|
![]() Ветеран конференции ![]() ![]() ![]() ![]() ![]() Группа: Пользователь Сообщений: 1130 Регистрация: 27.02.2009 Из: Moscow Пользователь №: 9144 ![]() |
У класса LocalConnection под avm2 есть еще один не очень известный косяк. При загрузке swf написанных на as2 и as3 из разных доменов as2 может вызывать методы as3, а as3 в as2 - нет, хоть что там в allowDomain ни пиши - звезду, домен, айпишник. То есть прикрыли возможность! Нет - там все можно, просто есть хитрость. см. п. 33 -------------------- |
|
|
![]()
Сообщение
#133
|
|
![]() Ветеран конференции ![]() ![]() ![]() ![]() ![]() Группа: Пользователь Сообщений: 1130 Регистрация: 27.02.2009 Из: Moscow Пользователь №: 9144 ![]() |
41) Как обычное видео AVM2 убивает
Обычное флеш-видео (.flv) дергает обработчики onMetaData и onCuePoint во флешке. Естественно в новой событийной модели AVM2 возникают эксепшны, которые и рушат всю работу флешки. Конечно, решение есть. И даже несколько вариантов. Но факт характерен - очередная "забота" о разработчиках налицо. -------------------- |
|
|
![]()
Сообщение
#134
|
|
![]() Ветеран конференции ![]() ![]() ![]() ![]() ![]() Группа: Пользователь Сообщений: 1130 Регистрация: 27.02.2009 Из: Moscow Пользователь №: 9144 ![]() |
42) smoothing vs forceSmoothing
Докладываю. В AVM1 у класса MovieClip было много удобных свойств, например - forceSmoothing. А в AVM2 у MovieClip такого свойства нет даже в наследуемых свойствах! Ближайший аналог - свойство smoothing у класса Bitmap И тут, как обычно, вылезают грабли новых "удобств": для сглаживания растра надо лезть теперь в каждый битмап и выставлять smoothing. Но даже не это "замечательно" - если у меня нет доступа к подгружаемому, муву, например, который где-то как-то грузит/рисует битмап, то я не смогу выставить сглаживание у этого мува, а сглаживание по умолчанию отключено! Занавес... -------------------- |
|
|
![]()
Сообщение
#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 имеет основной смысл ТОЛЬКО для мувиков. Для спрайтов - это только придание курсору вида руки - ведь в спрайтах нет кадров и нельзя перейти на кадры состояния кнопки! -------------------- |
|
|
![]()
Сообщение
#136
|
|
![]() Ветеран конференции ![]() ![]() ![]() ![]() ![]() Группа: Пользователь Сообщений: 1130 Регистрация: 27.02.2009 Из: Moscow Пользователь №: 9144 ![]() |
44) Недокументированные фичи
Да, в AVM1 была масса недокументированных вещей (спасибо адобам) типа ASnative. Но в AVM2 стало не лучше. Вот, например, известный метод MovieClip, который ни разу не документирован: addFrameScript(frame_number:uint,function_to_call:Function) Метод позволяет добавлять функцию (ее вызов вернее) в кадр - при прохождении этого кадра, функция будет вызвана. Как говорится, кто знает - есть ли что еще... -------------------- |
|
|
![]()
Сообщение
#137
|
|
Ветеран конференции ![]() ![]() ![]() ![]() ![]() Группа: Flash Zone Team Сообщений: 4836 Регистрация: 10.03.2005 Из: Киев Пользователь №: 5 ![]() |
addFrameScript - интересная функция. Чтобы не руками в кадр на таймлайне добавлять код, а программно задавать вызов функции в нужном кадре. Как видно по этому примеру, Адобовцы продолжили традицию ASnative в новой AVM.
Цитата Как говорится, кто знает - есть ли что еще... Есть - это премиальные фишки, что мы в январе обсуждали. Этот недокументированный функционал доступен не на уровне AS, а на уровне опкодов. -------------------- Best wishes & regards,
MustLive Администратор сайта http://mlfun.org.ua |
|
|
![]()
Сообщение
#138
|
|
![]() Ветеран конференции ![]() ![]() ![]() ![]() ![]() Группа: Пользователь Сообщений: 1130 Регистрация: 27.02.2009 Из: Moscow Пользователь №: 9144 ![]() |
45) XML vs E4X
Вообще, хотя лично мне E4X не удобен и упоминания о нем у меня чаще матерные, но сам по себе факт еще одного способа работы с xml-документами никакого раздражения не вызывает - наоборот, чем больше возможностей, тем лучше. Ну мне не нравится, а кому-то даже очень (встречал только двух таких восторженных ![]() Но как обычно, адобы не просто дали еще одну возможность, а придушили старую. Речь даже не о том, что теперь XML стал XMLDocument, хотя по уму надо бы наоборот. Ладно - это пустяк. Все гораздо хуже. В AVM1 класс XML разумеется динамический (как и все классы в AVM1). И даже если тупой адобовский компилятор не позволял использовать точечный доступ к объекту, то завсегда можно было использовать доступ [ имя свойства ]. Что позволяло хранить в XML-объекте полезные свойства. В AVM2 засады две: 1) XMLDocument (XML -old style) стал НЕдинамическим! Как и XMLNode! Вот это просто уму не постижимо! Зачем? 2) XML (E4X style) хотя и динамический, но с какого-то перепугу final! Не так страшно, но все равно странно. Т.е. адобы вместо того, чтобы проторить широкую дорогу работы с xml двумя способами, на самом деле дорогу сузили и перегородили препонами. -------------------- |
|
|
![]() ![]() |
![]() |
Текстовая версия | Сейчас: 30.05.2013 - 21:57 |