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

8 страниц V   1 2 3 > »   
Ответить в эту темуОткрыть новую тему
> дцать причин не любить AS3, AVM1 против AVM2
  • Как продвинуть сайт на первые места?
    Вы создали или только планируете создать свой сайт, но не знаете, как продвигать? Продвижение сайта – это не просто процесс, а целый комплекс мероприятий, направленных на увеличение его посещаемости и повышение его позиций в поисковых системах.
    Ускорение продвижения
    Если вам трудно попасть на первые места в поиске самостоятельно, попробуйте технологию Буст, она ускоряет продвижение в десятки раз, а первые результаты появляются уже в течение первых 7 дней. Если ни один запрос у вас не продвинется в Топ10 за месяц, то в SeoHammer за бустер вернут деньги.
    Начать продвижение сайта
  • Сервис онлайн-записи на собственном Telegram-боте
    Тот, кто работает в сфере услуг, знает — без ведения записи клиентов никуда. Мало того, что нужно видеть свое расписание, но и напоминать клиентам о визитах тоже. Нашли самый бюджетный и оптимальный вариант: сервис VisitTime.
    Для новых пользователей первый месяц бесплатно.
    Чат-бот для мастеров и специалистов, который упрощает ведение записей:
    Сам записывает клиентов и напоминает им о визите;
    Персонализирует скидки, чаевые, кэшбэк и предоплаты;
    Увеличивает доходимость и помогает больше зарабатывать;
    Начать пользоваться сервисом
chingachgoog
сообщение 1.03.2009 - 01:15
Сообщение #1


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

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



В свое время в сети попалась презентация "50 причин перейти на AS3", так, что тут будет (со временем) нечто вроде контрответа, а также разбор отличий AVM1 (AS1/AS2) от AVM2 (AS3).

(не следует считать этот топик отрицанием 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 почила в бозе...

Сообщение отредактировал chingachgoog - 1.07.2011 - 14:38
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
/2D/
сообщение 1.03.2009 - 10:03
Сообщение #2


Участник
**

Группа: Пользователь
Сообщений: 123
Регистрация: 4.11.2006
Пользователь №: 1288



сам с неохотой переходил на as3, но со временем понимаешь что некоторые вещи в нём удобнее делать, да и надежда что adobe в дальнейшем создадут какой-нибудь as4 похожий на as2 очень мала, а As2 все стареет и стареет, ничего нового в нем не появится, поэтому и логично перети на as3 какие-бы недостатки в нём не были, все равно эти недостатки могут быть исправлены более новой версией flash и as.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
chingachgoog
сообщение 1.03.2009 - 23:04
Сообщение #3


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

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



Цитата(/2D/ @ 1.03.2009 - 10:03) *
со временем понимаешь что некоторые вещи в нём удобнее делать


Например, что было неудобно делать в AS1/2 и стало удобно делать в AS3?

Цитата(/2D/ @ 1.03.2009 - 10:03) *
логично перети на as3 какие-бы недостатки в нём не были


Если задача потребует именно новых возможностей AVM2, то да - логично.

----------------------------------------

6) В AS3 код можно писать на кадрах. Но это иллюзия. Код после этого будет преобразован в автоматический класс таймлайна, на котором он написан. Соответственно накладываются ограничения (см. п.23).
Этот класс будет ДИНАМИЧЕСКИМ. А в AS3 динамические классы выполняются МЕДЛЕННЕЕ, чем обычные.

7) В AS3 внешние файлы обязаны располагаться в строгом порядке и иметь строгие имена. А в AS1 инклюдом можно располагать внешние файлы где угодно и как угодно их именовать.
add:
В AS3 тоже есть свой инклюд, только синтаксис без # (это скорее к п.3)
Также новый синтаксис пакетов и классов во внешних файлах, по сравнению с AS2.

Сообщение отредактировал chingachgoog - 10.06.2009 - 12:19
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
/2D/
сообщение 2.03.2009 - 17:09
Сообщение #4


Участник
**

Группа: Пользователь
Сообщений: 123
Регистрация: 4.11.2006
Пользователь №: 1288



Цитата
Например, что было неудобно делать в AS1/2 и стало удобно делать в AS3?

