Flash Zone Forum > дцать причин не любить AS3
Помощь · Поиск · Пользователи · Календарь
Полная версия этой страницы: дцать причин не любить AS3
Flash Zone Forum > Macromedia Flash > ActionScript
Страницы: 1, 2, 3
Maxim I
void забыл добавить. кстати тот проект в котором участвовал на AS2 так и не смогли отладить и закончить, вроде переписывают под AS3. первый экшнскрипт, равно как и AVM1 для более-менее серьезных проектов - это шаг в пропасть, Я ГАРАНТИРУЮ ЭТО!
chingachgoog
Цитата(Maxim I @ 19.06.2009 - 18:54) *
Обращаюсь применительно к Вашему юному возрасту, может так реальнее достучаться. Пока никому это не удалось.

Код
...
override protected function doThis(){
super.doThis();
.....
}


может так понятнее?


Приветствую конкретику!
Но что должно быть понятней? В п.20 я именно про это и писал:
Цитата
super в AS3 можно выполнить только внутри описания класса.


В данном случае оверрайд бессмысленен - перезаписанная функция делает тоже самое, что родительская.
В данном случае налицо недопонимание именно со стороны Maxim I. Он не понимает, что может, а что НЕ может делать AS1 и AS3.
В AS1 можно обращаться с экземпляром подкласса ПОЛНОСТЬЮ ТАК ЖЕ, как если бы это был экземпляр его суперкласса. Именно в тот момент когда мне это надо. Т.е. экземпляр один, а в зависимости от задачи он может вести себя либо как собственный экземпляр, либо как экземпляр своего суперкласса. В AS3 это невозможно - необходимо будет сделать дополнительные костыли, дергая за которые можно будет частично имитировать поведение экземпляра под экземпляр суперкласса.
Вот собственно и все.

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

Жду разгромного ответа (кода) от white-shadow. А там глядишь и Maxim I сможет нехитрую интерполяцию сделать:
"смотрите де - тут chingachgoog оконфузился - глупость де написал, значит и его остальные пункты такая же глупость... smile.gif

Цитата(Maxim I @ 19.06.2009 - 18:54) *
тебе уже все разжевали, AS3 сделали донельзя удобным и читаемым...

Ну да ну да. Кому и кобыла невеста... ©
Maxim I
Цитата
Т.е. экземпляр один, а в зависимости от задачи он может вести себя либо как собственный экземпляр, либо как экземпляр своего суперкласса. В AS3 это невозможно - необходимо будет сделать дополнительные костыли, дергая за которые можно будет частично имитировать поведение экземпляра под экземпляр суперкласса.
Вот собственно и все.


он и ведет себя именно как экземпляр суперкласса. иначе почему мне его наследовать? только он расширяет и дополняет новыми или перегруженными методами родительский класс, то есть ведет себя так, как мне нужно. пляски с прототипами в коде, упаси господь, это саботаж
chingachgoog
Цитата(Maxim I @ 19.06.2009 - 19:36) *
он и ведет себя именно как экземпляр суперкласса. иначе почему мне его наследовать?


В этом месте важная деталь:

Цитата
В AS1 можно обращаться с экземпляром подкласса ПОЛНОСТЬЮ ТАК ЖЕ, как если бы это был экземпляр его суперкласса.

ПОЛНОСТЬЮ!
А в AS3 - лишь где методы родителя не были переписаны (не говоря уже о свойствах запрятанных в приват).

Цитата(Maxim I @ 19.06.2009 - 19:36) *
... пляски с прототипами в коде, упаси господь, это саботаж


Кому как удобней. Дело хозяйское. Была бы ВОЗМОЖНОСТЬ. А возможность эту в AS3 прикрыли и получили массу ограничений.
white-shadow
 я не говорю что мне нравиться организация один файл один публичный класс (именно 1=1), но по крайней мере это очень логично. многие изменения языка (ограничения как вы выражаетесь) позволяют повысить производительность виртуальной машины AVM. Кстати про малость кода, ООП в том числе и для этого придумали - чтобы повторно использовать код и делать меньше его повторов.

про вызов метода базового класса по экземпляру - это и нарушает инкапсуляцию - вам не нужно знать как все сделано у вас интерфейс (не тот который interface) чтобы работать с классом описанный в базовом классе - ваша база для универсализации, например у вас есть класс Stream где есть методы read write seek и так далее и есть его потомки MemoryStream и FileStream где все это переписано и есть класс в котором используется класс Stream например в  качестве буфера и вам не важно как он храниться в памяти или на диске (какой потомок создан) есть методы read write и с ними работаете (вызываете переопределенные методы).

Основной смысл ооп это то что вам всеравно как реализован класс (где хранить буфер) а важно что можно читать и писать. А если вы знаете и зависите от реализации то зачем все эти грабли с объектами...

а если немного поменять цепочку наследования? добавить промежуточный класс между Stream и *Stream с переопределенными методами, то код использующие ваше предложение не сможет работать (вы вызовете уже не ту функцию на которую расчитывали).

"Мук ляпнул про полиморфизм - а это лишь в AS1 возможно. Кто за честь Мука постоять сможет?"
полиморфизм это как раз от старшего к младшему а не наоборот. по поводу вызова перегруженного метода соглашусь что в AS3 нельзя так (super определен только внутри методов класса), но это нормально ибо наоборот - как минимум не безопасно потомучто нарушает логику работы класса и результат трудно контролировать.

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

банальное ооп на классах  проще читать писать и контролировать не аргумент? к томуже позволяет более жестко проверять типы переменных и описание методов еще на этапе компиляции...

"Если звезды зажигают -- значит -- это кому-нибудь нужно?"
если чтото запрятали в приват то может не дурак был этот человек. к томуже есть еще final даже есть final классы.


пока вспомнил про восмиричную систему.
Теперь ActionScript 3 интерпретирует строку, начинающуюся с нуля как десятичное число.
Код:
// ActionScript 3
trace(Number("010")); // 10
Если же нужно интерпретировать строку как восьмеричное число (или в любую другу систему счисления), то нужно использовать функцию parseInt:
Код:
trace(parseInt("010", 8)); // 8

и по поводу onReleaseOutside тоже можно (естественно своими силами), поисчите 100 советов по AS3 от senocular тамже и про duplicateMovieClip было...

вобщем смысла устраивать холивар я не вижу нравиться на прототипах - дай бог, просто наткнулся на этот топик при поиске доков по АС3 (решил написать конкретное приложение (редактор изображений), до этого собо не "флешил" ) и думаю некоторых может ввести в заблуждение что все так плохо. Лично был очень рад если бы аваскрипт имела бы хоть половину "ограничений" как в АС3(хотябы реализацию на классах). И вообще прототип он чтобы добавить свою функцию, расширить функционал так сказать, например из жизни:
есть ByteArray и есть у него метод compress(algo: String) но во флеш плеере нету дефлейта тока zlib (algo = void - compress() ) поэтому приходиться переписывать алгоритм сжатия на флеш и очень удобно расширить ByteArray новым методом CompressDeflate...
MustLive
white-shadow, Maxim I и другие участники форума, замечу вам о том, о чём уже замечал Rohan-у и chingachgoog-у, не нужно устраивать потасовки и перепалки на форуме. Держите себя в руках и не допускайте чрезмерных потоков эмоций, которые отнюдь не делают дискуссию в этой теме более конструктивной wink.gif.

К примеру, white-shadow обратил внимание на этот аспект, и в своём последнем посте перевёл разговор в конструктивное русло (чтобы не устраивать холивар на форуме). После того, как вначале немного поддался эмоциям. Так что от других пользователей также ожидается подобный конструктивный подход.

