![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
![]()
Сообщение
#21
|
|
![]() Ветеран конференции ![]() ![]() ![]() ![]() ![]() Группа: Пользователь Сообщений: 1192 Регистрация: 27.02.2009 Из: Moscow Пользователь №: 9144 ![]() |
Слово свое я сдержу, вести дальше этот нелепый разговор ... я не буду. Я согласен с мужественным решением Rohan-а - если нечего сказать по существу темы, кроме флуда и истерик, то лучше эту тему покинуть, чтобы не выглядеть нелепо. Только не понимаю, зачем это надо было делать так кокетливо? Ведь все, кто читал классику (не албанскую) знают, что на вопрос "вы уже бросили пить коньяк по утрам?" не существует булевого ответа. Ну да ладно. Теперь можно спокойно перейти к обсуждению по существу. -------------------- |
|
|
![]()
Сообщение
#22
|
|
Ветеран конференции ![]() ![]() ![]() ![]() ![]() Группа: Flash Zone Team Сообщений: 4961 Регистрация: 10.03.2005 Из: Киев Пользователь №: 5 ![]() |
Rohan
Рад тебя видеть на форуме, давно тебя не было. Ты заходи почаще, интересные темы на форуме для тебя найдутся ![]() Цитата Я согласен с мужественным решением Rohan-а - если нечего сказать по существу темы, кроме флуда и истерик, то лучше эту тему покинуть, чтобы не выглядеть нелепо. Rohan и chingachgoog, ребята не сорьтесь. И не ругайтесь (в тех или иных формах) на форуме - ведите себя прилично. Цитата В свое время в сети попалась презентация "50 причин перейти на AS3", так, что тут будет (со временем) нечто вроде контрответа, а также разбор отличий AVM1 (AS1/AS2) от AVM2 (AS3). chingachgoog В этой теме я вижу ты больше сосредоточился на контрответе. Со временем также удели внимание разбору отличий между различными версиями AS и AVM. И для этого тебе стоит открыть новую тему, чтобы не смешивать всё вместе - и критику AS3 (исходя из названия темы), и спокойное сравнение всех версий AS. -------------------- Best wishes & regards,
MustLive Администратор сайта http://mlfun.org.ua |
|
|
![]()
Сообщение
#23
|
|
![]() Ветеран конференции ![]() ![]() ![]() ![]() ![]() Группа: Пользователь Сообщений: 1192 Регистрация: 27.02.2009 Из: Moscow Пользователь №: 9144 ![]() |
Откровения Lee Brimelow из адоба, или 6 причин использовать AS3:
Цитата 1. Your skills will be in high demand This, in my opinion, is the main reason anyone who currently works or is planning to work as a Flash developer should switch to the new language. All major Flash work is now exclusively being built in ActionScript 3.0. You just don't see many jobs looking for ActionScript 2.0 skills. So if you plan on working with Flash in your job, learning ActionScript 3.0 is essential. Совершенно согласен с господином Ли: адоб ЗАСТАВЛЯЕТ переходить на AS3 именно профессионалов. В ближайшем будущем профессионалам ПРИДЕТСЯ перейти на AS3 хотят они того или нет. Цитата 2. Everything you build will be faster Developers who have been working with Flash for a while have often been frustrated that our new, super-cool idea just couldn't run smoothly because of the limitations of Flash Player. ActionScript 3.0 offers up to a 10-fold increase in performance over previous versions of the language. In some cases, the performance has increased even more. This means you can control more objects on the Stage at the same time. If you want your project to look and perform at its best, moving to ActionScript 3.0 is the ultimate way to achieve this goal. А вот тут господин Ли крепко приврал. Кое-что, действительно на AVM2 летает быстрее и даже в десятки раз. Но вовсе не "всё", как вещает Ли, а совсем даже наоборот - лишь некоторые вещи. (такие как типизированные целые числа) Большинство вещей (так нужная всем отрисовка) ускорению не поддалась. Цитата 3. There's an abundance of new APIs As Flash developers, we love nothing more than getting new toys to integrate into our projects. ActionScript 3.0 includes hundreds of new APIs for working with things like XML, regular expressions, and binary sockets. Even better, the whole language has been reorganized into packages and namespaces that make it much easier to find specific language features. When you use ActionScript 3.0, your Flash toolbox is not only much fuller, it is also better organized. Никто не спорит с тем, что AVM2 имеет гораздо больше возможностей, чем AVM1. Но тут вообще нет НИКАКОЙ заслуги AS3. Это "заслуга" именно самого адоба, что они решили прикрыть AVM1 (а сней и AS1/2). Не сомневаюсь, что оставь адоб развитие AVM1 и сделав бы ее возможности сходные с AVM2, то мало кто из группы "interactive designers" (а это самая многочисленная группа) перешел бы на AS3. Но эти люди теперь смотрят п.1 от господина Ли... А вот тезис о большей "удобности" новых пакетов и их "лучшей организованности", мягко говоря, весьма спорен. Цитата 4. The display list rocks One of the biggest changes in ActionScript 3.0 is the way Flash handles visual objects in a movie. In previous versions of the language, it was practically a black art to manipulate the display order (depth) of the items in a Flash movie. A large number of hacks and workarounds existed that didn't make any sense to beginners starting to use the language. For instance, it was common practice to place visual assets at an extremely high depth in order to keep them on top of everything else in a movie. This led to a lot of problems in larger projects and required a lot of manual depth management work. The new display list in ActionScript 3.0 is a straightforward mechanism that handles how visual assets are rendered in your movie. Once you start using it, you'll wonder how you ever developed a project without it. Ну что тут скажешь? Да, господин Ли прав - список отображаемых объектов - самое большое полезное изменение в AS3. Теперь можно то, что в AVM1 было абсолютно невозможно - просто переносить мувики из одного в другой (не совсем так, но суть ясна). Но опять господин Ли не преминул солгать: работа с глубинами в AS1/2 как раз была проста и интуитивно понятна. Никаких трудностей она не представляла, тогда как в AS3 появляются огромные проблемы (см. выше пункты основного топика) связанные с виртуальностью списка отображения. За все приходится расплачиваться... Цитата 5. The object-oriented structure is better Developers particularly love the improved object-oriented structure of ActionScript 3.0. It includes things like runtime typing, sealed classes, packages, namespaces, and an overhauled event model. Programming in ActionScript 3.0 is on the same level as writing in other high-level languages like Java and C#. The new features in ActionScript 3.0 also make your code more modular, readable and extendable. Some of these features may not be used much, if at all, by interactive designers—but it is good to know that if you want to get into more advanced programming someday, the language structure is there to support you. Тут господин Ли забыл объяснить, что ООП включает в себя не только ООП на классах, но и на прототипах. Да - с точки зрения ООП на классах AS3 стал более "правильным". Но исконный AS - ООП на прототипах. AS3 вместе с адобом забил на прототипы и огромнейшие преимущества этого подхода в ООП. Да, программисту C# легко перейти на AS3 - только вот вопрос: а зачем ему переходить на AS3, когда есть WPF? Цитата 6. It's more enjoyable to work with ActionScript 3.0 This may sound subjective, but I believe it is absolutely true. Ask anyone who knows ActionScript 3.0 to go back and program a project in ActionScript 2.0 and they will surely cringe at the idea. Previous versions of the language were filled with so many bugs, hacks, and workarounds that working in ActionScript 3.0 seems almost too easy in comparison. ActionScript 3.0 does take a bit of getting used to, but the rewards are well worth the effort. Конечно, это субъективно ![]() Цитата Why does ActionScript 3.0 require more code than ActionScript 2.0? ...While it is true that ActionScript 3.0 requires a couple more lines of code... Ну тут все ясно. Без комментариев. -------------------- |
|
|
![]()
Сообщение
#24
|
|
![]() Ветеран конференции ![]() ![]() ![]() ![]() ![]() Группа: Пользователь Сообщений: 1192 Регистрация: 27.02.2009 Из: Moscow Пользователь №: 9144 ![]() |
18) Жесткий override
В AS1 очень легко было создавать наследуемые классы с одинаковыми именами свойств и методов. Ничего удивительного тут нед - цепочка видимости проходила по цепочке наследования. В AS3 одинаковые методы (имена методов) ОБЯЗАНЫ предваряться словом override! То, что в AS1 было простым: Код function MySuperClass(){} function MySubClass(){} MySuperClass.prototype.getName=function(){ trace("MySuperClass") } MySubClass.prototype.getName=function(){ trace("MySubClass") } MySubClass.prototype.__proto__=MySuperClass.prototype Стало более сложным и строгим: Код package{ public class MySuperClass { public function getName(){ trace("MySuperClass") } } } Код package{ public class MySubClass extends MySuperClass{ public override function getName(){ trace("MySubClass") } } } Без этого (без разрешения компилятора) swf не удастся собрать. Хотя, возможно, интерпретатор AVM2 такой код и понял бы. Хотя можно отменить наследование метода, расположив метод в пространстве имен private . В этом случае разрешение компилятора (в ввиде override) не потребуется. override плох тем, что ОБЯЗЫВАЕТ использовать ту же самую конструкцию метода (число аргументов, тип возвращаемого значения), что и в суперклассе. Про гибкость AS1, когда метод подкласса с тем же именем, что и в суперклассе, мог иметь другую конструкцию (число аргументов, тип возвращаемого значения) можно забыть. Если же программист оставил в суперклассе атрибут final, то вообще невозможно добавить в подкласс метод с тем же именем. 19) override возможен только у методов, но не у переменных (свойств). Из-за этого свойства приходиться прятать в private пространстве имен. Без этого компилятор опять-таки не разрешит сборку swf. (Конечно, можно сделать эмуляцию свойств с тем же именем, при помощи методов get/set) Разумеется ничего подобного не было в AS1, где легко и просто создавались не только методы, но и свойства с одинаковыми именами, безо всяких конфликтов между собой. 20) Убогий super super в AS3 можно выполнить только внутри описания класса. А что делать, если мы хотим из экземпляра класса вызвать метод, который у нас уже перезаписан? Синтаксис экземпляр.super.метод() невозможен. Поэтому остается лишь ДОБАВИТЬ НОВЫЙ метод в класс, где (в методе) будет использоваться super Неужели в AS1 можно было писать экземпляр.super.метод()? Практически да! Разумеется само командное слово super использовалось также - в методе функции класса или ее конструкторе. Но можно было написать: Код экземпляр.__proto__.__proto__.метод() И вуаля - любой экземпляр подкласса может использоваться как экземпляр своего суперкласса (квинтессенция полиморфизма). 21) Кстати о полиморфизме. Например, Мук на с. 156 (своей книги по AS3) дал такое определение полиморфизму (см. п.20 выше), а потом долго показывал примеры из которых вовсе не следовало это определение! Много разговоров про интерфейсы, оверрайды и суперы, но ни одного примера, когда экземпляр подкласса используется ВМЕСТО экземпляра суперкласса. Ну да, можно создать НОВЫЙ метод в подклассе, где super будет вызывать переписанный (override) метод суперкласса. Если же взять еще более абстрактное определение полиморфизма - это некий одинаковый код, который при разном наследовании дает разные результаты, то тут AS3 вообще не у дел. Например, такое в AS3 в принципе НЕВОЗМОЖНО: Код function Polymorph(){
} Polymorph.prototype.getAngle=function(angle){ trace(this.getSin(angle)) } function Degree(){ } Degree.prototype.getSin=function(angle){ function convert(){ return angle*Math.PI/180 } return Math.sin(convert()) } function Radian(){ } Radian.prototype.getSin=function(angle){ return Math.sin(angle) } obj=new Polymorph() Polymorph.prototype.__proto__=Degree.prototype obj.getAngle(90) // 1 obj.getAngle(Math.PI/2) // 0.0274121335920443 Polymorph.prototype.__proto__=Radian.prototype obj.getAngle(90) // 0.893996663600558 obj.getAngle(Math.PI/2) // 1 Сообщение отредактировал chingachgoog - 8.04.2009 - 17:56 -------------------- |
|
|
![]()
Сообщение
#25
|
|
![]() Ветеран конференции ![]() ![]() ![]() ![]() ![]() Группа: Пользователь Сообщений: 1192 Регистрация: 27.02.2009 Из: Moscow Пользователь №: 9144 ![]() |
22) Немного об ECMAScript.
Несмотря на широко распространенное заблуждение, что AS3 наиболее близок с спецификации ECMAScript - это далеко не так. Это легко понять, если посмотреть пространства имен для компилятора: 1) as3 - тут все понятно (по умолчанию true) 2) es - не что иное, как пространство имен ECMAScript (по умолчанию false!) Адобовцы вобщем-то пишут об этом сами: Цитата Для совместимости со спецификацией языка ECMAScript, на которой основан ActionScript, требуется наследование прототипов, то есть методы и свойства базового класса должны определяться в объекте прототипа класса. Но это наследование (на основе прототипов) в AS3 выполнено крайне убого и по-видимому лишь "для галочки", т.е. лишь для "совместимости со спецификацией языка ECMAScript". Мне пока не понятна такая зацепка за ECMAScript. Ну сделали аналог си шарпа, чего тогда за ECMAScript цепляться? Ведь вся мощь прототипного стиля в AS3 убита - нет __proto__ (т.е. через экземпляр класса к прототипу не обратишься). -------------------- |
|
|
![]()
Сообщение
#26
|
|
Новичок ![]() Группа: Новичок Сообщений: 1 Регистрация: 28.04.2009 Пользователь №: 9204 ![]() |
Специально даже зарегился на форуме, чтобы была возможность ответить в ветке.
Я очень уважаю людей, объективно мыслящих (про профессионализм молчу). Например, столкнулся с человеком, который пишет на С и отзывается о Джаве: пункт такой-то - велколепная реализация, пункт такой-то - из версии в версию совершенствуется, пункт Н - не ожадал такой халтуры и т.д. Мне понравился его вывод: в целом то-то и то-то мне очень понравилось, был бы счастлив видет это "то-то" в С, но переходить не хочу и не буду исключительно из-за отношения к продукту, многолетнему отношению и преданности к С. И я его понимаю и признателен, так как сам джавист - не оспаривает многие зачастую очевидные вещи, но позиция остается прежней. Пункты chingachgoog в подавляющем большинстве своем - возможно, не бред, но слегка напоминает ... И доводы бестолковые. Я сам ранее "сидел" на AS2 и постоянно бесила его бесформенность и "гибкость", практически отсутствие стандартизации, присущей скриптовым языкам. То, что для меня он был практически на одном уровне с JavaScript, это точно - вроде неплохо, пользуешься и используешь, но "серьезности" не ощущаешь. Вот для кого он очень удобен - это дизайнеры: код не очень любят, да и не очень нужен, а если что - можно и в кадр запихнуть. А эта работа с событиями: хочешь так, хочешь эдак (5 способов!) ... а потом вылазит: и оттуда, и отсюда. Наконец-то навели порядок, чему бесконечно рад: если язык объектно-ориентирован, то и подчиняться он должен законам ООП. Нужен мультик или баннер - это AS2, что-либо "посерьезней" - AS3. Но сравнивать, да еще с преимуществом первого - это форменный идиотизм. Штамповка "причин не любить" говорит явно не в пользу топикстартера. Rohan, респект за объективный подход и грамотное высветление чужих заблуждений ... а то вдруг люди (новички, т.к. знающие и так знают) усомнятся в развитии языка в правильном направлении. |
|
|
![]()
Сообщение
#27
|
|
![]() Ветеран конференции ![]() ![]() ![]() ![]() ![]() Группа: Пользователь Сообщений: 1192 Регистрация: 27.02.2009 Из: Moscow Пользователь №: 9144 ![]() |
IDVsbruck, спасибо, что заинтеросовались этой веткой.
Надеюсь, что у вас будет, что сказать по существу вопроса. А эта работа с событиями: хочешь так, хочешь эдак (5 способов!) ... а потом вылазит: и оттуда, и отсюда. Наконец-то навели порядок, чему бесконечно рад Не понимаю. Выбираете один способ, который вам нравится и работаете с ним. Ничего "вылезать" не будет. А "порядок" заключается в том, что попросту закрыли другие возможности, которые, возможно, для других были очень удобны? Так это не порядок называется, а совсем по-другому. если язык объектно-ориентирован, то и подчиняться он должен законам ООП. AS1 полностью объектно-ориентированный язык. Какие тут могут быть проблемы с "законами ООП"? Нужен мультик или баннер - это AS2, что-либо "посерьезней" - AS3. Но сравнивать, да еще с преимуществом первого - это форменный идиотизм. AS2 - это всего лишь другая обертка AS1. Разницы между AS1 и AS2 на уровне байт-кода нет никакой (у AS2 он чуть более громоздкий). AS2 (код во внешних файлах с использованием слова class) как язык я тут даже не рассматриваю. После выхода AS3 в таком стиле (ООП на классах) имеет смысл программировать лишь на AS3. А AS2 знать лишь постольку, поскольку он может встретиться в проектах, с которыми придется работать. А вот фраза, что AS1 и сравнение AS3 с AS1 - "это форменный идиотизм" требует доказательств. Пока это голословное утверждение целиком на совести IDVsbruck. Тем более ни один пункт из перечисленных выше не рассмотрен. а то вдруг люди (новички, т.к. знающие и так знают) усомнятся в развитии языка в правильном направлении. Новичкам надо знать (а остальные, исключая, верующих, и так знают): профессионалам придется учить AS3, но это вовсе не означает, что развитие языка идет в правильном направлении. Все "преимущества" AS3 заключаются не в силе AS3 как языка, а лишь в том, что у AVM2 есть преимущества над AVM1 (реальные и без шуток). -------------------- |
|
|
![]()
Сообщение
#28
|
|
![]() Активный участник ![]() ![]() ![]() Группа: Пользователь Сообщений: 300 Регистрация: 23.04.2006 Из: Днепропетровск, Украина Пользователь №: 317 ![]() |
Rohan, респект за объективный подход и грамотное высветление чужих заблуждений ... а то вдруг люди (новички, т.к. знающие и так знают) усомнятся в развитии языка в правильном направлении. Добро пожаловать в клуб людей, понимающих, что король-то голый ![]() З.Ы. тот факт, что в этой теме больше никто ничего не говорит, означает, на мой взгляд, одно: народу глубоко, простите, по*уй нечеловеческие старания бедняги, пытающегося доказать что копейка круче Q7 - топлива-то меньше жрет. Кто в состоянии позволить себе Q7 - ездят на Q7. -------------------- прочь из моей головы |
|
|
![]()
Сообщение
#29
|
|
Новичок ![]() Группа: Пользователь Сообщений: 33 Регистрация: 30.01.2008 Пользователь №: 4046 ![]() |
Ребята, я вот почитал тут ваш баталии и прям скажу что немного растерялся, я с ActionScript совсем не знаком ни с 1 ни с 2 и 3, вот хочу начать учить, есть литература Мука по AS2 и AS3, по этому спрашиваю вас - что лучше начинать учить с нуля? Боюсь что пока я хоть немного начну понимать в AS2 то уже будет AS4 если не AS5
![]() Может сразу начинать с третьего или все же необходимо знать второй чтобы понимать в чем суть языка, что посоветуете? |
|
|
![]()
Сообщение
#30
|
|
![]() Ветеран конференции ![]() ![]() ![]() ![]() ![]() Группа: Пользователь Сообщений: 1192 Регистрация: 27.02.2009 Из: Moscow Пользователь №: 9144 ![]() |
...я с ActionScript совсем не знаком ни с 1 ни с 2 и 3, ...по этому спрашиваю вас - что лучше начинать учить с нуля? Учите тогда сразу C# и как раз к распространению WPF (и ее частности вроде сильверлайта) успеете. А зная C# вы легко сможете перейти на AS3 (только сомневаюсь, что захотите). Если же выбирать из AS, то учите AS3 и уж точно не учите AS2 (хотя неплохо знать AVM1 и ее язык AS1). Причем надо еще взвесить нужен ли вам ООП стиль. Если нет, то большинство книжек по AS3 вам не нужны - достаточно русского хелпа. (я видел много коммерческих буржуинских проектов на AS3 где не используется ООП и код написан на таймлайне). add: А вообще я предпочитаю учить не язык, а базис на котором он основан - в данном случае AVM. Когда я разобрался с AVM1 мне сразу полностью понятны стали и AS1 и AS2. Поэтому даже если и выйдет AS4, то вряд ли выйдет AVM3 и есть смысл изучать именно AVM2. (см. отдельную мою тему по AVM2). Сообщение отредактировал chingachgoog - 3.05.2009 - 14:08 -------------------- |
|
|
![]()
Сообщение
#31
|
|
![]() Ветеран конференции ![]() ![]() ![]() ![]() ![]() Группа: Пользователь Сообщений: 1192 Регистрация: 27.02.2009 Из: Moscow Пользователь №: 9144 ![]() |
23) Писать код на таймлайне можно, но только очень осторожно...
Хотя адоб и ее представители и утверждают, что мол для тех, кто пишет код в кадрах ничего не поменялось, мягко говоря - это не так. Код на таймлайнах в AS3 преобразуется (автоматически) в код класса таймлайна (см. п.6). Поэтому то, что было раньше доступно в AS1/2 теперь невозможно без хитрости в AS3: Например такой код был возможен в AVM1 в первом фрейме таймлайна Код function a(){} И этот же код можно было повторить во 2-м фрейме, третьем и т.п. Т.е. можно было переназначить непосредственно функцию. В AVM2 компилятор такого не позволит. Надо делать по-другому (создавать указатель на анонимную функцию): в первом кадре объявть переменную (строго с ключевым словом var) Код var a=function(){} В остальных кадрах можно менять значение этой переменной (давать другую безмянную функцию). Естественно второй раз использовать ключевое слово var уже нельзя. Код a=function(){} Отсюда же и возможные грабли: /forum/index.php?showtopic=3089 add: PS подробнее тут Сообщение отредактировал chingachgoog - 10.06.2009 - 12:21 -------------------- |
|
|
![]()
Сообщение
#32
|
|
![]() Ветеран конференции ![]() ![]() ![]() ![]() ![]() Группа: Пользователь Сообщений: 1192 Регистрация: 27.02.2009 Из: Moscow Пользователь №: 9144 ![]() |
24) Глобальный объект и глобальная видимость.
Сразу скажу, что объект Global в AVM2 есть и его не может не быть (туда, например записываются ссылки на классы, как это и было в AS2). Естественно есть и глобальная видимость. Однако. Дяди из адоба не любят простых решений. Ссылка на объект Global (типа _global) исчезла. Зато появились другие "радости жизни": - Нельзя напрямую обратиться к глобальному свойству, наподобие Код _global.имя_моего_свойства надо ждать пока флеш-плеер просмотрит ВСЮ область видимости и дойдет до глобального объекта. Это же рождает проблему с неоднозначностью имен. - Флеш-плеер просматривает именно ВСЮ область видимости. Т.е. если в AVM1 флеш-плеер успевал находить нужное имя на одном из этапов проверки цепочки имени, то далее цепочка не проверялась и время на дальнейшую проверку не тратилось. В AVM2 если имя нашлось, то продолжается поиск имен до самого конца цепочки (глобального объекта) - Задать глобальное свойство/функцию/класс становиться невероятно сложно. На КАЖДОЕ свойство/функцию/класс надо написать ОТДЕЛЬНЫЙ ФАЙЛ .as c ТЕМ ЖЕ ИМЕНЕМ что и видимое внешнее (внутри блока безымянного пакета package с пространством имен public Файл свойство1.as Код package { public var свойство1="значение1" } Т.е. если таких свойств/функций у вас десять - то будет нужно десять отдельных .as файлов. - По этой же причине задать глобальное свойство с таймлайна невозможно Что же предлагают дяди из адоба взамен _global? А ничего хитрого. Задавайте говорят статическое свойство некоторого глобального (в безымянном пакете) класса. А потом обращайтесь к нему через имя этого класса! Надо же какая "глобальность" выходит... -------------------- |
|
|
![]()
Сообщение
#33
|
|
![]() Ветеран конференции ![]() ![]() ![]() ![]() ![]() Группа: Пользователь Сообщений: 1192 Регистрация: 27.02.2009 Из: Moscow Пользователь №: 9144 ![]() |
25) Они убили watch()...
Нету его теперь: Цитата watch() Метод Удалено Используйте свойства средств доступа (функции get/set) или класс flash.utils.Proxy для достижения аналогичной функциональности. Конечно, "аналогичная функциональность" - это хорошая мина, при плохой игре. Метод watch - очень мощная и удобная штука на AVM1. Причем работающая ПО-ДРУГОМУ, чем геттеры и сеттеры (на AVM1 они задавались через addProperty() ) Неужели писатели "хелпа" этого "не знали"? Кстати, смешна причина, по которой хелпописателям пришлось вспоминать про класс Proxy - там есть подобие addProperty() под названиями getProperty и setProperty - просто по-другому ДИНАМИЧЕСКИ задать геттеры и сеттеры в AVM2 НЕЛЬЗЯ! Геморрой с использованием Proxy еще тот (см. подробнее далее, когда я дойду до __resolve). От безысходности многие в сеттер добавляют dispatchEvent - тоже вариант. Сообщение отредактировал chingachgoog - 15.06.2009 - 13:14 -------------------- |
|
|
![]()
Сообщение
#34
|
|
![]() Ветеран конференции ![]() ![]() ![]() ![]() ![]() Группа: Пользователь Сообщений: 1192 Регистрация: 27.02.2009 Из: Moscow Пользователь №: 9144 ![]() |
26) Нет глобальных событий (например, мыши)
...Геморрой с глобальностью продолжается... Ну нет и все! Мук с досады предлагает регистрировать приемник событий мыши на stage. Но только это не решение, а фигня полная: - во-первых придется писать ДВА обработчика (на фазе захвата и на фазе обработки с игнорированием фазы подъема) - догадайтесь почему ![]() - во-вторых, и это самое печальное для сетевых флешек, ФП для AVM2 не захватывает событие скролла, например. И html-страница скролиться ВМЕСТЕ с тем, что должно скроллиться только в ФП. Последняя проблема сейчас решается тем, что добавляется слушатель глобальных событий (мыши) на AVM1, который по LC передает это ролику на AVM2. PS В случае с глобальным событием обработчиков клавиатуры - все гораздо хуже. Стейдж теряет фокус при добавлении новых объектов в лист отображения! Надо заново устанавливать ему фокус, для поимки KeyboardEvent. Сообщение отредактировал chingachgoog - 28.03.2011 - 15:43 -------------------- |
|
|
![]()
Сообщение
#35
|
|
Ветеран конференции ![]() ![]() ![]() ![]() ![]() Группа: Flash Zone Team Сообщений: 4961 Регистрация: 10.03.2005 Из: Киев Пользователь №: 5 ![]() |
Цитата 26) Нет глобальных событий (например, мыши) Да, это жёстко. Цитата Последняя проблема сейчас решается тем, что добавляется слушатель глобальных событий (мыши) на AVM1, который по LC передает это ролику на AVM2. Т.е. люди страдают различными геморроями, для того чтобы пропатчить новые "возможности" флеша, исключительно из-за маразма Адоба. Замечу, что Макромедия такими маразмами не страдала (от 1 по 8 версию флеша). Адоб местами сильно перегнула палку. Посмотрим как флеш будет развиваться дальше. И не исправит ли Адоб во флеше 11 что-либо из того, что ты, chingachgoog, написал в этой теме ![]() -------------------- Best wishes & regards,
MustLive Администратор сайта http://mlfun.org.ua |
|
|
![]()
Сообщение
#36
|
|
![]() Ветеран конференции ![]() ![]() ![]() ![]() ![]() Группа: Пользователь Сообщений: 1192 Регистрация: 27.02.2009 Из: Moscow Пользователь №: 9144 ![]() |
Т.е. люди страдают различными геморроями, для того чтобы пропатчить новые "возможности" флеша, исключительно из-за маразма Адоба. Я бы ЭТО не назвал маразмом. Это всего лишь новые особенности (ПО СРАВНЕНИЮ с AVM1) о которых стыдливо не принято говорить. Особенности эти проистекают, на мой взгляд из-за архитектуры AVM2. Поэтому надеяться на улучшение/исправление вряд ли приходится. Адоб взяла курс на увеличение производительности при помощи динамической трансляции кода - отсюда все жесткие ограничения. Однако основные тормоза (прорисовка графики) этим не лечаться. Поэтому мне, например, совсем не очевидно, что это верный путь. Что бы я назвал маразмом - так. это забрасывание апгрейдов AVM1 - все равно ее будут во все новые ФП впихивать для обратной совместимости еще много лет. -------------------- |
|
|
![]()
Сообщение
#37
|
|
Новичок ![]() Группа: Новичок Сообщений: 6 Регистрация: 8.06.2009 Пользователь №: 9302 ![]() |
Может баян, но я не нашел ни одного аргумента со стороны %username%. Скажем, если мы пишем на AS2/1 (для веб), то предполагается, что на браузер пользователя установлен Flash player не ниже 9 версии, в то время как As3 предполагает наличие версии >=9. На вряд ли, у всех рядовых пользователей интернета стоит плаер выше 8 версии, заставлять выкачивать пользователя плагин, только для того, что посетить ваш ресурс - по меньшей мере не разумно (да я думаю он откажется и свалит в другое место, я бы так и сделал).
|
|
|
![]() ![]()
Сообщение
#38
|
|
Новичок ![]() Группа: Новичок Сообщений: 7 Регистрация: 18.06.2009 Пользователь №: 9330 ![]() |
Тоже специально зарегался:
18) Жесткий override 19) override возможен только у методов, но не у переменных (свойств) 20) Убогий super во первых переменная и свойство это ни одно и тоже не путайте их во воторых если вы хотите изменить описание метода то возможно это уже другой метод (или вы не правильно выбрали описание в базовом классе) потомучто то очем говорите вы - не ооп. в третьих про супер - есть конструкция as : Код var obj:Object = getMyCustomObject(); var customObj:MyClass = obj as MyClass; 21) полиморфизм (см википедию) Полиморфизм реализуется с помощью наследования классов. Класс-потомок наследует сигнатуры методов класса-родителя, но реализация этих методов может быть другой, соответствующей специфике класса-потомка. as3 это не ява скрипт - это полноценный ООП!!!! "Например, такое в AS3 в принципе НЕВОЗМОЖНО:" - кто вам это сказал? просто делаетс базовый класс a radial degree его потомки и все! 23) а если 100 кадров и на 45 функция переопределяется а на 53 используется как все это разбирать? |
|
|
![]()
Сообщение
#39
|
|
![]() Ветеран конференции ![]() ![]() ![]() ![]() ![]() Группа: Пользователь Сообщений: 1192 Регистрация: 27.02.2009 Из: Moscow Пользователь №: 9144 ![]() |
во первых переменная и свойство это ни одно и тоже не путайте их А никто их и не путает. ![]() Это сказано в контексте override по сравнению с AS1, где вообще никаких проблем с именованием переменных (в т.ч. свойств) нет. во воторых если вы хотите изменить описание метода то возможно это уже другой метод Возможно хотеть что угодно. Но то что в AS1 было сверхгибко, в AS3 загнано в строгие тесные рамки. Собственно об этом п.18 С чем вы не согласны? то очем говорите вы - не ооп. ООП гораздо шире ЧАСТНОГО случая ООП, как ООП на классах. ООП - это всего лишь три кита: наследование, инкапсуляция и полиморфизм. Все. Больше ничего для ООП не требуется (как не требуется, о ужас, ключевые слова типа "class", "private", "override" и т.д.) Именно потому, что все эти три кита легко достижимы на AS1 - AS1 - язык ООП. в третьих про супер - есть конструкция as : Код var obj:Object = getMyCustomObject(); var customObj:MyClass = obj as MyClass; При чем тут приведение типов через as и супер? 21) полиморфизм (см википедию) Мне больше нравиться про полиморфизм у Бадда. http://grizlyk1.narod.ru/badd/14.htm Полиморфизм реализуется с помощью наследования классов. Класс-потомок наследует сигнатуры методов класса-родителя, но реализация этих методов может быть другой, соответствующей специфике класса-потомка. Я писал пр очередной перл Мука: Колин Мук. Action Script 3.0 для Flash Подробное руководство. Глава 6. Наследование. Полиморфизм и динамическое связывание. Цитата Полиморфизм - это возможность, присущая всем настоящим объектно-оринтированным языкам программирования, которая заключается в том, что экземпляр подкласса может быть использован везде, где допустимо применение экземпляра его суперкласса. Само по себе слово "полиморфизм" буквально обозначает "множество форм" - любой объект можно рассматривать как экземпляр собственного класса или как экземпляр любого из его суперклассов. Поэтому в п.20 я немного поглумился над Муком, как он в AS3 собирается ЭКЗЕМПЛЯР подкласса использовать ВМЕСТО (полноценно) ЭКЗЕМПЛЯРА суперкласса, если мы перепишем в подклассе метод суперкласса? В AS1 это легко можно, а в AS3 - нет (см. выше) Но вы правы. Полиморфизм - это В ТОМ ЧИСЛЕ И ТО, о чем вы написали (см. ссылку на Бадда). Просто он не только ограничен этими рамками. Полиморфизм - это вообще более архитектура логики, он возможен даже в языках, которые не являются языками ООП. as3 это не ява скрипт - это полноценный ООП!!!! JS, так же как и AS1, так же как и AS3 - языки полноценного ООП. Но JS и AS1 будучи прототипными, более гибкие, чем AS3. "Например, такое в AS3 в принципе НЕВОЗМОЖНО:" - кто вам это сказал? просто делаетс базовый класс a radial degree его потомки и все! Вы видимо не поняли код AS1. ![]() Попробуйте написать то же, но на AS3. А потом уже говорите, что это "просто". 23) а если 100 кадров и на 45 функция переопределяется а на 53 используется как все это разбирать? В смысле кому разбирать? Я просто написал об очередных граблях с AS3. Грабли есть? Есть. И надо понимать механизм граблей. -------------------- |
|
|
![]()
Сообщение
#40
|
|
Новичок ![]() Группа: Новичок Сообщений: 8 Регистрация: 19.06.2009 Пользователь №: 9333 ![]() |
Я вот люблю алкоголь попивать, даже очень, покуриваю иногда. Но топикстартер употребляет нечто невероятно мощное, штырит его просто ураган.
ps как и остальные добрые самаритяне, специально зарегился, дабы отметить сей примечательный факт pps с топистартером на одном проекте работать бы не смог |
|
|
![]() ![]() |
![]() |
Текстовая версия | Сейчас: 19.09.2014 - 17:52 |