(IMG:http://f.hostq.ru/forum/style_emoticons/default/smile.gif) первое что пришло на ум , это рисование круга, вспомним сколько гемороя с curveTo в As1/2, и drawCircle/Ellipse на as3, намного проще работать со слоями объектов, добавленных на сцену, возможность переноса объекта из одного слоя в другой без удаления и последующего атача клипа итд... , и ещё вот этот знак нижнего поддеркивания "_" перед свойствами объектов(_x _y _width _height _xscale ...) , добавление прослушивателя событий (addEventListener) - тоже удобная вещь, но на as2 по-моему что-то подобное было, наконецто можно регулировать громкость одельных звуков, а не всего ролика сразу, и, о да, в trace можно вписывать несколько переменных через запятую, и и не сувать их в [], да ещё много чего можно придумать..
Я конечно утрирую, говоря про неудобства as1/2, и в as3 можно найти не меньше "неудобств" и не только... (IMG:http://f.hostq.ru/forum/style_emoticons/default/wink.gif)
Цитата
Если задача потребует именно новых возможностей AVM2, то да - логично.

Конечно решающей ролью по крайней мере моего перехода на as3 стало появления "новых возможностей AVM2", и наплевать что там изменилось и как оно работает, главное работает, и больше возможностей (IMG:http://f.hostq.ru/forum/style_emoticons/default/smile.gif)

Вобщем я уже ушел от темы, продолжаем дальше перечислять минуы as3:
8) был удален метод duplicateMovieClip, теперь все параметры дублируемого объекта дублируем вручную (IMG:http://f.hostq.ru/forum/style_emoticons/default/smile.gif)
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
chingachgoog
сообщение 2.03.2009 - 17:34
Сообщение #5


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

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



Цитата(/2D/ @ 2.03.2009 - 17:09) *
(IMG:http://f.hostq.ru/forum/style_emoticons/default/smile.gif) первое что пришло на ум , это рисование круга, вспомним сколько гемороя с curveTo в As1/2, и drawCircle/Ellipse на as3


Это как сказать проще.
На AVM1 это решалось добавлением своего метода drawCircle в прототип мувиклипа. Функционал любой. Но работало сразу с мувиклипом.
А в AVM2 сколько всего надо наворочить, чтобы отрисовать круг (до вызова drawCircle)?

Цитата(/2D/ @ 2.03.2009 - 17:09) *
намного проще работать со слоями объектов, добавленных на сцену


Разве проще?
http://www.kirupa.com/forum/showthread.php...023#post1897023


Цитата(/2D/ @ 2.03.2009 - 17:09) *
возможность переноса объекта из одного слоя в другой без удаления и последующего атача клипа итд...


Вот кстати еще одна причина-расплата за такое полезное (без шуток) новшество:

9) Если вы удали мувик с экрана (из списка Display Objects) это не означает, что мувик вы удалили. Удалить мувик теперь весьма проблемотично: надо удалить ВСЕ ссылки на мувик и дождаться пока GC не потрет его (а GC ведет себя довольно самовольно)


Цитата(/2D/ @ 2.03.2009 - 17:09) *
и ещё вот этот знак нижнего поддеркивания "_" перед свойствами объектов(_x _y _width _height _xscale ...)


Вроде очень удобно - сразу видно, что это геттер-сеттер свойство, а не обычное свойство.

Цитата(/2D/ @ 2.03.2009 - 17:09) *
добавление прослушивателя событий (addEventListener) - тоже удобная вещь, но на as2 по-моему что-то подобное было


Было. Причем очень гибкая вещь в том числе: AsBroadcaster.

Цитата(/2D/ @ 2.03.2009 - 17:09) *
наконецто можно регулировать громкость одельных звуков, а не всего ролика сразу


Почему это в AVM1 нельзя было регулировать отдельные звуки? Еще как можно и нужно (IMG:http://f.hostq.ru/forum/style_emoticons/default/smile.gif)
А вот в AS3 со звуком есть беда. Как вспомню - напишу отдельным пунктом (IMG:http://f.hostq.ru/forum/style_emoticons/default/smile.gif)
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
chingachgoog
сообщение 5.03.2009 - 14:13
Сообщение #6


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

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



Цитата(chingachgoog @ 2.03.2009 - 17:34) *
А вот в AS3 со звуком есть беда. Как вспомню - напишу отдельным пунктом (IMG:http://f.hostq.ru/forum/style_emoticons/default/smile.gif)


10) Ага вспомнил.

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

Чтобы начать играть звук - используем класс Sound
Чтобы поменять громкость - используем класс SoundTransform
А чтобы остановить звук - класс SoundChannel

Чтобы поменять громкость отдельного звука, надо сохранить кучу ссылок, чтобы потом воспользоваться SoundTransform, а если начать играть звук второй раз, то проделать это ЗАНОВО, т.к. канал изменится.

add:

Некоторые файлы, которые нормально без глюков проигрывались в AVM1, начинают жутко глючить в AVM2.

Сообщение отредактировал chingachgoog - 5.03.2009 - 14:19
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
chingachgoog
сообщение 6.03.2009 - 11:21
Сообщение #7


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

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



11) Маразм с разбиением классов на мелкие подклассы настолько крепок, что лезет во все дыры, а не только в класс Sound.
Взять хотя бы класс BevelFilter. Там есть параметр type:String. Это обычная строка! Но в AS3 добавили новый класс, который хранит константы этих строк: класс BitmapFilterType. Это все якобы для "заботы" о программисте. Забота заключается в том, что теперь надо добавлять строчку import flash.filters.BitmapFilterType; в код и потом писать BitmapFilterType.INNER вместо "inner". Зато адоб теперь может сказать, что в AS3 стало еще на один класс больше по сравнению с AS1/2 - это же прогресс!
Конечно, в AS1/2 тоже были константные значения написанные заглавными буквами (по-моему выглядит ужасно, но это дело привычки) как и в AS3. Например, Key.BACKSPACE , вместо простой записи цифры 8, но никто почему-то эти статичные свойства не выделял в ОТДЕЛЬНЫЙ класс.

12) Как результат пункта 11 хелп по AS3 выглядит невероятно неуклюже и громоздко. Но адоб умудрилась и тут его еще больше испортить: теперь весь класс со всеми методами и классами идет одной большой "простыней", а не отдельными страничками по каждому методу и свойству, как в AS1/2.

13) AS1/2 позволял гибко и многообразно использовать события. AS3 предусматривает только лишь модель диспетчеризации событий. В результате код становиться опять-таки громоздким (и из-за этого менее понятным). А с учетом пункта 11 выходит громоздкость в квадрате!
То, что раньше можно было записать кнопка.onPress=Имя_функции (и все понятно), теперь разводиться в несколько строк:
Объект.addEventListener(тип_события, Имя_функции)
Имя_функции(событийный_параметр)

(надо теперь не забыть про соответствие типа_события событийному_параметру)

Но проблемы только начинаются: с удалением кнопка удалялся и метод кнопка.onPress - и никаких проблем с засорением памяти. В AS3 придется удалять ссылку на приемник специальным методом.

14) А теперь попробуйте реализовать на AS3 такой простой метод в AS1/2 как onReleaseOutside!
Скольки строчный уродец вышел?
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
chingachgoog
сообщение 6.03.2009 - 17:33
Сообщение #8


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

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



15) Кто может ответить: зачем в AS3 убили arguments.caller?
Это была мощнейшая штука в AS1/2.
Теперь в исследовательских целях надо вставлять в функцию код
Код
try {
     throw(new Error());
} catch (error:Error) {
     trace(error.getStackTrace());
}