Я прекрасно понимаю, что тема поднятая chingachgoog весьма неоднозначна, и не всем она может понравиться (особенно апологетам AS3), но сравнение различных версий AS и AVM дело нужное. И от данной темы будет польза для флешеров и чем конструктивнее будет дискуссия, тем лучше будет для всех.
MustLive
Цитата
Может баян, но я не нашел ни одного аргумента со стороны %username%

VivaKalman

Ты о ком говоришь? В следующий раз вместо %username% используй имя участника форума wink.gif.

Цитата
Скажем, если мы пишем на AS2/1 (для веб), то предполагается, что на браузер пользователя установлен Flash player не ниже 9 версии, в то время как As3 предполагает наличие версии >=9.

Если пишем на AS1, то версия флеш плеера может быть любая, как последняя, так и предыдущие. Если на AS2, то версия флеш плеера д.б. 7 и выше, а если на AS3, то версия д.б. 9 и выше.

При этом нужно помнить, что некоторые возможности AS1 появлялись в более новых версиях флеша (т.е. после 6 версии, в последующих версиях добавлялись функции в AS1). Подобное может произойти и с AS2. Поэтому в некоторых случаях нужно учитывать не только версию AS, но и версию флеш плеера, в которой была добавлена данная функция.

Цитата
На вряд ли, у всех рядовых пользователей интернета стоит плаер выше 8 версии

У большинства уже давно стоит 9 и после выхода 10 версии, пользователи потихоньку обновляются на новую версию. О статистике использования различных версий флеша (размещённой на сайте Адоба) я писал в прошлом году.

Цитата
заставлять выкачивать пользователя плагин, только для того, что посетить ваш ресурс - по меньшей мере не разумно

Это не особо разумный подход - заставлять выкачивать более новую версию плагина, но он весьма распространён. И с 1998 и по сей день я нередко с такими сайтами сталкиваюсь, которые увлекаются авангардизмом smile.gif. И многие серьёзные порталы регулярно обновляют свои флешки до последней версии и требуют от пользователей обновить флеш плагин, и пользователи таких сайтов совсем не уходят от них, а спокойно обновляют свои флеш плагины (сам столкнулся с подобным на Ютюбе в прошлом году). Поэтому иногда сайты вынуждены требовать от своих пользователей наличия последних версий флеш-плагина.
chingachgoog
Цитата(white-shadow @ 20.06.2009 - 02:13) *
я не говорю что мне нравиться организация один файл один публичный класс (именно 1=1), но по крайней мере это очень логично.


Вы правда так считаете? Что это ЛОГИЧНО? Да еще и "очень"?
Может тут и есть логика с точки зрения компилятора. Но сточки зрения программиста-конечного пользователя - логики нет. Почему я не могу в тело пакета запихнуть несколько внешних классов/функций/переменных? Почему я должен называть файл именно именем единственного внешнего класса/функции/переменной? И еще десяток почему.
Это, возможно, было удобно программистам-разработчикам адоба, но ни разу не удобно конечному программисту-пользователю продукта.

Цитата(white-shadow @ 20.06.2009 - 02:13) *
многие изменения языка (ограничения как вы выражаетесь) позволяют повысить производительность виртуальной машины AVM.


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

Цитата(white-shadow @ 20.06.2009 - 02:13) *
Кстати про малость кода, ООП в том числе и для этого придумали - чтобы повторно использовать код и делать меньше его повторов.


Не пойму, к чему это? Никто не спорит, что ООП, доступное еще с AS1, делает возможным повторно использовать код.
Я же говорил про громоздкость кода AS3 по сравнению с кодом AS1, о чем кстати говорил и мистер Ли.

Цитата(white-shadow @ 20.06.2009 - 02:13) *
про вызов метода базового класса по экземпляру - это и нарушает инкапсуляцию - вам не нужно знать как все сделано у вас интерфейс (не тот который interface)...
Основной смысл ооп это то что вам всеравно как реализован класс (где хранить буфер) а важно что можно читать и писать. А если вы знаете и зависите от реализации то зачем все эти грабли с объектами...
...
Цитата
Мук ляпнул про полиморфизм - а это лишь в AS1 возможно. Кто за честь Мука постоять сможет?

полиморфизм это как раз от старшего к младшему а не наоборот. по поводу вызова перегруженного метода соглашусь что в AS3 нельзя так (super определен только внутри методов класса), но это нормально ибо наоборот - как минимум не безопасно потомучто нарушает логику работы класса и результат трудно контролировать.


Тем не менее я дал цитату из Мука. По-моему ее трудно понять иначе. Единственное, на что могут рассчитывать адепты Мука - это ошибка переводчика.
Что касается полиморфизма - я дал ссылку на Бадда (см. выше). Это очень широкое понятие, которое в AS3 сужается до очень конкретного использования. В этом смысле полиморфизм на AS3 гораздо гибче и шире.
А инкапсуляция, когда у экземпляра мы можем вызвать метод его суперкласса через __proto__ ни разу не нарушается - в любом случае мы знаем, кто чей наследник и какова цепочка наследования. А имена методов называются одинаково, в данном случае. Т.е. интерфейс нам знаком и цепочку наследования мы знаем. Далее наше право использовать экземпляр как нам заблагорассудиться - либо как экземпляр его собственного класса, либо как экземпляр его суперкласса (о чем так неудачно заявил Мук).

Цитата(white-shadow @ 20.06.2009 - 02:13) *
"Если звезды зажигают -- значит -- это кому-нибудь нужно?"
если чтото запрятали в приват то может не дурак был этот человек. к томуже есть еще final даже есть final классы.


Иногда и так. Но как я писал в п.19 другого выхода, когда переменные имеют одно имя теперь ПРОСТО НЕТ. Только в приват их! Дурак не дурак - компилятор по-другому не позволит. А ведь может и не дурак и специально их одинаково обозвал (как раньше можно было в AS1) - ан нет. Пишите ка лишние геттер/сеттер функции для приватных переменных. Вот это все и делает код в AS3 более громоздким.

Цитата(white-shadow @ 20.06.2009 - 02:13) *
пока вспомнил про восмиричную систему.
Теперь ActionScript 3 интерпретирует строку, начинающуюся с нуля как десятичное число.


Ага. В п.17 я про это уже писал.

Цитата(white-shadow @ 20.06.2009 - 02:13) *
и по поводу onReleaseOutside тоже можно (естественно своими силами), поисчите 100 советов по AS3 от senocular тамже и про duplicateMovieClip было...


Да-да. Постоянно тут ссылки на эти 100 премудропескарских советов даю. smile.gif Поэтому в п.14 и спросил, сколькистрочный уродец вышел. smile.gif
chingachgoog
Цитата(white-shadow @ 20.06.2009 - 02:13) *
банальное ооп на классах  проще читать писать и контролировать не аргумент?


Это не аргумент. Это спорное утверждение (если речь со сравнением с ООП на прототипах)

Цитата(white-shadow @ 20.06.2009 - 02:13) *
к томуже позволяет более жестко проверять типы переменных и описание методов еще на этапе компиляции...


Не. Это использование типизации позволяет проверять и контролировать. Собственно проверку типизации можно использовать и в AS1, если кому это необходимо (но с точки зрения выполнения программы просто в этом нет смысла - в AVM1 нет динамической трансляции кода)
Но подлинно динамическому коду проверка типизации транслятором только помеха.


