PDA

Просмотр полной версии : Пространство имен AS3


Zone71
13.07.2007, 13:39
Добрый день!
Предупрежу сразу, в AS3 не знаток, но пришлось "опрокинуться" на него по ходу работы.
Суть в следующем:
Насколько правильно я понял из справки, наследование в AS3 осуществляется на основе двух принципов:
1. Наследование посредством прототипов;
2. Наследование посредством фиксированных свойств и методов (fixed properties and methods).
Причем наследование на основе фиксированных свойств играет более важную роль, чем наследование посредством прототипов.
Чтобы совместить эти два принципа из-за совместимости, с одной стороны, с ECMAScript Edition 4, с другой - Flash Player API, используется пространство имен AS3.
Собственно вопрос и в этом: какова польза от такого механизма?
Ведь, казалось бы, наследование посредством прототипов более удобен, нежели фиксированные свойства, хотя бы по той причине, что, например, в этом случае возможно переопределение методов вне класса.

etc
13.07.2007, 13:44
Можно создать собственное пространство имен, которое будет доступно наследникам. Можно создать множество методов с одним и тем же именем, но в разных пространствах.

Zone71
13.07.2007, 14:15
Ясно, благодарю. По поводу наследования, а именно the traits object: выходит так, что теперь подклассы не просто наследуют свойства у своих суперклассов, но и хранят их в своих traits object, и из-за этого нет необходимости в использовании прототипов, точнее не в той степени, что было раньше, и в прокрутке цепочки прототипов.
P.S. Не понятно следующее: почему в некоторых темах раздела ActionScript 3 пишут выражения типа "во .fla файлах никто код не пишет" ?
Почему тот же код, что пишется в отдельном .as файле и отмечается в качестве класса документа, нельзя писать в .fla?

etc
13.07.2007, 14:28
P.S. Не понятно следующее: почему в некоторых темах раздела ActionScript 3 пишут выражения типа "во .fla файлах никто код не пишет" ?
Почему тот же код, что пишется в отдельном .as файле и отмечается в качестве класса документа, нельзя писать в .fla?
Потому что это устаревшая практика. Код пишется в as-файлах, надо отделять логику от представления.

Zone71
13.07.2007, 15:15
...надо отделять логику от представления.
Сказано верно, но не вижу ощутимой разницы между тем и другим, имею в виду способов написания кода в .as или в .fla, кроме тех случаев, когда пишут классы. В любом случае, спасибо еще раз.

__i
13.07.2007, 15:39
Если ты хочешь седлать проект чуть больше чем банер и суешь во фла файл код, я бы тебя зарэзал, потому что есть как минимум 2 причины
1. Это безумное удовольствие поиска кода по файлу
2. Это безумно тупой редактор кода, который отличаеться от блокнота только подсветкой.

ну и бонусом AS3 уже стремиться к "взрослым" языкам, а взрослые языки, обычно непрощают всякой фигни

Zone71
13.07.2007, 16:18
Если ты хочешь седлать проект чуть больше чем банер и суешь во фла файл код, я бы тебя зарэзал, потому что есть как минимум 2 причины
1. Это безумное удовольствие поиска кода по файлу
2. Это безумно тупой редактор кода, который отличаеться от блокнота только подсветкой.

ну и бонусом AS3 уже стремиться к "взрослым" языкам, а взрослые языки, обычно непрощают всякой фигни
Мастер слов, причем бесполезных. Видно, косяк под головой развелся.
1.Это же "безумное удовольствие поиска" будет и в .as.
2.Этот же "тупой редактор кода" пока единственное, до чего додумались в Adobe.
Вот это и есть "бесполезная фигня". Сказал бы, что используй
внешний редактор - было лучше.

etc
13.07.2007, 16:19
Мастер слов, причем бесполезных. Видно, косяк под головой развелся.
1.Это же "безумное удовольствие поиска" будет и в .as.
2.Этот же "тупой редактор кода" пока единственное, до чего додумались в Adobe.
Вот это и есть "бесполезная фигня". Сказал бы, что используй
внешний редактор - было лучше.
2. А как же Flex Builder?

Zone71
13.07.2007, 16:44
2. А как же Flex Builder?
__etc, честно говоря, с Flex Builder мало знаком (и поэтому сказать ничего не могу), возможно в будущем познакомлюсь. А пока необходмио освоить AS3, хотя и технологии родственны, но AS3 представляется интереснее.

etc
13.07.2007, 16:49
__etc, честно говоря, с Flex Builder мало знаком (и поэтому сказать ничего не могу), возможно в будущем познакомлюсь. А пока необходмио освоить AS3, хотя и технологии родственны, но AS3 представляется интереснее.
Какие технологии? Во Flex тот же самый AS3.
Builder можно использовать в качестве редактора кода.
Ещё есть FlashDevelop.

Zone71
13.07.2007, 17:32
Какие технологии? Во Flex тот же самый AS3.
Builder можно использовать в качестве редактора кода.
Ещё есть FlashDevelop.
Ну и хорошо. Кажется, "одним выстрелом двух зайцев убью".
Насчет технологий: скажем так, не AS3 и Flex родственны, а Flash и Flex таковы.