Но именно в исследовательских - т.к. трейс происходит лишь в дебаговой версии ФП.

upd:

Начиная с версии Flash Player старше 11.4 стала доступна частичная трассировка стека и в релизной (не дебаговой) версии ФП.

Сообщение отредактировал chingachgoog - 21.08.2014 - 13:59
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
chingachgoog
сообщение 10.03.2009 - 11:51
Сообщение #9


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

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



16) Огромнейшая дырища в политике безопасности адоба.
Адоб пыхтел несколько лет и прикладывал невероятные усилия для совершенствования политик безопасности, которые наводили ужас на флешеров:

для Loader и прочих загружаемых картинок (в т.ч. для AVM1)
Цитата
Если загруженное содержимое является изображением, его данные не будут доступны для SWF-файлов за пределами изолированной программной среды безопасности, если домен этого SWF-файла не включен в файл политики URL-адресов на исходном домене изображения.


для FileReference
Цитата
Классы FileReference и FileReferenceList ...не разрешают операции записи или чтения в отношении переданного файла. Они закрывают для SWF-файла, который инициировал отправку или загрузку, доступ к переданному или загруженному файлу или месту размещения файла на диске пользователя.


Если первый случай с картинками достаточно просто обходился с помощью нехитрого серверного скрипта, то второй случай был посерьезнее.

Однако адоб сама себя высекла: в AVM2 был добавлен невероятно мощный механизм - ByteArray (который адоб не захотела реализовать в AVM1). По недомыслию или еще по какой причине, ByteArray позволяет теперь легко обходить ограничения придуманный самим же адобом:

Для картинок с кроссдоменной непереносимостью:
Loader картинки из другой песочницы имеет неприметное свойство: Loader.contentLoaderInfo.bytes: ByteArray
Так вот, его отчего-то можно спокойно прочитать (загрузить) новым Loader-ом через loadBytes и распарсить этот Loader в битмапу
Код
new BitmapData(новый_Loader.width, новый_Loader.height, true).draw (новый_Loader)

Теперь эта битмапа доступна везде (т.е. политика безопасности в пролете)