Цитата(white-shadow @ 20.06.2009 - 02:13) *
вобщем смысла устраивать холивар я не вижу нравиться на прототипах - дай бог, просто ...думаю некоторых может ввести в заблуждение что все так плохо.


Плохо не то, что кто-то пишет на классах или прототипах. А то, что AVM1 остановили в развитии. Ведь стоило в нее добавить работу хотя бы с тем же ByteArray и про AS3 вспоминали бы только сишники (хотя мне странно, что они делают во флеше, когда есть WPF с C#) или 3D-шники (код с динамической трансляцией пошустрей будет в мощных тригонометрических вычислениях).

Цитата(white-shadow @ 20.06.2009 - 02:13) *
И вообще прототип он чтобы добавить свою функцию, расширить функционал так сказать, например из жизни:
есть ByteArray и есть у него метод compress(algo: String) но во флеш плеере нету дефлейта тока zlib (algo = void - compress() ) поэтому приходиться переписывать алгоритм сжатия на флеш и очень удобно расширить ByteArray новым методом CompressDeflate...


Прототип можно использовать как угодно. Можно и для расширения. Как удобно было в AS1 расширять НЕПОСРЕДСТВЕННО нативные классы... Можно было бы и с ByteArray так делать:
Код
ByteArray.prototype.мой_метод=function(){...}

А можно было и подкласс сделать:
Код
SubByteArray.prototype=new ByteArray()

или так:
Код
SubByteArray.prototype.__proto__=ByteArray.prototype
white-shadow
Сразу:  вы требуете конкретики, но сами говорите гибко и гибко, хоть один пример реального применения кода в студию (особенно про метод суперкласса по экземпляру).

ByteArray.prototype.мой_метод=function(){...} - этот код замечательно работает в AS3
а что может быть нелогичного в том что чтобы найти описание класса нужно открыть файл с  его именем (зы компиляторы впринце побарабану сколько их).
как можно проверить код:
Код
ByteArray.prototype.myfunc = function (a: Number) {
   // ....
}

var b: ByteArray = new ByteArray();
b.myf();

на этапе компиляции?

"Но как я писал в п.19 другого выхода, когда переменные имеют одно имя теперь ПРОСТО НЕT" зачем переменным давать одно имя?

"Это, возможно, было удобно программистам-разработчикам адоба, но ни разу не удобно конечному программисту-пользователю продукта."
пользователю вообще всеравно сколько у кого где классов, а таким образом программисты приучаются к моддульности.

"Не пойму, к чему это?" это к тожу что можно сколько угодно доказывать что чтото плохо и неудобно, а все в большей степени зависит от программиста который этим пользуется, если нехватает опыта/умения то и никакие языковые конструкции не помогут, а если вернуться к объему - то размер исходного кода на одном языке не говорит о размере его скомплиированной версии (если исходник на АС3 и получиться больше в килобайтах то не значит что он будет больше в исполняемом виде, а скорее наоборот). Сначала тоже кричали про XP как все плохо, а 98 рулит и тоже говорили вот тут подругому тут не так и т.п., но реально поработав сейчас такого человека уже не встретишь (из Windows пользователей).


"А инкапсуляция, когда у экземпляра мы можем вызвать метод его суперкласса через __proto__ ни разу не нарушается" - не игнорируйте текст моего поста, я сразу написал примеры. А  в отношении полиморфизма - все довольно узко - как было в процедурном программировании:
одно имя функции но много реализаций с разными параметрами, так и осталось только в другой форме (параметры вынесены в свойства класса)...

"Это не аргумент. Это спорное утверждение (если речь со сравнением с ООП на прототипах)".
"и про AS3 вспоминали бы только сишники" а это бесспорное из чего следует?

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

адоб хочет научить людей хорошему тону в программировании и не все с этим согласны, ИМХО.

chingachgoog
Цитата(white-shadow @ 22.06.2009 - 22:53) *
...хоть один пример реального применения кода в студию (особенно про метод суперкласса по экземпляру).


Так у меня весь код в примерах реальный (рабочий).
Или нужен пример прикладного применения кода? Не думаю, что это тут нужно. Я наоборот тут оставляю наиболее минимизированный код, чтобы ясна была именно сама суть конкретного вопроса.

Цитата(white-shadow @ 22.06.2009 - 22:53) *
ByteArray.prototype.мой_метод=function(){...} - этот код замечательно работает в AS3


Именно ТАК работает. Но тут масса ограничений. Это у меня будет еще один (или не один) пункт smile.gif

Цитата(white-shadow @ 22.06.2009 - 22:53) *
а что может быть нелогичного в том что чтобы найти описание класса нужно открыть файл с  его именем


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

Цитата(white-shadow @ 22.06.2009 - 22:53) *
как можно проверить код...
на этапе компиляции?


Не понял к чему это?

Цитата(white-shadow @ 22.06.2009 - 22:53) *
Цитата

Но как я писал в п.19 другого выхода, когда переменные имеют одно имя теперь ПРОСТО НЕT

 зачем переменным давать одно имя?


Это удивительный аргумент!
Я говорю о ФАКТЕ в п.19. А мне говорят - "ну и что?".
Типа "нет такой возможности - да и зачем она нужна?"
Во-первых ее не просто нет, а она БЫЛА в AS1 и только в AS3 ее теперь НЕ СТАЛО.
Во-вторых, когда возможность есть, всегда ей (возможности) можно найти применение. Но когда возможность прикрыли уже НИКАКОГО применения не будет.
В-третьих в п.21 я помимо полиморфизма показал супервозможность AS1 о которой я говорил в п.5 - динамической смене родителей класса. Мой пример с классом Polymorph был связан с методами. Но точно такой же принцип можно организовать со свойствами. В AS1. Но не в AS3.

Цитата(white-shadow @ 22.06.2009 - 22:53) *
Цитата

Это, возможно, было удобно программистам-разработчикам адоба, но ни разу не удобно конечному программисту-пользователю продукта.

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


Читайте внимательнее:
"...программисту-пользователю продукта." [Продукт - это среда флеш-разработки адоба]

Цитата(white-shadow @ 22.06.2009 - 22:53) *
можно сколько угодно доказывать что чтото плохо и неудобно, а все в большей степени зависит от программиста который этим пользуется


Каждый должен выбрать САМ что ему удобно, а что нет. Потому это и субъективная сторона дела.
Но есть объективная сторона - что МОЖЕТ, а что НЕ может AS3. Я стараюсь тут больше об объективной стороне.

Цитата(white-shadow @ 22.06.2009 - 22:53) *
если вернуться к объему - то размер исходного кода на одном языке не говорит о размере его скомплиированной версии (если исходник на АС3 и получиться больше в килобайтах то не значит что он будет больше в исполняемом виде, а скорее наоборот).


Тут три момента.
1) Объем самого кода (разговор именно об этом изначально). Т.е. объем труда программиста. В AS3 объем кода как правило больше раза в два минимум. Да, есть ДОПОЛНИТЕЛЬНЫЕ программы, типа FD, с шаблонами и т.п., с автокомплитом... Да, они облегчают труд программиста.
Но возращаясь к объективной стороне - объем кода (AS) - больше.
2) Объем (вес) swf файла. Или объем байт-кода. Ясно, чем он меньше, тем для сети лучше. Для локальных приложений исовременных скоростных сетей уже малоактуально.
3) Объем исполняемого кода (в AVM). Или объем машинного кода.
Да, именно тут, за счет динамической трансляции адобовцы и попытались увеличить производительность флеша. Немного удалось. Но тормоза флеша остались. Почему? Да потому что скорость исполнения кода была помехой лишь в узких случаях (см. выше)
Тормоза исчезнут когда флеш к видеоускорителю подключат. Но как тогда быть с "мультиплатформенностью". Впрочем это уже не к теме топика.
chingachgoog
Цитата(white-shadow @ 22.06.2009 - 22:53) *
Сначала тоже кричали про XP как все плохо, а 98 рулит и тоже говорили вот тут подругому тут не так и т.п., но реально поработав сейчас такого человека уже не встретишь (из Windows пользователей).