etc
13.07.2007, 17:36
А флекса вообще не существует.

vooparker
13.07.2007, 18:02
А флекса вообще не существует.
и вообще ничего нет кроме 0 и 1

etc
13.07.2007, 18:05
и вообще ничего нет кроме 0 и 1
Существует фреймворк под названием Flex :)
А самой технологии никакой не существует.

vooparker
13.07.2007, 18:14
Но еще по сути к флексу как технологии можно отнести mxml диалект. Хотя тоже понятно он в as преобразуется, но ведь все во что-то преобразуеются =)

etc
13.07.2007, 18:19
На выходе мы все-равно получаем плюшку в виде Flash… как ни крути…

vooparker
13.07.2007, 18:28
ну собсна да... =)

Zone71
13.07.2007, 18:36
Признаться не расчитывал на то, что увижу настоящие загрузчики шрифтов или даже SWF обозреватели, написанные на том же ActionsScript.

etc
13.07.2007, 18:42
Признаться не расчитывал на то, что увижу настоящие загрузчики шрифтов или даже SWF обозреватели, написанные на том же ActionsScript.
http://dev.etcs.ru/blog/as3/fontloader/
http://dev.etcs.ru/blog/as3/resourcethief/

:D :D :D

Или это про них же речь? :)

Zone71
13.07.2007, 19:46
http://dev.etcs.ru/blog/as3/fontloader/
http://dev.etcs.ru/blog/as3/resourcethief/

:D :D :D

Или это про них же речь? :)
Да, про них. Идеи, конечно, хороши. Загрузчиков шрифтов кажется всего две - у вас и кого-то еще. Это на сайте Nirth нашел.
После того, как увидел SWFExplorer, появилась мысль - а нельзя ли с помощью ActionScript реализовать стандартное диалоговое окно для выбора SWF файла? Прочел справку и начал с FileReference и FileReferenceList. Использовал метод browse(), указал расширение файла посредством FileFilter и т.д. Казалось бы, все шло удачно, и вдруг облом:
по наступлении события SELECT в качестве параметра констуктора URLRequest передал значение свойства name класса FileReference, что и есть имя файла. Далее объект URLRequest передаем в констуктор URLStream и т.д. Но дело в том, что свойство name содержит только относительный путь к файлу, т.е. опять нужно, чтобы загружаемый файл был в той директории, что и сам загрузчик. Да и к тому же заголовок диалогового окна содержит типа "Select file to upload by localhost", что не совсем уместно.
Вот так и задача осталась нерешенной.

etc
13.07.2007, 19:50
И ей останется. Флеш не может обращаться к локальным файлам пользователя. Но все это вполне реализуемо в виде AIR-приложения, только не имеет смысла.

D12
14.07.2007, 02:30
я согласен с Zone71 это бесполезный спор по поводу стиля, это анологично как вечный спор относительно html-кода одни восхищаются блокнотам, другие фии... редакторами =) все дело во вкусе

etc
14.07.2007, 13:27
я согласен с Zone71 это бесполезный спор по поводу стиля, это анологично как вечный спор относительно html-кода одни восхищаются блокнотам, другие фии... редакторами =) все дело во вкусе
Где ты тут спор углядел? :D

miramax
14.07.2007, 15:29
Причем наследование на основе фиксированных свойств играет более важную роль, чем наследование посредством прототипов.
Чтобы совместить эти два принципа из-за совместимости, с одной стороны, с ECMAScript Edition 4, с другой - Flash Player API, используется пространство имен AS3.
Собственно вопрос и в этом: какова польза от такого механизма?
А вообще разницу-то понимаете ?
1. С прототипами при большом количестве типов объектов мы все функции смешаем и запутаемся =).
2. Реюзинг чужих прототив осложнён этим самым смешением.
А вот реюзинг готовых либ классов - очень простое и приятное занятие.
(ага, попробуйте переюзать кусочек кода зарытого во .фла :D )
3. При прототипном наследовании всегда получаются объекты (тип Object). А юзая строгую иерархию классов можно добиться высокой производительности за счёт типизации...
Вот например в ас3 типизированый код с математикой выполняется в сотни (!) раз быстрее. Если включить прототипную модель в ас3, то вся производительность упадёт до уровня ас1/2.

Zone71
15.07.2007, 12:21
А вообще разницу-то понимаете ?
То, что я привел, - это цитата из справки, т.е. не я их выдумал.
Да и к тому же в ActionScript не очень большой опыт имею.

1. С прототипами при большом количестве типов объектов мы все функции смешаем и запутаемся =).
2. Реюзинг чужих прототив осложнён этим самым смешением.
А вот реюзинг готовых либ классов - очень простое и приятное занятие.
(ага, попробуйте переюзать кусочек кода зарытого во .фла :D )
3. При прототипном наследовании всегда получаются объекты (тип Object). А юзая строгую иерархию классов можно добиться высокой производительности за счёт типизации...
Вот например в ас3 типизированый код с математикой выполняется в сотни (!) раз быстрее. Если включить прототипную модель в ас3, то вся производительность упадёт до уровня ас1/2.

Это учту и буду знать.