Для загрузки через FileReference.
У FileReference есть такое же малоприметное свойство data:ByteArray
Которое также легко загружается через Loader.loadBytes (привет политике безопасности!) и например может быть распарсено в картинку для превьюшки, если выбранный файл - картинка. (по-моему на этом баге основан загрузчик картинок в популярном ресурсе "В контакте" - я там ни разу не был, но слышал (IMG:http://f.hostq.ru/forum/style_emoticons/default/smile.gif) )
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Rohan
сообщение 11.03.2009 - 03:37
Сообщение #10


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

Группа: Пользователь
Сообщений: 300
Регистрация: 23.04.2006
Из: Днепропетровск, Украина
Пользователь №: 317



Бред. Полный бред.
AS2 никто не развивает, потому что нету никакого AS2. И не было никогда. Это был тот же AS, загримированный внешне, и такой же гнилой внутри. Это был скрипт, от которого __языком__ и не пахло. Какой смысл развивать скриптовое убожество, не лучше ли набраться мужества и сделать что-то толковое с нуля? Я бы посоветовал автору не просто бросаться термином "виртуальная машина", а пойти на сайт Адоба и скачать спецификацию первой и второй VM. Почитайте, там много полезного.
По поводу "специальных" палок в колеса "разработчикам" - это уже паранойя. Уважаемый автор, дабы закрыть вопрос, void - это не класс, это базовый тип, и по договоренности обязан начинаться с маленькой буквы. Точно так же, как, к примеру, int и uint. Так что вам кажется нелогичным в действиях Адоба?
"засунуть swapDepths в Video" - "и работает же" - какая прелесть! Hello, kitty! Я аж плачу от умиления... Скажите, уважаемый автор, а в Sound или NetConnection можно засунуть? Тоже будет работать? Да и вообще, утверждение "силен тот язык, который позволяет менять родителей класса, легко и динамически" заслуживает уважения. Это прям как новые "корованы, которые можно грабить".
Что касается Garbage Collctor-а. Я этот ход, признаться, тоже использовал когда переходил на AS3. Ведь проще свалить утечку памяти на коллектор, чем признаться в кривизне собственных рук. Но это ничего, это пройдет. Главное - про деструкторы не забывать. Хорошие, качественные деструкторы.
BitmapFilterType.INNER вместо "inner" - ну это уже не к AS3, это такой красивый индикатор культуры кода автора. Константами и классами в стиле Enum пользуются, конечно же, только идиоты. И все значения констант, само собой, суровые мужики помнят наизусть.
"Испорченный хелп от адоба" - подобный стиль изложения документации используется везде. Не верите? Почитайте "документацию" по Red5, к примеру.
Про EventDispatcher промолчу. Это даже не смешно. За такое святой инквизиции сдавать надо. Только один комментарий по releaseOutside - ни_единого_раза в нормальной житейской практике мне не пришлось использовать это событие. Кроме, конечно, ДОПОЛНЕНИЯ онRollOut этим ивентом. Потому что, простите, какого-то волшебного *** onRollOut не срабатывает при зажатой кнопке мыши.
"У FileReference есть такое же малоприметное свойство data:ByteArray" - как сказал бы доктор Хаус, "все люди врут".

В качестве итога. Автору нужно пойти на форум жабаскрипт-кодеров. Его там нежно обнимут. На форум же программистов (разница между форумами понятна? или подчеркнуть?) лучше не показываться.
Всего.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
chingachgoog
сообщение 11.03.2009 - 10:46
Сообщение #11


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

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



Цитата(Rohan @ 11.03.2009 - 03:37) *
AS2 никто не развивает, потому что нету никакого AS2. И не было никогда. Это был тот же AS, загримированный внешне, и такой же гнилой внутри.


Про AS2 я особо и не говорю. (то что я понимаю под AS2 я уже сказал - это никак не галка компилятора)
Вот AS1 намного гибче AS3.
А голословное "гнилой" - на вашей совести.

Цитата(Rohan @ 11.03.2009 - 03:37) *
Это был скрипт, от которого __языком__ и не пахло. Какой смысл развивать скриптовое убожество, не лучше ли набраться мужества и сделать что-то толковое с нуля?


AS1 - нормальный язык. В т.ч. объектно-ориентированный. Намного проще и гибче AS3.
Ну да - AS1 прототипный и что?
А вот "толкового языка" из AS3 увы пока не выходит.

Цитата(Rohan @ 11.03.2009 - 03:37) *
Я бы посоветовал автору ...пойти на сайт Адоба и скачать спецификацию первой и второй VM. Почитайте, там много полезного.


Напрасно вы считаете, что на сайте адоба я не был (IMG:http://f.hostq.ru/forum/style_emoticons/default/smile.gif) Описание AVM1/2 у меня есть. Полезного там не так много как хотелось бы, но по-крайней мере хоть что-то на безрыбье. Вот, кстати в соседей ветке Механизм реального наследования в AVM2 выложил более подробное описание.

Цитата(Rohan @ 11.03.2009 - 03:37) *
По поводу "специальных" палок в колеса "разработчикам" - это уже паранойя. Уважаемый автор, дабы закрыть вопрос, void - это не класс, это базовый тип, и по договоренности обязан начинаться с маленькой буквы.


Ну так объясните "параноику" пункт 1: отчего адоб "забыла" добавить разрешение считывать метку кадра в 9-м ФП для AVM1? Ведь на уровне плеера это УЖЕ реализовано. Только сомневаюсь что у психиатра Rohan-а сможет получиться объяснение.
Про Void/void смысл в другом. Могло бы быть и VoId/void... Читайте п.3 еще раз.

Цитата(Rohan @ 11.03.2009 - 03:37) *
"засунуть swapDepths в Video" - "и работает же" - какая прелесть! Hello, kitty! Я аж плачу от умиления...


Я вас понимаю. Ведь менее гибкий AS3 не позволяет ничего подобного.
Но все же хотелось бы тут разбирать что-то поконкретнее, чем поток эмоций.

Цитата(Rohan @ 11.03.2009 - 03:37) *
утверждение "силен тот язык, который позволяет менять родителей класса, легко и динамически" заслуживает уважения. Это прям как новые "корованы, которые можно грабить".


Ну вот. Опять вместо конкретики только поток грамматический ошибок. При чем тут "кОрОваны"? При чем грабить?
Ну не может этого AS3. Ну не надо так из-за этого нервничать. Надо знать сильные стороны каждого языка.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
chingachgoog
сообщение 11.03.2009 - 10:49
Сообщение #12


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

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



Цитата(Rohan @ 11.03.2009 - 03:37) *
Что касается Garbage Collctor-а. Я этот ход, признаться, тоже использовал когда переходил на AS3. Ведь проще свалить утечку памяти на коллектор, чем признаться в кривизне собственных рук. Но это ничего, это пройдет. Главное - про деструкторы не забывать.


Да-да. Про это еще не написал. (IMG:http://f.hostq.ru/forum/style_emoticons/default/smile.gif)
Теперь надо еще деструкторы (стиральщики методов экземпляров) дополнительно писать и не забывать их активировать при удалении объекта из списка видимости. Очень "удобно"! Не то что в "гнилом" AVM1, где удалил мувик и забыл спокойно про все его методы. А теперь чтобы "кривые руки" не ленились надо дать им бубен и плясать сложный танец дабы нигде ничего не протекло. "Удобства"!

Цитата(Rohan @ 11.03.2009 - 03:37) *
BitmapFilterType.INNER ... - ...это такой красивый индикатор культуры кода автора. .... И все значения констант, само собой, суровые мужики помнят наизусть.


Какая разница что помнить: что BitmapFilterType.INNER что "inner". Последнюю запомнить легче и выглядеть это будет красивее.
Почему бы прямо и просто не сознаться в ИСТИННЫХ причинах, вместо этого юления о "культуре кода"?

Цитата(Rohan @ 11.03.2009 - 03:37) *
"Испорченный хелп от адоба" - подобный стиль изложения документации используется везде. Не верите? Почитайте "документацию" по Red5, к примеру.


А мне не надо "везде", когда у меня есть замечательный стиль хелпа от макромедии по AS. Каждое свойство - отдельная страница хелпа.

Цитата(Rohan @ 11.03.2009 - 03:37) *
...комментарий по releaseOutside - ни_единого_раза в нормальной житейской практике мне не пришлось использовать это событие.


Что ж теперь всем всплакнуть, что у вас не было такой "житейской практики"? Ну нет аналога у AS3. Имейте мужества это признать.
Тут что - фанаты двух футбольных команд собрались? У AS1 есть сильные стороны и слабые, у AS3 есть сильные и слабые стороны. Нормальный флешер должен знать и то и другое.

Цитата(Rohan @ 11.03.2009 - 03:37) *
Цитата

"У FileReference есть такое же малоприметное свойство data:ByteArray"

- как сказал бы доктор Хаус, "все люди врут".


Что, нет такого свойства? (IMG:http://f.hostq.ru/forum/style_emoticons/default/smile.gif)
http://help.adobe.com/ru_RU/AS3LCR/Flash_1...rence.html#data
Или вы нашли там описание, как это противоречит политике безопасности описанной чуть выше
http://help.adobe.com/ru_RU/AS3LCR/Flash_10.0/index.html
?

Цитата(Rohan @ 11.03.2009 - 03:37) *
В качестве итога. Автору нужно пойти на форум жабаскрипт-кодеров. Его там нежно обнимут. На форум же программистов (разница между форумами понятна? или подчеркнуть?) лучше не показываться.
Всего.


Пардон. Я другой ориентации. Обнимайтесь нежно с кем-либо еще (IMG:http://f.hostq.ru/forum/style_emoticons/default/smile.gif)
А в качестве итога советую внимательно прочитать сам топик второй абзац.
И если нет, что сказать по существу вопросов, то не стоит тут флудить потоком эмоций, не мучайте себя - вы же этот форум не считаете форумом программистов?

PS
Хотя мне жаль, что Rohan не хочет вести конструктивную беседу.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Rohan
сообщение 11.03.2009 - 17:21
Сообщение #13


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

Группа: Пользователь
Сообщений: 300
Регистрация: 23.04.2006
Из: Днепропетровск, Украина
Пользователь №: 317



Да этот Rohan вообще редкая сволочь, если б все только нежеланием вести конструктивную беседу ограничивалось.
окей, сделаю исключение, побуду пару часов нормальным человеком.

Цитата
Вот AS1 намного гибче AS3

вон ассемблер вообще плюет на все остальные языки со своей гибкостью. То-то, я смотрю, все только на нем и пишут.
Поймите: РАМКИ созданы для ВАС, дабы помочь, облегчить жизнь, уберечь от ошибок, сделать ваш код качественным. У меня есть один знакомый - отличный программист - работали вместе. Пользуется C++/Delphi (хоть последний и не любит; но фриланс, который он практикует, штука сложная: клиент сказал Delphi - значит, Delphi). Так вот однажды его попросили написать плагин для IE на VB. Надо было видеть его глаза, полные радости, когда спустя неделю мучений я ему сказал, что есть в VB директивы option explicit и option strict.

Цитата
Ну да - AS1 прототипный и что?
А вот "толкового языка" из AS3 увы пока не выходит.

Не люблю ссылками кидаться. И не буду. Адрес гугла знаете? Там должен быть ответ на вопрос "какие недостатки у прототипного языка". Удачи.
По поводу "невыходящей толковости" - можно конкретнее? Что именно в AS3 как языке программирования вас не устраивает? Да, он далек даже от Java, но так же далек он и от первых версий экшн скрипта. Он, можно сказать, на полпути к "совершенству", разве это плохо?

Цитата
Описание AVM1/2 у меня есть

Отлично (если речь идет о том, о чем я думаю... Вы же о спецификации?)! Вам, очевидно, некуда всунуть либидо. Попробуйте написать на любом языке (именно языке, на первом экшн скрипте это попросту не получится) мини-парсер или мини-компилятор для первого и третьего экшн скриптов. Что-то не очень сложное, пусть совсем базовое. Вам должно понравится. Сразу замечаешь разницу. И уж поверьте, это не пустые слова, я это правда делал. Жду результатов (IMG:http://f.hostq.ru/forum/style_emoticons/default/wink.gif)

Цитата
Ну так объясните "параноику" пункт 1: отчего адоб "забыла" добавить разрешение считывать метку кадра в 9-м ФП для AVM1? Ведь на уровне плеера это УЖЕ реализовано. Только сомневаюсь что у психиатра Rohan-а сможет получиться объяснение.

Я, простите, не психиатр. Я - RIA developer с высоким ЧСВ. Ху*цы не предлагать, у меня слишком много тестостерона, я на такое не соглашусь.

Цитата
Про Void/void смысл в другом. Могло бы быть и VoId/void... Читайте п.3 еще раз.

не смешите меня!!! В чем же??? Конкретно??? Просто "на зло"? Да спросите вы у Адоба, они на письма отвечают. void - тип базовый, это не класс, по правилам хорошего тона называть его с большой буквы не принято. VoId - это вообще маразм, ни один вменяемый человек такое название использовать не будет. Большие буквы в именах применяются для разделения слов: BitmapFilter, NetConnection, но уж никак не SoUnd.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Rohan
сообщение 11.03.2009 - 17:24
Сообщение #14


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

Группа: Пользователь
Сообщений: 300
Регистрация: 23.04.2006
Из: Днепропетровск, Украина
Пользователь №: 317



Цитата
Я вас понимаю. Ведь менее гибкий AS3 не позволяет ничего подобного.

т.е. первый экшн скрипт все-таки позволяет успешно засунуть swapDepths в класс Sound? А что эта штуковина, если не секрет, делать будет? Прошу исходник в студию. Очень хочется посмотреть на то, как звуки глубиной меняются.

Цитата
Ну вот. Опять вместо конкретики только поток грамматический ошибок. При чем тут "кОрОваны"? При чем грабить?

Вам, наверное, 14? Ссылку давать не буду, погуглите по запросу "грабить корованы". Это классика, уважаемый. Читайте больше книжек (не технических), что ли?
З.Ы. наверное, напрасно, но все же надеюсь услышать извинения от автора за обвинение в кривизне моего языка. Ну и "спасибо" за культурное просвещение.

Цитата
Теперь надо еще деструкторы (стиральщики методов экземпляров) дополнительно писать

Их надо было писать всегда по всем правилам. Снесенный вами муви клип все равно оставит после себя кучу мусора, как, например, интервалы в памяти. Писать что на AS2 что на AS3 без деструкторов - это сумасшествие. Любой большой проект вас просто заставит это делать.

Цитата
Какая разница что помнить: что BitmapFilterType.INNER что "inner"

Представьте что у вас 100 констант (например, айдишники тегов, если решитесь писать какой-нить парсер). Вы сможете сказать, какой тег помечен константой 34? А как насчет, к примеру, TAG_SHOW_FRAME? Какой вариант понятнее?

Цитата
А мне не надо "везде", когда у меня есть замечательный стиль хелпа от макромедии по AS. Каждое свойство - отдельная страница хелпа.

А я хочу быть ген. директором Интерпайпа. Увы, остальному миру плевать на мои потребность. Мне, к примеру, новый стиль хелпа больше нравится. Это - штука субъективная, тут даже спорить глупо. Каждому свое, но это не делает вещи правильными или неправильными.

Цитата
Что ж теперь всем всплакнуть, что у вас не было такой "житейской практики"? Ну нет аналога у AS3. Имейте мужества это признать.

в AS3 нет готового аналога onReleaseOutside. Счастливы? А AS2 кружочки рисовать не умеет. Это так важно?

Цитата
Классы FileReference и FileReferenceList ...не разрешают операции записи или чтения в отношении переданного файла. Они закрывают для SWF-файла, который инициировал отправку или загрузку, доступ к переданному или загруженному файлу или месту размещения файла на диске пользователя.

Свойство .data появилось в десятом флеш плеере, как то и обещали. Оно создано для работы метода .load, которого раньше не было. И все ограничения на доступ к содержанию файла идут с тех времен, со времен девятого плеера (который поддерживает только методы upload и download). Логично что они больше не действуют с добавлением метода .load
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
chingachgoog
сообщение 11.03.2009 - 18:42
Сообщение #15


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

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



Цитата(Rohan @ 11.03.2009 - 17:21) *
Поймите: РАМКИ созданы для ВАС, дабы помочь, облегчить жизнь, уберечь от ошибок, сделать ваш код качественным.


Да, горе-популяризатор AS3 Мук так примерно и расписывает. Типа меня загнали в жесткие рамки ради моего же блага. Ну-ну.
Не слишком сильный аргумент, не так ли? Я даже тут спорить не буду - для кого-то стенки тюрьмы кажутся благом.
Однако есть факт - AS1 гораздо гибче, чем AS3. Этот факт может нравится или нет, на него можно по-разному смотреть, но он останется фактом.

Цитата(Rohan @ 11.03.2009 - 17:21) *
Адрес гугла знаете? Там должен быть ответ на вопрос "какие недостатки у прототипного языка". Удачи.


Ага. Не забудьте там же посмотреть "преимущества прототипного языка".

Цитата(Rohan @ 11.03.2009 - 17:21) *
По поводу "невыходящей толковости" - можно конкретнее?


А эта ветка для чего? Тут как раз конкретности. Хотя и со стороны AS1. Но вы можете написать со стороны языков ООП на классах.
Вас все устраивает? Почему бы тут не написать, что вас не устраивает?

Цитата(Rohan @ 11.03.2009 - 17:21) *
...Он, можно сказать, на полпути к "совершенству", разве это плохо?


А где я писал, что AS3 - это плохо???

Цитата(Rohan @ 11.03.2009 - 17:21) *
Отлично (если речь идет о том, о чем я думаю... Вы же о спецификации?)! Вам, очевидно, некуда всунуть либидо. Попробуйте написать...
...Я, простите, не психиатр. Я - RIA developer с высоким ЧСВ. Ху*цы не предлагать, у меня слишком много тестостерона, я на такое не соглашусь.


Неужто не психиатр? А так много про либидо и тестостерон знаете (IMG:http://f.hostq.ru/forum/style_emoticons/default/tongue.gif)
Но ответ характерен: странные люди (у которых при слове AS1 случается апоплексический удар) не могут ответить, почему адоб "забыла" добавить в AS1 УЖЕ ГОТОВУЮ возможность считывания метки кадра. Они ответ-то знают, но бояться его произнести вслух, а тех кто произносит, тут же объявляют параноиками...

Цитата(Rohan @ 11.03.2009 - 17:21) *
не смешите меня!!! В чем же??? Конкретно???


См. п. 3 еще раз. Если не дойдет - повторить еще раз. (IMG:http://f.hostq.ru/forum/style_emoticons/default/smile.gif)
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
chingachgoog
сообщение 11.03.2009 - 19:11
Сообщение #16


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

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



Цитата(Rohan @ 11.03.2009 - 17:24) *
т.е. первый экшн скрипт все-таки позволяет успешно засунуть swapDepths в класс Sound?


Вижу сильно не понравилась Rohan-у эта великолепная возможность AS1! (IMG:http://f.hostq.ru/forum/style_emoticons/default/smile.gif)
По существу возразить не может, но очень хочется - занялся абсурдом с Sound. Успехов.
А остальные могут посмотреть еще такое:
Текстовое поле не дублицируется? Неужели?

Цитата(Rohan @ 11.03.2009 - 17:24) *
З.Ы. наверное, напрасно, но все же надеюсь услышать извинения от автора за обвинение в кривизне моего языка. Ну и "спасибо" за культурное просвещение.


Извинения принести совсем не трудно. Как только будет ссылка на "классику". Только сразу предупреждаю - именно потому, что мне не 14, я по-албански не читаю.

Цитата(Rohan @ 11.03.2009 - 17:24) *
Их надо было писать всегда по всем правилам. Снесенный вами муви клип все равно оставит после себя кучу мусора, как, например, интервалы в памяти.


Интервалы никогда не находились в мувиках. Пример не удачный. Ждем-с еще примеров.
(про то, что интервалы почти всегда можно заменить таймаутами я даже не вспоминаю)

Цитата(Rohan @ 11.03.2009 - 17:24) *
Писать что на AS2 что на AS3 без деструкторов - это сумасшествие.


Все же вы продолжаете карьеру психиатра?
Примерчика-то для AS1 где так необходим деструктор не найдется?

Цитата(Rohan @ 11.03.2009 - 17:24) *
Представьте что у вас 100 констант


Представить можно все что угодно. Что есть мега проект с 3000 флешеров... И что?
Где в AS3 100 констант?
Зачем кучу лишних классов разводить? (про которые адоб потом хвастается, что мол в AS3 много новых классов появилось)
Опять для моего удобства?

Цитата(Rohan @ 11.03.2009 - 17:24) *
Мне, к примеру, новый стиль хелпа больше нравится. Это - штука субъективная


Здесь согласен. Это вещь субъективная (как и удобство записи констант заглавными буквами).
Но вещь эта отвечает теме топика (мое видение). Если вам нравится новый хелп, то я за вас рад. Мне - не нравится.

Цитата(Rohan @ 11.03.2009 - 17:24) *
в AS3 нет готового аналога onReleaseOutside. Счастливы? А AS2 кружочки рисовать не умеет. Это так важно?


Это и есть вопрос топика.
Если AS3 умеет кружочки рисовать - со мной не случится апоплексического удара, что в AS1 этого нет. Как, впрочем и в случае того, что в AS3 нет onReleaseOutside, а в AS1 он есть.

Цитата(Rohan @ 11.03.2009 - 17:24) *
Свойство .data появилось в десятом флеш плеере


Ну наконец-то заметили! А то сразу "люди врут"...

Цитата(Rohan @ 11.03.2009 - 17:24) *
И все ограничения на доступ к содержанию файла идут с тех времен, со времен девятого плеера (который поддерживает только методы upload и download). Логично что они больше не действуют с добавлением метода .load


Я так понял вам больше нравиться версия, что адоб лоханулись с хелпом, чем версия, что они лоханулись с безопасностью?
А как быть со свойством contentLoaderInfo.bytes? Оно тоже только в 10-е появилось?
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
chingachgoog
сообщение 11.03.2009 - 19:26
Сообщение #17


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

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



17) Зачем в AS3 убили восьмеричную запись чисел? Кому она мешала?
Наоборот, еще со времен AVM1 не хватало двоичной записи, а теперь и вовсе...

NB!
Нехватку двоичной записи на AS1 я решил легко:
Код
_global.__resolve=function (name) {
    if (name.charAt(0)=='b'){
        var z=name.slice(1)
        return parseInt(z,2)
    }
};

myBinary=b10010011+20
trace(myBinary)


Но для AS3 не все так просто. Про __resolve и _global напишу позже.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Rohan
сообщение 11.03.2009 - 20:43
Сообщение #18


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

Группа: Пользователь
Сообщений: 300
Регистрация: 23.04.2006
Из: Днепропетровск, Украина
Пользователь №: 317



маразм крепчает
Ок, пойдем по пунктам.
Итак, пункт раз.
Константы.
Вот выдержка из моего кода, класс TagParser для парсинга swf-файлов.

Код
    static public const PLACE_OBJECT:int             = 0x4;
    static public const PLACE_OBJECT2:int         = 0x1A;
    static public const PLACE_OBJECT3:int         = 0x46;
    static public const REMOVE_OBJECT:int         = 0x5;
    static public const SHOW_FRAME:int             = 0x1;
    static public const DEFINE_SHAPE:int             = 0x2;
    static public const DEFINE_SHAPE2:int             = 0x16;
    static public const DEFINE_SHAPE3:int             = 0x20;
    static public const DEFINE_SHAPE4:int             = 0x53;
    static public const DEFINE_SPRITE:int             = 0x27;
    static public const DEFINE_BITS:int             = 0x6;
    static public const DEFINE_BITS_JPEG2:int         = 0x15;
    static public const DEFINE_BITS_JPEG3:int         = 0x23;
    static public const DEFINE_BITS_LOSSLESS:int     = 0x14;
    static public const DEFINE_BITS_LOSSLESS2:int     = 0x24;
    static public const DEFINE_BUTTON:int         = 0x7;
    static public const DEFINE_BUTTON2:int         = 0x22;
    static public const DEFINE_FONT:int             = 0xA;
    static public const DEFINE_FONT2:int             = 0x30;
    static public const DEFINE_FONT3:int             = 0x4B;
    static public const DEFINE_TEXT:int             = 0xB;
    static public const DEFINE_TEXT2:int             = 0x21;
    static public const DEFINE_EDIT_TEXT:int         = 0x25;
    static public const DO_ABC:int                = 0x52;
    static public const DEFINE_CONFIG:int            = 0x700;
    static public const DEFINE_RAW_DATA:int        = 0x701;


Итак, пытаемся закрыть этот вопрос: глупо ли было прописывать все эти константы? Может, было проще пользоваться числами? Запоминать их все?
Уважаемый автор, ДА или НЕТ? Облегчили ли все эти константы дальнейшую жизнь, или стоило запомнить числа?
Если "да", вы признаете что константы есть хорошо, и снимаете вопрос о "лишних классах".
Может, я и правда в психологии людей шарю? Почему-то я наперед предвкушаю что-то из серии "...это ерунда, автор идиот, здесь констант много, но есть случаи когда их всего несколько, зачем это..."
Если в вашем следующем посте я не вижу ответа на свой вопрос (булевого значения: true или false, да или нет, 1 или 0; двоичная логика) - для меня это сигнал остальные пункты не разбирать.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
chingachgoog
сообщение 11.03.2009 - 21:17
Сообщение #19


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

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



Цитата(Rohan @ 11.03.2009 - 20:43) *
Итак, пункт раз.
Константы.
...
Если "да", вы признаете что константы есть хорошо, и снимаете вопрос о "лишних классах".


Читаем п. 11 внимательно.
Речь НЕ СТОЛЬКО о самой записи констант в виде заглавных букв с подчеркиванием (мне это неудобно и в большинстве случаев мне удобнее тут конкретное значение вписать, но кому-то удобнее так - не суть), СКОЛЬКО О выделении новых классов, для записи констант и прочей мелочевки.
Теперь надо еще и импортировать эти классы. И прописывать название этого "нового" класса. И это еще удлинит и так громоздкую запись с константой. (см. п. 11).
В этом суть вопроса, а не в том нужны или нет константы.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Rohan
сообщение 11.03.2009 - 23:25
Сообщение #20


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

Группа: Пользователь
Сообщений: 300
Регистрация: 23.04.2006
Из: Днепропетровск, Украина
Пользователь №: 317



Попросту тратить силы не собираюсь.
Автор отказался ответить на вопрос.
Вопрос снят. Слово свое я сдержу, вести дальше этот нелепый разговор с человеком, не желающим играть по правилам (во всех смыслах) я не буду.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения

8 страниц V   1 2 3 > » 
Ответить в эту темуОткрыть новую тему
3 чел. читают эту тему (гостей: 3, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия Сейчас: 17.11.2016 - 13:45