Ну что вы. Все кричат что AS3 это круть. Но при этом не знают и десятой доли возможностей AS1. При этом не знают что круть - это AVM2, а не AS3. При этом не задают вопросов, почему AVM1 умышленно притормаживают.

Цитата(white-shadow @ 22.06.2009 - 22:53) *
- не игнорируйте текст моего поста, я сразу написал примеры.


А что примеры показывают? Что если добавить ПРОМЕЖУТОЧНЫЙ класс то код не сработает?
Извините. А если добавить промежуточный класс то super() в конструкторе последнего ребенка сработает уже НЕ ТАК как он сработал бы изначально. Т.е. вам надо ПРАВИТЬ super() в конструкторе (например, туда аргументы передаются) ЗНАЯ как классы наследуются.
Так и у меня. Я ЗНАЯ как классы наследуются буду ПРАВИТЬ цепочку __proto__. Впрочем можно разработать и автоматическую подстройку.

Цитата(white-shadow @ 22.06.2009 - 22:53) *
А  в отношении полиморфизма - все довольно узко - как было в процедурном программировании:
одно имя функции но много реализаций с разными параметрами, так и осталось только в другой форме (параметры вынесены в свойства класса)...


Вы дали ссылку на википедию, а я на Бадда.
Вы узко понимаете полиморфизм, а я более широко.
Оставим публике решать кто тут более прав.
Лучше постойте за честь Мука, раз взялись. Как вы его цитату можете объяснить?

Цитата(white-shadow @ 22.06.2009 - 22:53) *
Цитата
и про AS3 вспоминали бы только сишники

а это бесспорное из чего следует?


Это мое мнение smile.gif Не бесспорное. Но аргументированное.
Собственно частично об этом говорит и господин Ли (см. выше).
Если интересно могу пояснить.

Цитата(white-shadow @ 22.06.2009 - 22:53) *
что нельзя использовать __proto__ у экземпляра это ладно зачем это нужно, спорить про понятия смысла нет как и их однозначного определения, но за такой подход к программированию....


Не могу сказать что понял смысл предложения (кажется, не хватает знаков препинания для этого).
Это опять вариант "__proto__  нет, ну и что? Зачем он нужен?" - я правильно понял?

Цитата(white-shadow @ 22.06.2009 - 22:53) *
адоб хочет научить людей хорошему тону в программировании и не все с этим согласны, ИМХО.


Вы правы. Я не согласен считать адоб добреньким дяденькой, который спит и видит, кого бы еще научить "хорошему тону в программировании".
white-shadow
"А то, что AVM1 остановили в развитии. Ведь стоило в нее добавить работу хотя бы с тем же ByteArray и про AS3 вспоминали бы только сишники (хотя мне странно, что они делают во флеше, когда есть WPF с C#) или 3D-шники (код с динамической трансляцией пошустрей будет в мощных тригонометрических вычислениях)."
"Это мое мнение  Не бесспорное. Но аргументированное."
Где здесь хоть один аргумент в пользу "про AS3 вспоминали бы только сишники "?

super() меняется когда РАЗРАБОТЧИК КЛАССА меняет его родитель и он знает что делает( и может переписать конструктор методы и тп да и вообще поменять реализацию и сделать этот класс суперклассом (без родителя), потом что всю программу переписывать?) , а поменять в коде <>.__proto__  после этого не тривильная задача.

"Вы узко понимаете полиморфизм, а я более широко."

Мук:
"Полиморфизм - это возможность, присущая всем настоящим объектно-оринтированным языкам программирования, которая заключается в том, что экземпляр подкласса может быть использован везде, где допустимо применение экземпляра его суперкласса.
Само по себе слово "полиморфизм" буквально обозначает "множество форм" - любой объект можно рассматривать как экземпляр собственного класса или как экземпляр любого из его суперклассов."
Вы не правильно интерпретировали его слова(возможно потомучто хотели этого), прочитайте внимательнее. Это означает что можно записать:
Код
class MySuper {
  //...
}

class MyClass extends MySuper {
  //...
}

function MyFunc( v: MySuper ) {
  //...
}

var a: MyClass = new MyClass());
//....
MyFunc( a as MySuper );

а не то о чем вы писали. В вышем случае получается несколько экземпляров "слепленных" между собой для создания ПОДОБИЯ наследования. в подклассе есть не только методы но и переменные, и возможно хранение данных там организовано чуть по другому чем в суперклассе, и вызывая каким либо образом метод с другой логикой ничего хорошего не получишь, разве это не очевидно?

Бадд:
"Чистый полиморфизм имеет место, когда одна и та же функция применяется к аргументам различных типов. В случае чистого полиморфизма есть одна функция (тело кода) и несколько ее интерпретаций. Другая крайность наблюдается, когда имеется множество различных функций (то есть тел кода) с одним именем. Такая ситуация называется перегрузкой или полиморфизмом ad hoc. Между этими двумя полюсами лежат переопределяемые и отложенные методы 
Опять-таки отметим, что согласие в среде сообщества программистов относительно используемой терминологии весьма невелико. Например, в работах [Horovitz 1984], [Marcotty 1987], [MacLennan 1987] и [Pinson 1988] термин полиморфизм определяется так, что он приблизительно соответствует понятию, называемому в данной книге перегрузкой. В работах [Sethi 1989] и [Meyer 1988a], а также в среде людей, занимающихся функциональным программированием [Wikstrom 1987], [Milner 1990], этот термин резервируется для обозначения того, что здесь называется чистым полиморфизмом. Другие же авторы используют этот термин для обозначения одного-двух или всех механизмов полиморфизма, рассматриваемых в данной главе. Два законченных, но запугивающих избытком технических подробностей анализа могут быть найдены в работах [Cardelli 1985] и [Danforth 1988]."
Бадд пишет ТОЖЕ самое что пишет Мук и именно то очем я говорил изначельно.

Я спором ради спора заниматься нехочу, хотябы тот факт что не один человек говорит Вам об одних и техже прописных истинах, о которых говориться и у авторов которых вы приводите, и вы сами не "играете" по своим правилам говорит о бессмысленности попыток аргументировать, приводить куски кода и объяснять.
chingachgoog
Цитата(white-shadow @ 23.06.2009 - 16:05) *
Где здесь хоть один аргумент в пользу "про AS3 вспоминали бы только сишники "?

В данном случае "здесь" - это в этой ветке. Например в посте 23

Цитата(white-shadow @ 23.06.2009 - 16:05) *
super() меняется когда РАЗРАБОТЧИК КЛАССА меняет его родитель и он знает что делает, а поменять в коде <>.__proto__  после это не тривильная задача.


А "разработчик класса" - это какое-то мифическое существо? Если он мифическое существо и не оставил никаких документов по классу, то вы и без __proto__  ничего с таких классом не сделаете - вы даже его интерфейс не будете знать. Но если разработчик класса - лицо реальное и выреально хотите с этим классом работать, то цепочку наследования класса вы ОБЯЗАНЫ знать (например в хелпе адоба к AS3 показана цепочка наследования каждого класса - и это не спроста). В этом случае использование __proto__  сложности не представит.

