|
|
|||||
МЕГАФЛЭШЕР
Регистрация: May 1999
Адрес: Россия, Москва
Сообщений: 1,181
|
НЕМНОГО О СЕДЬМОМ Flash (статья)
НЕМНОГО О СЕДЬМОМ FLASH
Хочу в одной статье зафиксировать мысли, которые возникли у меня при изучении неких материалов о седьмом Flash. СРЕДА РАЗРАБОТКИ С выходом семерки мы будем иметь два редактора Flash: для дизайнеров и для разработчиков. В редакторе для дизайнеров, можно заниматься только графикой. Дизайнеру не нужно писать код, и он может пользоваться только готовыми решениями, которые будут храниться в специальном меню: «behaviors» (по принципу DreamWeaver) Редактор для разработчиков(developers), создан уже для других задач и для других товарищей . Он будет включать в себя все возможности «дизайнерской» редакции, но будет основан на «традициях» и наработках сообщества программистов. Работа с кодом, с компонентами, с библиотекой будет реализована уже на другом уровне. Будут созданы специальные функции для управления проектом и командой разработчиков. Пока не понятно, каким по счету будет заявленный недавно редактор Royale. Выскажу предположение. Судя по крупицам информации, которая доступна на данный момент, Royale будет еще одним шагом от «визуальной» и «дизайнерской» среды разработки в сторону общепринятых стандартов в профессиональных средах разработки приложений. То есть мы в будущем, возможно, будем иметь три варианта Flash редактора. РАСШИРЯЕМАЯ СРЕДА РАЗРАБОТКИ Выполняя пожелания разработчиков значительно упростится работа с рутинными операциями. Запись и воспроизведение макросов, создание собственных инструментов и меню. Создание специальных приложений для упрощение командной работы. Разработчики смогут как обмениваться своими наработками, так и продавать их. Для этого разработан специальный язык на основе JavaScript, из которого можно вызвать любую команду Flash редактора, и работать с каждым его объектом. И если вас что-то не устраивает в вашем Flash-редакторе – перепишите это! РАБОТА С ПРОЕКТАМИ С некоторого времени стало очевидным, что разработка во Flash значительно упрощается и упорядочивается, если использовать компоненты. Опыт разработки показывает, что идеология разработки на основе компонентов постепенно превращается в главную и основополагающую стратегию разработки Flash-приложений (Component based strategy). Где каждый элемент приложения – компонент и само приложение – это компонент. Личное мнение: идеология компонентов очень успешно может быть использована и в графическом дизайне (Component based design). Очевидно, что в седьмой версии работа с компонентами значительно более развита. В МХ компонент – это элемент библиотеки. В «семерке» компонент – это внешний, уже скомпилированный файл. Это как значительно убыстряет тестирование и компиляцию всего проекта, так и позволяет разработчиками «скрывать» реализацию своих компонентов. Выскажу предположение, что для новых компонентов будет использован подход из Java. Не совсем понятно, как будут помещаться компоненты в конечный файл (или у разработчика будет выбор?). Либо код из компонента будет перенесен в конечный SWF? Или же компонент будет находиться «внешне» и будет «становится частью приложения» уже при его инициализации? Очевидно, что разрабатывать «начинку» для компонентов будут программисты. Как следствие, значительно упрощена работа с компонентами для программистов. Работа с ними станет менее «визуальна», и настраивать параметры компонентов можно будет прямо в коде. Код хранится во внешних файлах, код для работы компонента легко может быть импортирован из другого компонента. РЕВОЛЮЦИИ В СИНТАКСИСЕ AS Что называется «допросились». И Макромедия дала нам то, что многие ее просили. «Хотели ООП – получите Java Style OOP». Вот примерно такие чувства вызывает у меня изучение новых возможностей ActionScript. Пройдемся по главным нововведениям в синтаксисе. Работа с классами как в Java Пример, в котором используется синтаксис МХ и Семерки для создания класса: //************************************************************************* // шестерка function ClassName() { // код инициализации } ClassName.prototype = new MovieClip(); ClassName.prototype.counter = 12; ClassName.prototype.method = function() { // код метода } //************************************************************************* // семерка class ClassName extends MovieClip { var counter = 12; function ClassName() { // код инициализации } function method() { // код метода } } Отличие только в использовании ключевого слова «function» (сделано думаю для обеспечения преемственности) Доступ к классам Нововведения при работе с классами не ограничены только появлением новой конструкцией для их создания. Вторая революция в синтаксисе, заключается в управлении доступа к методам и свойствам класса. Используя спецификаторы public, private и static, мы можем легко разрешить и запретить доступ к нашему классу «извне». Пример: class ClassName extends MovieClip { static var counter = 12; // доступ к методу закрыт "снаружи" private function ClassName() { // код инициализации } // метод доступен "снаружи" public function method() { // код метода } } Типы данных Тот же пример класса, но уже с типами данных: //************************************************************************* // семерка class ClassName extends MovieClip { static var counter:Number = 12;// указыавем тип Number параметру counter public function method(s:String)// указыавем типа "строка" аргументу s { trace(s) } } Будем надеяться, что указание данных должно ощутимо сказаться на производительности. Общие данные для всех экземпляров класса Почти неизведанные возможности для Flash разработчиков таятся в новом спецификаторе static. Точнее сказать так, подобные возможности можно было реализовать и раньше, но выглядело это так «криво», что почти никто подобным приемом не пользовался. А все просто и удобно, например мы хотим знать количество всех экземпляра некого класса. И изменяя это поле, новое значение будет доступно всем экземплярам класса. Два примера реализации одного и того же (в «шестерке» и в «семерке») //************************************************************************* // 6 style function className() { // при создании экземпляра увеличить счетчик на единицу this.__proto__.counter++; } className.prototype.getCounter = function() { return counter; } //************************************************************************* // 7 style class className { static var counter; function className() { // при создании экземпляра увеличить счетчик на единицу counter++; } function getCounter() { return counter; } } Последний раз редактировалось john; 17.07.2003 в 21:07. |
|
|||||
МЕГАФЛЭШЕР
Регистрация: May 1999
Адрес: Россия, Москва
Сообщений: 1,181
|
Короткая жизнь метода «addProperty»
Просуществовав одну версию Flash, данный метод изжил себя, так как изменилась вся концепция ООП во Flash. Данный код в полной мере иллюстрирует изменения в «семерке»: //************************************************************************* // 6 style this.addProperty("testProp", function() { return this.__testProp; }, function(v) { this.__testProp = v; }); //************************************************************************* // 7 style function get testProp() { return this.__testProp; } function set testProp(v) { this.__testProp = v; } Интерфейсы Концепция ООП Java предполагает дополнительный подход для упорядочивания и структурирования работы классов. Этот подход предполагает то, что кроме наследования от класса к классу своего внутреннего устройства можно выделить специальные абстрактные описания интерфейсов классов (не путать с абстрактными классами). И классы не связанные между собой «узами наследования» могут иметь общие интерфейсы, которые они наследуют из одного общего для них шаблона. Это новый путь для еще более развитой работы с классами. Это действительно большая тема и здесь достаточно привести код: // общий интерфейс работы с валютой interface Currency { // сигнатура (описание) метода интерефейса форматирования валюты // (например: 12.1 в вид "12.10" function formatCurrency(c:Number); // сигнатура метода конвертирования валюты function convertCurrency(from:Object, to:Object); } // некий компонет для отображения текстовых данных class textDisplay extends Movieclip implements Currency { // реализация метода formatCurrency function formatCurrency(c) { // ... } // реализация метода convertCurrency function convertCurrency(from, to) { // ... } // другие методы компонента } // некий компонет для отображения текстовых данных class textLine extends Movieclip implements Currency { // реализация метода formatCurrency function formatCurrency(c) { // ... } // реализация метода convertCurrency function convertCurrency(from, to) { // ... } // другие методы компонента } В МХ, для того чтобы использовать код из разных файлов мы использовали директивой #include. При компиляции Flash-файла код просто помещался на место строки с указанием нужного файла с кодом. Такой подход не всегда универсален. Например, два разных компонента используют одну и ту же библиотеку с кодом. Мы можем оказаться в ситуации, когда один и тот же код помещен в наш проект дважды. Поэтому приходилось идти на «визуальные» жертвы: использовать библиотеку Flash-редактора. Директива import существует в Java, и во Flash она переместилась внешне без изменений. Возможно, данная директива будет обладать еще большими средствами для объединения библиотек. Возможно здесь даже речь идет о «настоящем» импорте как Java… Поживем увидим. Похоже, «почти как Джава» – становится ключевой фразой при обзоре нововведений семерки. Работа с ошибками Теперь не нужно боятся что плеер «зависнет» выполняя ваш код. Нам больше не страшна рекурсия и деление на ноль. Используя try и catch мы сможем наши ошибки и отловить и обработать. Я лично пока не осознал всю мощь этого нововведения но есть утверждение, что подобные конструкции, будут даже поважнее изменений в ООП... Ну не знаю, не знаю Это конечно почти как Джава, но это все-таки Скрипт Заявленная макромедия армия Flash-разработчиков в размере 650 000 человек, конечно же не состоит из одних программистов, которым только и подавай ООП и которые Джавы не боятся. Поэтому новая редакция ActionScript , мягко скажем, гораздо «добрее» чем Джава. Во всяком случае создавать процедуру без класса можно По мне, такие компромиссы конечно же нужны для массовости технологии, но для продвинутых разработчиков пора вводить несколько уровней при компиляции, когда разработчик сам укажет свой уровень и не будет плодится «грязь» в готовом байт-коде. Надеюсь, что так думают и разработчик от Макромедия… Ведь были в свое время намеки на директиву #strict… НОВОСТИ О ПРАВОЙ КНОПКЕ Возможно, что для «не флэшера» тот факт, что мы до сих пор не можем обрабатывать событии нажатия правой кнопки звучит как нонсенс. Но мы как то уже свыклись с данным постулатом. И вечные мольбы к Макромедия уже стали частью Flash-фольклора… Существует даже утверждение, что правая кнопка, и появления всем знакомой надписи, о том, что это Flash, было сильнейшим и удачным маркетинговым и рекламным ходом Макромедия. Ведь никто бы и не узнал что это Flash… И вот случилось. У нас появилась правая кнопка! Да и колесико мышки в придачу. И кроме этого мы можем не только совсем убрать контекстное меню правой кнопки, мы можем его настраивать под себя, добавляя новые элементы и т. д. Счастье в которое просто не верится А если серьезно, то мне данный факт указывает на то, что Flash перешагнул некую историческую черту, и сейчас не нужно подписывать каждый Flash ролик, всем и так понятно, что это Flash. О ПОЛЬЗЕ ПЕТИЦИЙ В свое время известный Flash-гуру КОЛИН МУК выступил с инициативой, и написал петицию от лица сообщества Flash-разработчиков к Макромедия, в которой слезно просилось наконец-то организовать процесс загрузки мувиклипов во Flash. Парадоксальная ситуация: «нормально» во Flash можно загружать все что угодно: и звук и видео и XML, но только не «родной» Flash-файл – SWF! Конкретно предлагалось включить в новую версию Flash класс MovieClipLoader, который будет обрабатывать все события связанные с загрузкой SWF. И это произошло! Похоже, что под практику петиций от разработчиков заложена твердая основа! Я, по своему опыту, конечно же уверен, в том что появление нового класса не изживет вопросов типа: «как сделать полосочку, пока мой ролик грузится». Но все равно все это очень приятно. Внимание к просьбам разработчиков очень обнадеживает. ОБЩЕЕ ВПЕЧАТЛЕНИЕ Общее впечатление, как всегда при знакомстве новой версии Flash: «Это просто невероятно! Ну удивили так удивили. Немного страшно». Но закалка 2-3-4-5-6-7 – серьезный опыт. Вообще, похоже, такие резкие скачки, становятся уже привычкой. Разгрызаем до самой сути текущую версию, казалось бы, что мы все уже знаем, а тут и новая версия не за горами. Общий вывод: поживем-увидим. Будет и Macromedia Central и Royal. Очевидно, что сейчас настало время перемещения готовых наработок из сообщества Java на Flash. Флэшерам стало тесно в рамках JavaScript, и Java в полной мере удовлетворяет наши растущие потребности. Думаю, что на пару версий Flash это точно удачи, Evgeniy Potapenko (aka john) Последний раз редактировалось john; 17.07.2003 в 21:09. |
|
|||||
некрофил
Регистрация: Mar 2002
Адрес: ...по колено в кровище...
Сообщений: 2,292
|
Йоу!!! try ... catch рулит :)))))
Джон, вопрос. Очень важный. Почти жизненный. Можно ли будет перегружать операвторы [+], [-],[*]... ну и тэдэ?
__________________
...убивать людей не удовольствия ради, но для еды. |
|
|||||
Регистрация: Feb 2001
Сообщений: 1,893
|
Насколько я понимаю, все эти звери централы и рояли не будут уже в привычном понимание swf-файлами созданными в таком простом редакторе как Flash ...
|
|
|||||
Регистрация: Jun 2002
Сообщений: 391
|
А когда ОНО нас озарит своим божественным сиянием (это был первый вопрос) и есть ли слухи относительно скорости графики и самого скрипта (это, соответственно, второй)...
А-а-а? |
|
|||||
F1
Регистрация: Apr 2000
Сообщений: 3,620
|
Так так... Разделение продуктов. А никакой очередной приблуды для создания три де для дизайнерской версии не ожидается?
Или отчаявшиеся флаш-разработчики уже решили в петицию таких требований не вносить? Все это мне напоминает майку. Сначала была одна понятная хорошая прога, потом ее раскрамсали, написали кучу добавлялок и так далее. Теперь в принципе майка может все, но уследить за всеми приблудами для нее почти невозможно. Поэтому, в Школе по ней аж 5 курсов! |
|
|||||
Регистрация: Jul 2003
Сообщений: 2
|
возможность автоматической сборки
Привет все.
Интересует такой вопрос: В будущей семерке обещают "телодвижения" в сторону более серьезной поддержки программных фич. Следовательно, компоненты будут писать все более сложные и сложные. Кому надо писать , чтобы макромедиа добавила возможность автоматической сборки проекта из командной строки ? И есть ли возможность реализовать это в MX ? Для меня это актуальный вопрос. |
|
|||||
Регистрация: Feb 2001
Сообщений: 1,893
|
Чейто не нравится мне все это ...
Тем кто хочет писать серьезные вещи не нужен флеш, для серьезных вещей есть серьезные среды разработки. Флеш приближается к Java - а не легче ли писать на Java? Такой продукт уже не будет иметь безоговорочного успеха в инете - для флеша инет - это главное, все его принципы разработки опирались на специфику интернета. Похоронены довольно мощные вещи вроде Директора, а один лишь imagingLingo из Директора заставил бы забыть о всяких мелочах ... , ... mouseWheel, rightMouse - это какие-то объедки, кому они нужны, вот в Дире есть - ктонибудь пользуется? ... 3D естественно не будет ... во всяком случае онлайнового, а в оффлайне макромедии уже не тягаться с кучей конкурентов ... А если еще посмотреть на статьи-трепыхания на Макромедии по поводу SVG и SWF - то складывается впечателение, что "Римская империя" Макромедии переваливает за свои лучшие годы ... |
|
|||||
Регистрация: Apr 2001
Адрес: San Pietroburgo
Сообщений: 1,408
|
Цитата:
__________________
I denti non possono dire niente... senza la lingua... Perche' la tua lingua e' mia! |
Часовой пояс GMT +4, время: 13:55. |
|
« Предыдущая тема | Следующая тема » |
Опции темы | |
Опции просмотра | |
|
|