Цитата(white-shadow @ 23.06.2009 - 16:05) *
ни одной цитаты я не вижу, там только ваша интерпретация...


см. пост 39

Цитата(white-shadow @ 23.06.2009 - 16:05) *
это цитата из Бадда и именно то очем я говорил.


Именно для этого я и дал ссылку на Бадда, чтобы каждый желающий мог САМ и ЦЕЛИКОМ прочитать всю главу о полиморфизме в его самом широком смысле. А не стал давать короткие цитаты. Ведь там еще много чего интересного о полиморфизме есть.

Цитата(white-shadow @ 23.06.2009 - 16:05) *
тот факт что не один человек говорит Вам об одних и техже прописных истинах и вы сами не "играете" по своим правилам говорит о бессмысленности попыток аргументировать, приводить куски кода и объяснять.


Если "прописная истина" - это ссылка на узкое определение из википедии, то понятно, почему любителям "прописных истин" нечего возразить по поводу ссылки на работу Бадда.
Если "прописная истина" - это попытка субъективно и демагогически отвечать на объективные факты (что МОЖЕТ, а что НЕ может AS3), то согласен - ТАКИМ образом "аргументировать" мне бессмысленно.

Смысл ответов я вижу в другом:
написал я в посте 24 о классе Polymorph
Цитата
такое в AS3 в принципе НЕВОЗМОЖНО

А white-shadow мне ответил:
Цитата
кто вам это сказал? просто делаетс базовый класс a radial degree его потомки и все!

Разумеется я жду разгромный код от white-shadow, где в AS3 можно динамически поменять родителя класса!
Но вместо этого white-shadow вдруг пишет, что приводить куски кода бессмысленно.
Мне это странно, но думаю публика нас рассудит.
chingachgoog
Цитата(white-shadow @ 23.06.2009 - 16:05) *
Вы не правильно интерпретировали его слова(возможно потомучто хотели этого), прочитайте внимательнее.


Давайте прочитаем внимательнее. Я только ЗА.
Цитата
экземпляр подкласса может быть использован везде, где допустимо применение экземпляра его суперкласса

Итак речь именно об ЭКЗЕМПЛЯРАХ.
Цитата
экземпляр подкласса может быть использован везде, где допустимо применение экземпляра его суперкласса.
... любой объект можно рассматривать как экземпляр собственного класса или как экземпляр любого из его суперклассов

Итак ЛЮБОЙ экземпляр класса можно рассматривать как экземпляр его СУПЕРКЛАССА.
Разве не это написал Мук?
Именно поэтому в посте 45 я попросил подтверждение слов Мука на AS3: "Создайте пожалуйста экземпляр подкласса AB и сделайте так, чтобы при вызове метода use1 писалось "суперкласс"."

Цитата(white-shadow @ 23.06.2009 - 16:05) *
Бадд пишет ТОЖЕ самое что пишет Мук


Немного не так. Мук дает ОДНО из МНОГИХ определений полиморфизма, о которых (многих) говорится в работе Бадда.
white-shadow
 я было начал отвечать, а потом подумал не стоит оно того...
смысла тратить силы в пустую нет никакого...

-- no comments --
chingachgoog
Цитата(white-shadow @ 23.06.2009 - 18:36) *
я было начал отвечать, а потом подумал не стоит оно того...
смысла тратить силы в пустую нет никакого...


"Или не начинай, или доводи до конца." ©

Право не стоит, наверное, тут начинать отвечать тем, кто не силен в полемике. Или как говориться 
"Промолчишь - за умного сойдешь." © Весь фокус в том, что молчать надо сразу  wink.gif
Maxim I
Цитата
я было начал отвечать, а потом подумал не стоит оно того...
смысла тратить силы в пустую нет никакого...


библейское "глас вопиющего в пустыне" это про топик-стартера.

а подводя итог, повторюсь, рад что писать на AS1 мне больше не придется никогда, да и AVM1 не вытянула бы никогда текущий проект, нагрузки там отнюдь не детские. удачи топикстартеру в его метаниях!
chingachgoog
27) Компилятор AVM2 не оптимизирует код

Собственно, это не напрямую относиться к AS3, но не исключаю, что связано именно с архитектурой под AS3.
Возьмем код:

Код
var a = 2+2


Скомпилируем swf.

Изменим код и скомпилируем второй swf:

Код
var a = 4


Как и следовало ожидать, после компиляции под AVM1 получился один и тот же байт-код (т.е. второй вариант). Компилятор просчитал и оптимизировал то, что можно оптимизировать.
Но если компилировать под AVM2, то сразу видно, что получаются две РАЗНЫЕ swf-ки. Компилятор оставил все как есть. Т.е. переложил расчеты на AVM. После этого адобовцы говорят, что AVM2 работает быстрее!

PS
Занимательно сравнить вес swf-ок после компиляций под AVM1 и AVM2 с данным кодом
chingachgoog
28) valueOf ()
(по непроверенным данным)

В AS3 valueOf возращает только тип Number и глючит при операции сравнения ==
В AVM1 valueOf мог возращать любой тип и прекрасно сравнивался:

Код
function A(num){
    this.value=num
}

A.prototype.valueOf=function(){
    return this.value
}

trace(5==new A(5)) // true

trace(5+new A("класс А")) //5класс А


chingachgoog
Без номера
(про вес плеера)

Издревле smile.gif макромедиевцы берегли вес флеш-плеера. Легкость ФП была одной из основных причин его стремительного распространения.
Теперь вес ФП уже мало кого волнует. Он вырос в РАЗЫ. И что видно? Может флеш улучшился в разы? Отнюдь.

У макромедии была одна разработка (и у адоба она есть) - Директор - с огромными преимуществами перед флешем, но с одним маленьким недостатком - шоквейв-плеер был тяжел. Но теперь ФП и ШП мало чем отличаются по весу. Но ШП умеет то, что и раньше умел - невероятная работа с 3D. А флеш и поныне там с самопальными неуклюжими попытками сэмулировать "настоящее" 3D.

http://www.maidmarian.com/sherwoodDungeon.htm
(пример)
akabanov
Тоже не удержался, зарегался.

По поводу принуждения к обновлению плагина: полная чушь. Не принуждали бы к обновлениям - так бы и сидели сейчас все на старье. Это прогресс, это развитие. Где нет развития - там деградация. В плане профессионального развития, кстати, тоже. Се ля ви.

По поводу увеличения веса плагина. Рост средней пропускной способности сети поощряет к созданию всё более толстых продуктов. Ничего не попишешь, [среднестатистический] пользователь будет хавать, еще и спасибо скажет.

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

И ему, наверное, не приходилось поддерживать чужой код, в котором на полную катушку кем-то другим была использована Гибкость языка, такая как возможность размещения класса ShoppingCart в файле Application_ScriptNo_215.as или упомянутая выше возможность смены суперкласса в run-time.

ЗЫ по поводу всех приведенных причин почему не любить AS3... "кто не хочет - ищет “почему”, а кто хочет - ищет “как”"

ЗЫЗЫ надеюсь не обидел никого.
chingachgoog
Цитата(akabanov @ 10.02.2010 - 14:33) *
По поводу принуждения к обновлению плагина: полная чушь.


Совершенно согласен. Чушь. Только не помню кто тут эту чушь говорил? Не подскажите?
Лично я писал о принуждении перехода на AVM2, тогда как AVM1 намеренно сдерживают в развитии.
К обновлению версий плагинов это вообще никоим боком не относиться - таких обновлений для одной AVM1 было вагон и малая тележка.

Трудно разве ввести в swf тэг для работы с бинарными данными в AVM1? Вовсе нет. Только сразу же после этого достойных упоминания преимуществ AVM2 станет на 50% меньше.

Цитата(akabanov @ 10.02.2010 - 14:33) *
По поводу увеличения веса плагина. Рост средней пропускной способности сети поощряет к созданию всё более толстых продуктов. Ничего не попишешь


Можно конечно посокрушаться - "ничего не попишешь". А можно спросить - а где же новые полезные приобретения?
Может новые html-тэги стали поддерживаться? Или CSS-парсер улучшился? Или... (тысяча и одно или еще)

Цитата(akabanov @ 10.02.2010 - 14:33) *
у меня сложилось мнение, что топикстартер просто не участвовал в больших проектах или в командных, где больше одного программиста.


Собственно настоящий программист, как человек внимательный, заметил бы, что в ответе 45 я об этом говорил (самое начало).

Цитата(akabanov @ 10.02.2010 - 14:33) *
То есть там где код просто вынужден быть четко структурированным, самодокументированным, должен следовать общепринятым соглашениям и не должен содержать то что часто зовут хаками.


Просто те, кто употребляют слово "хак" расписываются в том, что они не понимают того, что на самом деле происходит с выполнением кода и функционированием ФП.
Четкая структурность может быть легко достигнута и на AS1.

Цитата(akabanov @ 10.02.2010 - 14:33) *
И ему, наверное, не приходилось поддерживать чужой код, в котором на полную катушку кем-то другим была использована Гибкость языка, такая как возможность размещения класса ShoppingCart в файле Application_ScriptNo_215.as или упомянутая выше возможность смены суперкласса в run-time.


Трудноподдерживаемый код можно сотворить на любой версии AS.
И AS3 к этому НИКАКИМ иммунитетом не обладает.
Основное решение не в версии языка, а в области архитектуры будующего приложения.

Цитата(akabanov @ 10.02.2010 - 14:33) *
ЗЫ по поводу всех приведенных причин почему не любить AS3... "кто не хочет - ищет “почему”, а кто хочет - ищет “как”"


Во-первых не увидел разбора ни одного из приведенных мной пунктов. Вот бы akabanov-у сказать: пункт такой-то не верен тем, что так-то... Вместо этого общие впечатления об теме. Смысл поднятия данной темы я четко изложил в самом первом посте. Просто удивительно, что можно это умудряться не замечать...
chingachgoog
29) Виртуализация таймлайна и баги с этим связанные

AVM2 продолжает страшно глючить (т.е. выдавать то поведение, которое совсем не ожидается).
В AVM1 можно было набросать на разные кадры разных мувиков и за ОДНО событие смены кадра пробежаться по нужным кадрам таймлайна (gotoAndStop-ом) и сосчитать нужные параметры этих мувиков (пример)

В AVM2 это так просто не удасться! А скорее всего не удасться вовсе sad.gif

Объект должен УСПЕТЬ проинициализироваться, чтобы иметь к нему доступ. Это время довольно неопределено. Но, в AVM1 максимальное время для инициализации - ОДНА смена кадра! В AVM2 это время может быть БОЛЬШЕ!!!

Глюк достаточно обидный (поговаривают, что в 10-м ФП что-то правили). Еще хуже то, что надо ждать инициализации уе после ОДНОГО ЕДИНСТВЕННОГО перехода gotoAndStop, тогда как в AVM1 таких переходов я мог сделать сколько угодно.

PS

А вот обратный глюк. Хотя еще ДО события INIT дана команда перехода на другой кадр, код первого кадра непостижимым образом успевает выполниться в AVM2. В AVM1 такого безобразия нет. (примеры по ссылке)
KIVagant
Я тут почитал мнения в этой теме. Конечно, очень познавательно следить за ходом мысли людей, давно специализирующихся на AS.
Но я добавлю свои пять копеек.

До ноября прошлого года я мучался с AS2. Я недолго программирую на флеш, и вынужденно заставлял себя разбираться в этом языке. Всё жутко запутанно, несистемно, сложно и нужно многое держать в голове.
А потом я как-то сел за новый проект и решил перейти на AS3, хотя думал, что будет ещё хуже. Но как только я его открыл — всё само собой стало получаться. Я четко понимал, где и что мне нужно искать, как взаимосвязаны объекты друг с другом — хотя видел этот язык впервые в жизни. Легко работать с текстами, со звуком, с видео, с анимацией, ну практически с всем, кроме событий (event). На любой типичный вопрос ответ находился, как ни странно, прямо в документации.
Вот если бы ещё нормальный поиск и удаление прикрепленных слушателей к объектам сделали — и вообще бы не слазил с флеша.

Так что для меня все эти споры про AS1, AS2 и AS3 — лишь пыль. Потому, что я вижу только один аргумент, перекрывающий всё и вся: с ActionScript 3 работать офигенно просто. Все как-то волшебно происходит, и сам себе удивляешься. А на 2-й версии этого языка — сплошная пытка. До сих пор воротит, когда приходится к нему возвращаться.
HaWK
А что конкретно не получалось у вас на AS2?
chingachgoog
KIVagant, а на чем вы раньше программировали?


PS

Цитата(KIVagant @ 14.04.2010 - 18:35) *
На любой типичный вопрос ответ находился, как ни странно, прямо в документации.


В принципе один из немногих плюсов AS3 - по нему есть русский хэлп. По понятности сам хэлп (не считая, что он русский) ничуть не лучше хэлпа к AS1/2. Его (хэлп к AS3) можно даже с известными оговорками использовать для понимания AS1/2. Хотя лично мне и не нравиться компоновка нового хэлпа (см. выше)

Цитата(KIVagant @ 14.04.2010 - 18:35) *
А на 2-й версии этого языка — сплошная пытка. До сих пор воротит, когда приходится к нему возвращаться.


Кстати, что вы считаете за AS2?
KIVagant
Цитата(HaWK @ 14.04.2010 - 17:37) *
А что конкретно не получалось у вас на AS2?


Да, в общем-то, все получалось после определенного времени. Но для этого приходилось делать множество телодвижений. Понимание логики языка давалось труднее. И просто удовольствия от реализации не появлялось. Потому, что как-то мусорно получалось. Знаете, это похоже на разницу между PHP4 и будущим PHP6. Если в 4-й версии пхп можно было всё и вся и всем, в 5-ке вдруг ограничили откровенную тупизну и стали настоятельно рекомендовать не использовать многие возможности 4-ки (о, где же они были, когда я учился по тупым учебникам), то в 6 версии грядут жесткие ограничения — и это прекрасно. Потому, что если изначально следить за переменными, за построением логики, то это помогает избежать многих проблем. То же и в AS3 — ещё на стадии компилятора очень много тупейших недосмотренных ошибок выявляется.

Кстати, вспомнил: что бесит во флеше, это когда дебаг-версия ругается на ошибку, при этом ни разу не намекая, где её искать (что-то типа "переменная не найдена" или "не найден объект во frame1"). Приходятся разрезать функции на десятки частей, перекапывать всю библиотеку, импортировать заново все типовые компоненты и даже выгружать бекапы и сравнивать вручную все, делая кучу бесполезных действий, чтобы отследить где же косяк. И все потому, что дебагер не сообщает, какой именно объект или переменная не найдены. Понять, конечно, можно, но все-равно обидно.

Цитата(chingachgoog @ 14.04.2010 - 17:46) *
KIVagant, а на чем вы раньше программировали?

С++ (раньше), но сейчас в основном PHP5, а теперь + Flash.

Цитата(chingachgoog @ 14.04.2010 - 17:46) *
В принципе один из немногих плюсов AS3 - по нему есть русский хэлп. По понятности сам хэлп (не считая, что он русский) ничуть не лучше хэлпа к AS1/2. Его (хэлп к AS3) можно даже с известными оговорками использовать для понимания AS1/2. Хотя лично мне и не нравиться компоновка нового хэлпа (см. выше)
Кстати, что вы считаете за AS2?


Справка от Adobe (русская) действительно не всегда идеально-понятна. Но на все базовые вопросы она отвечает, в сочетании с их же справочником — дает ответы на большинство вопросов. Конечно, когда речь идет о каком-то эксклюзивном алгоритме, спецэффектах или вкусных решениях — здесь только форумы, консультации и усидчивость могут помочь. Но когда осваиваешь язык — с AS3 не возникает проблем. Там все изначально достаточно просто сделано.

Кстати, хорошим показателем языка является то, что я за 2 месяца смог написать неплохой игровой клиент на AS3 для PHP-ного сервера, при этом всё осваивая "на лету".
chingachgoog
Цитата(KIVagant @ 14.04.2010 - 19:59) *
жесткие ограничения — ...это прекрасно. Потому, что если изначально следить за переменными, за построением логики, то это помогает избежать многих проблем. То же и в AS3 — ещё на стадии компилятора очень много тупейших недосмотренных ошибок выявляется.
...
С++ (раньше), но сейчас в основном PHP5, а теперь + Flash.


Понятно почему вам нравятся жесткие ограничения и заботливый компилятор )))
Ну тогда AS3 для вас подходит вполне. )))
Хотя я бы на вашем месте присмотрелся бы к C# и сильверлайту.
MustLive
Цитата
Ну тогда AS3 для вас подходит вполне. )))

chingachgoog

Здесь сказывается знание другого языка программирования (ЯП) до изучения AS. В зависимости о того знал ли человек какой-либо ЯП или AS является его первым ЯП, и если знал, то что это за ЯП - это влияет на выбор версии AS и удобства работы с различными версиями AS.

KIVagant до флеша программировал на С++ и PHP5, т.е. использовал в основном ООП (я так понимаю, что на С или С++, а также на PHP программ без использования классов он писал мало). Что и обусловило его склонность к AS3 smile.gif.

Цитата
Хотя я бы на вашем месте присмотрелся бы к C# и сильверлайту.

Ты уже не первым раз акцентируешь на C# и Сильверлайте. Но замечу, что здесь влияет рынок. Флеш более распространён, поэтому разработчики, в том числе KIVagant, и выбирают эту платформу.

К примеру, за всё время существования Сильверлайта от Microsoft, я до сих пор не поставил его плагин ни к одному используемому мною браузеру. И не спешу этого делать - флеша и его плагина мне более чем хватает.
MustLive
Цитата
Все как-то волшебно происходит, и сам себе удивляешься.

KIVagant

Это хорошо, что изучение AS3 у тебя пошло успешно и программирование на нём у тебя вызывает сплошное удовольствие. Мои поздравления.

Среди участников нашего форума есть те, кто пробовал переходить с AS2 на AS3, но новая версия не понравилась (например, HaWK), а есть те, у кого переход прошёл нормально и возвращаться не планируют smile.gif (например, Jox). И есть такие кто и не планирует переходить на AS3 biggrin.gif (например, я). У тебя же имеется весьма положительный опыт перехода с AS2 на AS3.

Также замечу, KIVagant, что ты смог успешно проагитировать за AS3 в данной теме, при этом не вступая в конфликт с chingachgoog. Что делали другие форумчане, вступая с ним в перепалки (и в этом была их ошибка). Так что со своей стороны, в данный список причин не любить AS3, ты добавил причину почему его можно любить.
HaWK
Цитата
И есть такие кто и не планирует переходить на AS3 (например, я)

Я в том числе.

Цитата
Также замечу, KIVagant, что ты смог успешно проагитировать за AS3 в данной теме, при этом не вступая в конфликт с chingachgoog.

Браво!

Хочу заметить, что chingachgoog описал здесь множество причин не любить AS3 (некоторые из них действительно весомые), KIVagant не мешают ли тебе эти причины программировать?
KIVagant
Забавно. Лазил по гуглу и нашел эту тему и ответы мне. А то уже и забыл про неё.

Ну что, тем более актуально ответить сейчас, некоторое время спустя. ActionScript 3 не забросил, а наоборот - "прокачиваю левел".

Цитата
не мешают ли тебе эти причины программировать?


Пока что ничего не мешало. Единственная причина, мешающая программировать — недостаточное финансирование того или иного проекта или собственная лень. Остальные причины имеют пути решения или просто обхода. Уже даже пробовал 3D-графику использовать во флеше. Что-то получилось. smile.gif В общем, всем желаю работать в комфортных условиях на языках, к которым душа лежит.
HaWK
AS3 и правда отличный язык. Чем больше я с ним работаю, тем больше я в этом убеждаюсь. И то что я раньше не стал с ним работать, лежит на совести топикстартера, который сбил меня столку этой темой. И все пункты, которые здесь он разбирал, это всё ерунда. Как сказал Рохан: "Бред". Меня ещё ничего из того не задело. В общем лично меня всё устраивает, и у меня нет не одной причины не любить AS3.
chingachgoog
Цитата(HaWK @ 22.10.2010 - 02:08) *
AS3 и правда отличный язык. Чем больше я с ним работаю, тем больше я в этом убеждаюсь. И то что я раньше не стал с ним работать, лежит на совести топикстартера, который сбил меня столку этой темой. И все пункты, которые здесь он разбирал, это всё ерунда. Как сказал Рохан: "Бред". Меня ещё ничего из того не задело. В общем лично меня всё устраивает, и у меня нет не одной причины не любить AS3.


1) К сожалению, HaWK, не смог осилить второй абзац топика. Я никого и никогда не отговаривал от AS3
2) HaWK, к сожалению не знает не только AS3, но и AS2 и, самое главное, AS1. Чтобы понять, ерунда мои пункты или нет, надо хотя бы понимать о чем идет речь.
HaWK
Цитата
HaWK, к сожалению не знает не только AS3, но и AS2 и, самое главное, AS1. Чтобы понять, ерунда мои пункты или нет, надо хотя бы понимать о чем идет речь.

Откуда тебе знать, что я знаю, а что я не знаю? Я могу с такой же уверенностью сказать, что ты не знаешь AS1, AS2 и AS3.
HaWK
Цитата
надо хотя бы понимать о чем идет речь.

laugh.gif Ты сначала спроси меня, что я не понял из этого, чтобы так говорить.
MustLive
Ребята не ссортесь.

Цитата
И то что я раньше не стал с ним работать, лежит на совести топикстартера, который сбил меня столку этой темой.

HaWK

Топикстартер лишь выразил свою позицию, он никого ни от чего не отговаривал и не в чём не убеждал. Каждый сам принимал решение изучать ли ему AS3 или нет. Так что каждая тема на форуме является личной точкой зрения её автора wink.gif.

Цитата
В общем лично меня всё устраивает, и у меня нет не одной причины не любить AS3.

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

Поэтому ты (и все желающие) можешь сделать отдельную тему, в которой рассказать о своём взгляде на AS3. О причинах его любить smile.gif. Т.е. напишите в новой теме о тех вещах, которые нравятся больше чем в AS1/AS2 - это будут аргументы за переход на AS3 (с предыдущих версий языка) или его изучение (для тех, кто только начинает заниматься флеш-разработкой).
HaWK
Цитата
HaWK, к сожалению не знает не только AS3, но и AS2 и, самое главное, AS1

Если ты про AVM, то мне не зачем знать все тонкости. Мне достаточно знать сам язык, чтобы на нём работать. А если ты задрот (прости не удержался), твои проблемы и нечего пинать на других, что они НЕ ЗАДРОТЫ. Может стоит посмотреть исходные коды Flash и всё там понять, чтобы попасть в клуб знающих AS3, AS2 и самое главное (держитесь за стулья) "AS1"?
AS1 уже знать не зачем. Если я не понимаю гибкости AS1, не означает что я не знаю синтаксис языка. На AS1 я делал ну максимум игру в шарики, и до его "гибкости" мне дела не было. У меня на выходе был результат - swf, в полнe устраивающий меня. Позже я начал заниматься чем-то серьёзным, чем "шарики" например разработкой игры для соц. сетей. Писал я эту игру на AS2 (извиняюсь, то есть на AS1 smile.gif) и дойдя до середины мне просто стало не удобно, я лазил на форуме флэшер.ру и мне посоветовали переходить уж на AS3. Я взялся читать Мука (AS3). Сейчас я переписываю игру на AS3 и полностью доволен. Так что громкие слова топикстартера "не знает" - пустые.
chingachgoog
Цитата(HaWK @ 24.10.2010 - 00:48) *
Если ты про AVM, то мне не зачем знать все тонкости. ...Если я не понимаю гибкости AS1, не означает что я не знаю синтаксис языка. ...я начал заниматься чем-то серьёзным...например разработкой игры для соц. сетей. ....я лазил на форуме флэшер.ру и мне посоветовали переходить уж на AS3. Я взялся читать Мука (AS3). ...


Как я уже тут повторял не один раз, окромя эмоций, противникам AS1 сказать нечего. И это радует.

P.S.

Знать синтаксис языка - это как знать грамматику русского языка. Знать-то можно, но писателем (программистом) от этого автоматически не сделаешься. )))

NB!

Я вот не понимаю, что тут делает серьёзный разработчик игр на AS3 для соц. сетей? Зачем ему это форум, когда есть другой, где советуют правильные вещи? Зачем человек в ранге модератора общается с какими-то задротами? Непонятно...
HaWK
Цитата
Я вот не понимаю, что тут делает серьёзный разработчик игр на AS3 для соц. сетей? Зачем ему это форум, когда есть другой, где советуют правильные вещи? Зачем человек в ранге модератора общается с какими-то задротами? Непонятно...

Я ничего не говорил про этот форум, "Эйнштейн". Этот форум для меня родной. С него я начал изучать AS и покидать я его не собираюсь. Я говорил про 14-летних задротов  wink.gif , которые корчат из себя здесь...

Цитата
Как я уже тут повторял не один раз, окромя эмоций, противникам AS1 сказать нечего

Какая извилина твоего мозга дёрнулась, чтобы ты подумал, что я противник AS1? Ничего подобного.
HaWK
Цитата
Знать синтаксис языка - это как знать грамматику русского языка. Знать-то можно, но писателем (программистом) от этого автоматически не сделаешься. )))

Ты говоришь про AS1, а не про программирование. AS1 - это ЯЗЫК. Фраза: "знать AS1", означает знать его синтаксис не более. Ошибочка у тебя вышла, "Эйнштейн" smile.gif
chingachgoog
Цитата(HaWK @ 24.10.2010 - 17:18) *
Я говорил про 14-летних задротов  wink.gif , которые корчат из себя здесь...


В HaWK-е проснулась самокритичность, что ли? Не верю... Описался, небось. Или описался. tongue.gif
tiHo
HaWK, chingachgoog, - вы Инь и Янь флеш-мира. никогда не успокоитесь.
HaWK
Цитата
В HaWK-е проснулась самокритичность, что ли? Не верю... Описался, небось. Или описался.

От безысходности нечего писать уже, да Эйнштейн? biggrin.gif
chingachgoog
30) Идиотизм Loader-а

По какой-то неведомой причине, Loader имеет метод load, но НЕ ИМЕЕТ событий, связанный с этим методом! Эти события приходят В ДРУГОЙ ОБЪЕКТ! В LoaderInfo.

"Дэти, это нильзя панять - можно толко запомнит!" (С)
HaWK
Класс Loader загружает, а экземпляр LoaderInfo хранит информацию о загружаемом объекте, что собственно и говорят названия классов. Логично и удобно. В Лоадере от того и мало свойств и методов. Этот класс предназначен для осуществления загрузки. Если его объединить в один класс с LoaderInfo - будет беспорядочно. Кстати, что тебе не нравится? Ты можешь получить всю эту информацию прямо из экземпляра класса Loader через свойство contentLoaderInfo.

PS
Так как Loader является потомком DisplayObject - вот он и унаследовал только характерные для этого класса события. Что здесь идиотического? Будет неправильно если у потомка DisplayObject будет событие httpStatus например.
chingachgoog
Цитата(HaWK @ 25.10.2010 - 13:36) *
Класс Loader загружает, а экземпляр LoaderInfo хранит информацию о загружаемом объекте, что собственно и говорят названия классов.


Loader - оболочка под загруаемый объект. Если эта оболочка имеет метод load, то почему не получает события о результатах СВОЕГО метода? Например, объект HaWK имеет метод "кушать". Что будет, если событие "хочу в туалет" будет приходить не к объекту HaWK, а к другому объекту? Страшно подумать...

Цитата(HaWK @ 25.10.2010 - 13:36) *
Логично и удобно.


Логично - в URLLoader (AS3) или MovieClipLoader (AS1). Есть загрузчик с методом загрузки. Туда же приходят события о результатах ИХ ЖЕ методов.
А насчет удобства - с этим не спорю. Кому-то удобно может и гланды автогеном через одно место вырезать.

Цитата(HaWK @ 25.10.2010 - 13:36) *
Так как Loader является потомком DisplayObject - вот он и унаследовал только характерные для этого класса события. Что здесь идиотического?


LoaderInfo  отнаследован от EventDispatcher.
И URLLoader  отнаследован от EventDispatcher.
У URLLoader есть метод load и он принимает события от СВОЕГО метода.
А у LoaderInfo НЕТ метода load, и он принимает события от ЧУЖОГО класса.

HaWK считает, что тут нет идиотизма. Спорить не буду. Но что-то помешало HaWK-у совсем недавно поймать событие загрузки - а ведь так "все логично", тем более для "серьезного разработчика AS3" )))
chingachgoog
31) "Легкие" глубины.

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

В AS1 есть мощнейший метод swapDepths. А в AS3 есть только его жалкие подобия: swapChildren и swapChildrenAt.
Поменять глубины объектов теперь на AS3 не так просто, а когда дело касается вставить объект на определенную глубину - то вообще швах.
HaWK
Цитата
Если эта оболочка имеет метод load, то почему не получает события о результатах СВОЕГО метода?

См. свойство contentLoaderInfo. Оно принадлежит классу Loader. Хранит в себе экземпляр LoaderInfo и все события приходят можно сказать в это свойство.

Просто написать лишнюю строчку для "Senior Programmer-а" оказывается слишком трудной задачей:
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, ....);

Цитата
Но что-то помешало HaWK-у совсем недавно поймать событие загрузки

Недавно - это было не давно. А сейчас - это сейчас. Тогда я не додумался сразу почитать в документации, а сразу на форум (по привычке). Так что это тут совершенно не причём.
Русская версия IP.Board © 2001-2016 IPS, Inc.