Я не так хорошо разбираюсь в SVN, как автор этого замечательного поста (а заодно и автор нового блога "Web Applications Scalability", на котором, к сожалению, все еще отключена регистрация пользователей).
В короткой статье рассматриваются все специальные свойства SVN, в том числе и свойства автозамены.
Осилив статью, вы сможете делать для своего проекта полезные вещи; например, автоматически внедрять в исходные файлы текстовую информацию о версии, авторе, последнем редактировавшем файл пользователе и прочими штуками, которые так любят и часто используют продвинутые программисты.
Этот текст — не молоко, но мясо. Его нужно погрызть, но эффект того стоит. Чем больше я читал статью, тем скромнее становилась моя и без того заниженная самооценка. Пожалуй, пойду почитаю что-нибудь про вэбтриноль для восстановления.
Вот оно и случилось: Run your web applications on Google's infrastructure.
Суть этого события вот в чем: вы можете строить собственные приложения из точно тех же блоков, что использует Гугл для создания своих "родных" решений. Вы получаете доступ к фреймворку Google App Engine SDK, на уровне которого решены следующие задачи:
Сейчас сервис работает в режиме Preview. Вашему приложению дается 500МБ на сервере, 200 миллионов мегагерц процессорного времени и 10ГБ трафика в день. Ожидаемая стартовая мощность сервиса — 5 миллионов просмотров страниц в месяц на приложение. По окончании preview-периода эти показатели станут доступными бесплатно для всех, а за дополнительные мощности будет взиматься отдельная плата.
Вход в этот рай Гуглостроения открыт пока не всем, а только тем первым 10 000, кто успел быть первым. Кстати, они уже успели. Но можно записаться в очередь. Обещают обналичить всех. А пока ждем своей очереди, можно скачать Google App Engine SDK, почитать документацию и подключиться к эмбриону блога Google App Engine Blog (сейчас у него всего 20 читателей).
А вот и галерея готовых Google аппликаций. Гугликаций и гугликейшенов
На Хабре-то об этом уже понаписано. Пошел осмыслять этот рай для питонщегов.
MediaWiki — отличный вики-движок. Не случайно именно на нем работает огромная многоязычная WikiPedia. И на нем же работает русскоязычная Flex Wiki. Но и требования к производительности сервера у этого движка явно на голову выше типичного форума или блога WordPress.
Первый тревожный сигнал поступил от Injun (спасибо большое). Несколько дней назад он написал мне, что Флекс-вики не работает. Я проверил — да, сайт стоял, и причина была проста. В корне лежал файл .htaccess с содержимым, запрещающим доступ ко всем страницам: Deny From All. Сначала я подумал, что это трояны пожаловали и начал прикидывать ответные меры. Но вскоре пришло сообщение от моего хостинг-провайдера, из которого все сразу стало ясно:
Вам подвластный эккаунт сверхнормативно использует серверные ресурсы Вашего хостинг-сервера. Процессы данного эккаунта вызываются многократно и являются ресурсоёмкими. Речь идёт о работе поддомена http://wiki.flash-ripper.com/. Я сейчас закрыл доступ только к нему, чтобы не останавливать весь Ваш эккаунт, хотя обычно остановке в таком случае подлежит именно весь эккаунт. Пожалуйста, примите срочные меры по оптимизации скриптов данного эккаунта. В таком виде эккаунт услугой виртуального хостинга пользоваться не может, такие эккаунты размещаются только на VIP тарифе. Снимок процессов: --- PID USER PRI NI SIZE RSS SHARE STAT %CPU %MEM TIME CPU COMMAND 17672 ... 21 0 0 0 0 Z 21.8 0.0 0:00 2 php <defunct> 17670 ... 21 0 0 0 0 Z 21.3 0.0 0:00 3 php <defunct> 17673 ... 21 0 0 0 0 Z 19.8 0.0 0:00 2 php <defunct> ...
Речь идёт о работе поддомена http://wiki.flash-ripper.com/. Я сейчас закрыл доступ только к нему, чтобы не останавливать весь Ваш эккаунт, хотя обычно остановке в таком случае подлежит именно весь эккаунт.
Пожалуйста, примите срочные меры по оптимизации скриптов данного эккаунта. В таком виде эккаунт услугой виртуального хостинга пользоваться не может, такие эккаунты размещаются только на VIP тарифе.
Снимок процессов: --- PID USER PRI NI SIZE RSS SHARE STAT %CPU %MEM TIME CPU COMMAND 17672 ... 21 0 0 0 0 Z 21.8 0.0 0:00 2 php <defunct> 17670 ... 21 0 0 0 0 Z 21.3 0.0 0:00 3 php <defunct> 17673 ... 21 0 0 0 0 Z 19.8 0.0 0:00 2 php <defunct> ...
Логично: флекс-вики снова индексируется поисковиками, в ней многие производят правки, и часто редактируются весьма большие страницы. Учитывая громоздкость самого движка, большая нагрузка на сервер становится очевидным следствием названных причин.
Сейчас я рассматриваю возможности по оптимизации работы вики:
Ситуация требует принятия срочных мер — посещаемость вики с русскоязычной документацией по Flex растет, плюс я уже создал для нее несколько дополнительных микро-сервисов, таких, как отображение свежих правок по флекс-документации на стартовой странице Потрошителя, почтовая рассылка свежих правок всем заинтересованным, поиск внутри вики через Гугл... и все это уже работает, но пользуюсь этим только я сам: открывать публичный доступ рано, так как сервер может не справиться с нагрузкой.
Объявляю заседание открытым.
Еще один рецепт компиляции Flex 2-приложений -- на этот раз в Dreamweaver. Есть также аналогичная статья для пользователей Маков.
Скажем, если у вас уже есть Dreamweaver, то Flex Builder можно и не покупать.
Интересно то, что первый Flex Builder (для Flex 1.5) был сделан на базе все того же Дримвивера, а Шо Кувамото, в Макромедии заправлявший разработкой как Dreamweaver, так и Flex Builder 1.5, теперь в Адоби руководит разработкой Flex Builder 2 (но уже на платформе Eclipse).
Когда книгу сначала любовно пишут, составляя ее не из воздуха, а из ответов на реальные часто задаваемые вопросы, а потом так же трепетно переводят на русский, то и получается шедевр.
Управление версиями в Subversion
(И немного о создании этой книженции для граждан сумлевающихся: "Главное в этой работе — открытые глаза и аккуратное отношение к записям в блокноте").
Почти 40 лет назад, в 1968 году группа математиков МГУ под руководством Николая Николаевича Константинова создала математическую модель движения кошки, используя обыкновенные (в математическом смысле) дифференциальные уравнения. Машина БЭСМ-4, совершая по 20 000 операций в секунду, занимая не более 65 кв. м университетского помещения, выполнила программу решения этих уравнений и нарисовала мультфильм "Кошечка", содержащий созданную компьютером анимацию движений кошки, удивительную даже по современным меркам. Оформление фильма было создано на кафедре учебной и научной фотографии и кинематографии того же ВУЗа.
Увидеть скриншоты фильма и скачать его полностью можно на странице "Кошечка" сайта "Этюды" -- и там же можно прочесть интересную статью про этот необычный рендеринг.
Но самое существенное для нас как для людей, окончательно впавших в программную анимацию как раз в том, что на том же вышезалинкованном сайте приводится ссылка на статью с полными выкладками математической модели кошки и ее движения, с диаграммами, таблицами и схемами, опубликованную в 28 выпуске журнала "Проблемы кибернетики" за 1974 год.
Таким образом, любой желающий может воспользоваться заложенными в статью идеями (одна из них -- "кошка как дерево") и решениями (например, таким как "координация движения различных лап") при разработке собственных анимированных персонажей.
Также заслуживает внимания материал на сайте "Компьютерры", посвященный этой же теме: Прибытие "Кошечки".
Знаете ли вы, что можно измененить порядок уровней _level с помощью стандартной функции swapDepths? Вот пример:
_level
swapDepths
_level0.swapDepths(_level1);
При этом все, что было в _level1, оказывается в _level0 и наоборот, а выгрузки остальных уровней не происходит, в отличие от попытки загрузить что-то в _level0. Пример можно загрузить по ссылке: пример изменения порядка уровней "_level" с помощью функции swapDepths.
_level1
_level0
// via Виктор Рассоха
Флэш-сайты, занимающие 100 процентов ширины и высоты браузера, при просмотре в Mozilla Firefox по умолчанию отображаются некорректно: в браузере появляется вертикальная полоса прокрутки, являющаяся абсолютно лишней в данном случае. Чтобы избежать этой неприятности, нужно всего лишь в тэге object явно указать тип отображения флэш-объекта как "block":
object
<object style="display:block" classid="classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="100%" height="100%"> <param name="movie" value="index.swf"> ...
А может, вы знаете еще что-то, облегчающее и без того невыносимо приятную жизнь флэш-разработчика? Тогда делитесь знаниями в комментариях.
Мы уже неоднократно писали, как создавать и поддерживать флэш-проекты с помощью "внешних" инструментальных средств, таких, как SciTE|Flash и PrimalScipt. В использовании данных инструментов несомненно есть свои плюсы (о которых мы уже писали); но сегодня поговорим о том, как обойтись без них. Поводом к этой публикации стало то, что Flash MX 2004 обладает собственными удобствами редактирования кода, главным из которых является то, что вам не нужно переключаться между редактором кода и Flash, чтобы протестировать проект, а это происходит довольно часто при интенсивной разработке. К тому же, далеко не каждый проект требует привлечения таких тяжеловесных орудий, как PrimalScipt, иногда нужно сделать все быстро и просто, но в одном кадре, а для этого лучше весь код хранить во внешнем as-файле, редактируемом тут же, во Flash MX 2004.
Итак, простейший проект состоит из трех файлов: компилируемый fla-файл, as-файл с кодом для fla-файла, и flp -- собственно файл проекта, связывающий первые два файла и дающий возможность непосредственной компиляции при редактировании кода as-файла, без необходимости переключения во fla-файл.
Вот шаги, которые нужно проделать:
#include "scripts/main.as"
А это как раз то, чего мы хотели.
Итак, главные плюсы использованния встроенного ActionScript-редактора: возможность немедленного тестирования проекта при хранении всего кода во внешнем as-файле и многочисленные улучшения и добавления внутреннего редактора ActionScript, -- например, теперь вы можете развернуть панель с ActionScript-кодом во весь размер окна Flash MX 2004, редактировать код и тут же его тестировать (Ctrl+Alt+P). Мы пропробовали, и нам понравилось.
Приятного вам тестирования!
В рамках проекта Flash MathML происходит реализация спецификации MathML от консорциума W3C.
В данный момент уже выпущена демо-версия приложения Flash MathML reader (Flash 7): вы вводите математические формулы в XML-виде (точнее, в MathML-виде), а на выходе получаете визуализацию решений -- с таблицами, знаками корня, дробями -- все в классическом виде.
Домашняя страница лаборатории Flash MathML Lab, где происходит реализация и обсуждение MathML в среде Flash.
С появлением полноценной объектной модели в ActionScript 2.0 стал часто обсуждаться вопрос: что эффективнее при использовании родительского класса внутри класса-потомка, композиция (composition) или наследование (inheritance)? При наследовании класс-потомок (Office) расширяет родительский класс (Building) (используя ключевое слово extends), и затем может обращаться к его методам и своствам как к своим собственным:
Office
Building
extends
class Office extends Building{ ... }
При композиции происходит следующее: класс-потомок формально не расширяет родительский класс (ключевое слово extends не используется), а создает экземпляр родительского класса и сохраняет его как одно из своих свойств:
class Office{ private var b:Building; ... b=new Building(); }
Затем, при необходимости использования методов или свойств родительского класса, класс-потомок обращается к ним через созданный экземпляр родительского класса.
Как композиция, так и наследование относятся к практикам ООП. Выбрать, какую из этих практик использовать, поможет следующий метод: нужно определить, как именно вы собираетесь использовать родительский класс по отношению к его потомку. Если родительский класс в большинстве случаев будет "подменять" своего потомка, то используется наследование. Если же родительский класс нужен лишь, чтобы класс-потомок мог использовать некоторые его свойства, то лучшим выбором будет композиция.
Одной фразой: чем больше класс-потомок похож на родительский класс, тем предпочтительнее использовать наследование, а не композицию.
Ссылки по теме:
Прототипы для анимации -- это функции, используемые в качестве "движков" при перемещении объектов с помощью кода, то есть, выражаясь жаргонным языком, для создания "Твина" (Tween).
Ladislav Zigo произвел сравнение производительности различных анимационных движков. С примерами и исходниками!
g.wygonik опубликовал небольшую статью по этой теме (и там же выложил для скачивания исходники). Описанная техника включает в себя использование fscommand+javascript и гарантированно работает только в IE, но, тем не менее, это не умалаяет достоинств открытия :)
При использовании шарных библиотек (shared libraries) не забывайте, что они будут правильно работать только в swf-файлах "своей" версии. Это может стать источником многих недоразумений при разработке, создавая видимость серьезной ошибки там, где имеет место несовместимость версий. Так, например, в среде Flash MX 2004 вы можете опубликовать библиотеку как swf-файл 7 версии (настройка по умолчанию!). Использовать такую библиотеку в приложении, опубликованном ранее под 6 версию, не удастся. Будьте внимательны. // via Jesse Warden
Подключаем систему контроля версий SourceSafe к среде PrimalScript 3.1.
Зачем это нужно? Чтобы возложить контроль версий проекта на железные плечи машин, а свою собственную память освободить для более интересных вещей. Вы укладываете свои файлы в безопасное место, взамен получаете избавление от головной боли (ладно, от одной и них:)
Система контроля версий следит за разными версиями ваших файлов: хранит их и отдает вам в нужный момент, принимает их уже измененными обратно на хранение, чтобы затем снова отдать их вам. В результате вы всегда можете получить свой скрипт, например, в том виде, в котором он был неделю назад. От вас требуется только: сделав важное изменение, сохранив файл, "отдать" (Check In) его новую версию в систему, чтобы затем при необходимости взять (Check Out) ее оттуда. Это и есть два основных действия при работе с системой: отдать файл (Check In) и забрать файл (Check Out).
Польза от системы контроля версий становится еще ощутимее при совместной работе двух и более разработчиков над одним проектом. Если кто-то взял файл "script.as" к себе на редактирование в Рабочую Директорию (т.е. сделал Check-Out), то никто другой не сможет сохранить новую версию файла script.as в системе контроля версий, пока тот, кто "забрал" файл, не вернет его снова в базу. Таким образом, в каждый момент времени над каждый файлом будет работать не более одного человека (хотя и здесь возможны варианты..) Подробное описание работы с ситемами контроля версий здесь будет неуместно.
Практически все нужные нам действия с системой контроля версий доступны через меню Tools > Source Control.
Get Latest Version... - скопировать из базы SourceSafe последнюю сохраненную там версию файла на диск. Внимание: если вы редактировали файл и не занесли его последнюю версию в базу.. нет, вы просто всегда заносите в базу последнюю версию и забудьте о неприятностях. Check Out - Забрать файл из базы на редактирование. Check In... - Отдать отредактированный файл в базу. Undo Check Out... - Отказаться от последних изменений, например, если вы считаете, что последние правки были неудачными и лучше вернуться к предыдущей версии файла. ----------- Add to Source Control... - Добавить в базу новый файл. Remove from Source Control... - Удалить файл из базы. ----------- Show History... - Показать историю файла (версии) Show Differences... - Показать различия между разными версиями файла Source Control Properties... - Настройки системы контроля версий. Можно вообще здесь ничего не трогать :) Resresh Status - Обновить статус файлов в базе системы контроля версий ----------- Source Control... - Запустить приложение контроля версий. Начинайте работу с нажатия этой кнопки. Connect Folder... - Подключить каталог к системе контроля версий.
Вполне возможно, вам не нужно ничего делать из нижеперечисленного. Если все работает нормально, лучше ничего не трогать :)
Теперь можно наслаждаться процессом:
При создании нового файла через Нексус Проекта вы получите диалог: "Do you want to put the newly added files(s) under the source code control? - что в точности дословно переводится как "Хочешь, я буду следить за версиями твоих новорожденных файлов?".
Вы можете открыть занятый файл. Редактировать - нет. При первом же нажатии на клаишу вам будет выдан вопрос: "Do you want to check it out?" - то есть: "Хочешь забрать файл к себе для редактирования?"
Вы можете установить автоматическое обновление файла в системе SourceSafe: при закрытии файла в PS будет возникать стандартный диалог "Check In", предлагающий вам сохранить версию в базе данных SourceSafe. Меню Tools > Option > Souce Control > радиокнопка Check In when file is closed.
И скажите теперь кому-нибудь, что вы потеряли файл %) Если возникли вопросы, пишите в комментарии. Постараемся ответить.
Вчера мы создали простейший проект в PrimalScript 3.1 (коротко -- PS3.1). Однако, присмотревшись к этому проекту, заметим, что аналогичного результата мы могли достичь и без привлечения среды PS3.1. Но то был простейший проект. Теперь пришла пора включить инструмент на его полную мощность, или хотя бы наполовину :)
Одно из главных достоинств PS3.1 -- легкий доступ к классам и их членам. Настолько легкий, что даже неподготовленный разработчик имеет шанс начать новую жизнь с классами. Полюбить их. Сейчас мы этим и займемся, а заодно полюбим и встренные классы от Macromedia.
Предполагаем, что вы сохранили первую верию проекта. Если нет, качайте: Тестовый проект для PrimalScript 3.1, версия 1. Будем называть его "базовым проектом". Запускаем PrimalScript 3.1.
Создадим новое (временное) рабочее пространство Classes. Его единственное назаначение -- подключение встроенных классов Flash MX 2004 путем создания соответствующего проекта.
Меню File > New > Project... В открывшемся диалоге выберите Project Type: "ActionScript", Templates: "New Project from existing folder", Name: "Classes", Location: укажите путь ко встроенным классам Flash MX 2004. У нас это "F:\Documents and Settings\Ro\Local Settings\Application Data\Macromedia\Flash MX 2004\en\Configuration\Classes". Жмите ОК.
Находим на диске файл рабочего пространства базового проекта. У нас это "D:\Swf\Projects\TestProject\TestProject.pws". Двойной клик или нажатие Enter на файле рабочего пространства приводит к открытию этого рабочего пространства в PrimalScript 3.1. Предыдущее рабочее пространство заменяется новым.
Итак, рабочее пространство базового проекта (TestProject.pws) открыто.
Добавим в наш базовый проект классы. В Нексусе Проекта кликаем правой кнопкой по самой верхней строке и выбираем пункт "Inser Project into Workspace...". В открывшемся диалоге находим файл, в котором было сохранено созданное на первом шаге временное рабочее пространство Classes, у нас это файл "F:\Documents and Settings\Ro\Local Settings\Application Data\Macromedia\Flash MX 2004\en\Configuration\Classes\Classes.pws". Жмем ОК.
Проекты слились! Вот что мы видим (левая часть картинки):
Узел базового проекта "TestProjects" выделен жирным шрифтом. Это означает, что сейчас он считается активным. Позже узнаем, какое это имеет значение. Над "TestProjects" видно "Classes", по которому дважды кликаем и видим правую часть картинки.
Вывод: двойной клик по узлу Classes привел к частичному обнажению встроенных классов Flash MX 2004. Этой наготой мы обязательно воспользуемся, с налучшими намерениями, конечно, мы же нормальные флэшеры.. Полное обнажение происходит в Нексусе Исходника. Это вторая закладка (внизу) в панели Нексуса. Кликаем, видим два узла с плюсами. Кликаем по верхнему:
Видим новые узлы с плюсами. Это встроенные классы. Двойной клик по узлу приведет к открытию файла класса в редакторе. Клик по плюсу раскроет класс и покажет его членов (методы и свойства). Двойной клик по любому члену класса приведет к открытию файла класса в редакторе (курсор автоматически окажется в нужном месте, проверьте это немедленно).
Мы собирались делать ЙоЙо, так что нас интересуют методы и свойства класса mx.transitions.Tween и класса mx.transitions.easing.Elastic. Они видны внизу картинки.
mx.transitions.Tween
mx.transitions.easing.Elastic
Из всего класса Tween нам нужен его конструктор. Также нам пригодятся статические методы класса Elastic а именно -- метод easeInOut. Чтобы это узнать, мы кликали, смотрели, много думали.. Что-то до боли знакомое есть в этом классе Posted by: Rost at 05:38 AM 15.Декабрь.2003 PrimalScript: интегрированная среда разработки ActionScript 2.0 Первоначальной целью данной заметки было последовательное описание наших первых, удачных шагов в среде разработки PrimalScript. Уже начав это делать, мы поняли, что лучше начать с краткого введения; затем стало ясно, что необходимо перечислить хотя бы главные особенности этой среды разработки, выдвигающие ее в число лучших. Так и поступим. А "первые шаги" будут завтра. Компания Sapien Technologies выпустила новую (пока beta) версию редактора PrimalScript 3.1 (далее по тексту -- просто PS3). Точнее будет назвать это "интегрированной средой разработки" (IDE). "Интеграция" в данном случае означает: Разработка, тестирование и отладка модульного программного кода в едином Рабочем Пространстве ("Workspace"), состоящем из одного или более Проектов ("Project"). Компиляция (а также создание и выполнение других Команд ("Commands")) непосредствеенно из среды разработки; Используя Команды, легко интегрировать PS3 со средой Flash (и другими внешними приложениями) и компилировать прямо из PS; Интеграция с системой справки Flash MX 2004: просмотр документации осуществляется непосредственно в одном из окон-закладок среды разработки PS. Поиск по справке реализован довольно качественно: достаточно стать курсором на нужное слово и нажать F1. Файлы справки читаются прямо из "родной" директории, где их хранит Flash;Управление классами: PS3 позволяет умеет показывать иерархию классов вашего рабочего пространства, включая членов классов (методы и свойства); при этом вы получаете возможность получить мгновенный доступ к любому элементу структуры, дважды кликнув по нему. Откроется соответствующий файл и курсор окажется в нужном месте;Интеграция с системой контроля версий (например, Microsoft Visual SourceSafe): если вы это пробовали, преимущества вы уже знаете; если нет, то у вас есть хороший шанс уменьшить количество головной боли. Напишем и об этом;Организация рабочего процесса: каждый проект имеет две конфигурации "по умолчанию": Debug (отладочная конфигурация) и Release (продукт для выпуска). К ним можно добавлять новые. Каждая конфигурация располагает отдельными настройками типа "Действия при старте" ("Start Action"), "Рабочая Директория" (Working Directory), и может иметь свой способ доставки (например, проект в "отладночной конфигурации" закачивается на один сервер, а как "продукт дял выпуска" -- на другой и т.д.);Технология PrimalSence, отвечающая за вывод подсказок по коду ("code hints") и автоматическое завершение кода (code autocompleting), в том числе и на лету, например, для ваших собственных классов и их членов;Заготовки ("Snippet"): это "атомы", "молекулы" и "клетки", кода, которые вы можете быстро вставлять в код: например, заготовка оператора цикла, функции, класса, и т.д. Создание собственных сниппетов занимает 1-2 клика;Поддержка макросов: запись, проигрывание, загрузка, сохранение; Создание закладок в коде и управление ими; Множество других возможностей, которые намного приятнее увидеть самому, чем читать о них.
Tween
Elastic
easeInOut
Первоначальной целью данной заметки было последовательное описание наших первых, удачных шагов в среде разработки PrimalScript. Уже начав это делать, мы поняли, что лучше начать с краткого введения; затем стало ясно, что необходимо перечислить хотя бы главные особенности этой среды разработки, выдвигающие ее в число лучших. Так и поступим. А "первые шаги" будут завтра.
Компания Sapien Technologies выпустила новую (пока beta) версию редактора PrimalScript 3.1 (далее по тексту -- просто PS3). Точнее будет назвать это "интегрированной средой разработки" (IDE).
"Интеграция" в данном случае означает:
Увидеть скриншоты можно на сайте RewindLife.com. Мы рекомендуем вам посмотреть скриншоты, скачать PrimalScript 3.1 и установить его. Завтра мы будем говорить о первых шагах, и будет лучше, если вы будете немного подготовлены.
Продолжение следует.
Почему? Потому что каждый раз при вызове метода setStyle() происходит вызов метода notifyStyleChangeInChildren(), который применяется к каждому мувиклипу вашего приложения, проверяя, должен ли тот быть уведомлен об изменении стиля. Если клипов много, это приводит к паузе в работе. // via Grant Skinner
setStyle()
notifyStyleChangeInChildren()
Евгений "Jonh" Потапенко опубликовал на своем сайте статью "Механизм конвейера", в подробностях и с примерами описывающую разработанную им систему управления потоком выполнения во флэш-приложениях. Цитата:
"...даже изучая новые решения которые возникали при выходе новый версий Flash, и изучая накопленный опыт в Java, я могу утверждать что пока на данный момент не создано (применительно к Flash) ничего лучше. Либо эти идеи слишком громоздки (например, описанный чуть раньше паттерн «Command»), либо слишком примитивны (например, просто работа через onEnterFrame, или последовательная подписка на окончания работы между компонентами). Практически при любом сравнении у меня никогда не было сомнений в том, что конвейер – оптимальный выбор. Однако, часто, сравнивая с другими решениями, мне приходилось улучшать конвейер, чтобы он соответствовал новым требованиям.Но, по сути, конвейер все время оставался простым списком действий."
onEnterFrame
На сайте Macromedia появилась интересная статья о создании так называемых "Флэш-элементов". Что такое Флэш-элемент? Это Флэш-компонент, который встраивается в html-документ непостредственно при помощи Dreamweaver — без участия среды разработки Flash. Вставив Флэш-элемент в страницу, вы можете тут же, в Dreamweaver, настроить его параметры, как это обычно происходит в среде разработки Flash при настройке компонента. В статье подробно рассматривается процесс преобразования флэш-компонента во флэш-элемент — и это довольно просто. Статья состоит из двух частей (двух страниц) — сначала речь идет собственно о создании Флэш-элемента, затем рассказывается об упаковке Флэш-элемента. в расширение для (!) Dreamweaver. Так выпьем же за интеграцию хорошего с лучшим :)
http://www.macromedia.com/devnet/central/sdk/ // via den
Вы наверняка уже слышали о новой политике работы а Активным Контентом (имеются в виду ActiveX-объекты веб-страниц) в броузере Internet Explorer. Новая политика имеет некоторые нюансы, содержащие потенциальную угрозу для нормального отображения Flash (ведь он является ActiveX-объектом). Сразу заметим, что Microsoft не виновата. Просто суд решил, что патенты Microsoft (ответчика) на использование ActiveX-технологии не столь убедительны, как патенты (не будем здесь рекламировать подлеца) истца. Последовали оргвыводы, и поэтому Microsoft в скором времени (начало 2004 года) выпустит создающее проблему обновление для Internet Explorer. Суть проблемы в том, что теперь перед загрузкой любого ActiveX-объекта (и Flash тоже) страницы броузер IE (и только он) будет спрашивать пользователя, можно ли загружать такой объект. Неприятный, но поправимый момент.
Нужно просто встраивать Flash в страницы таким образом, чтобы в html-коде он формально не выгдялел как ActiveX-объект. То есть отказаться от тэгов <object>, <embed>, и <applet>. А вместо этих тэгов использовать параметризованные вызовы функций из внешнего JavaScript-файла — чтобы таким образом вставлять ссылки на нужные ActiveX-объекты.
<object>
<embed>
<applet>
Есть и другой метод решения проблемы, позволяющий обойтись без внешнего скрипта. При этом в html-страницу включаются данные в формате base64 (бинарные данные), и для их правильного воспроизведения требуется обновленная версия Flash Player 7 (что-то здесь знакомо, не так ли?). Но большой минус этого метода в том, что контент должен сначала полностью загрузиться в страницу. Прелоадеры могут сильно пострадать! Хотя ведь можно сначала грузить легкий прелоадер, а потом уже через него — остальной контент. Простор для экспериментов.
Это один из немногих случаев, когда общественность была "за Microsoft".
Macromedia вместе с Microsoft разрабатывает технологии обхода "проблемы обновленного IE". В связи с этим на сайте Macromedia появились полезные материалы. Перечислим их:
Поговорим об этом подробнее
Серверные инструменты третьей группы совместимы с инструменты первых двух групп. Это важно, так как многие сайты имеют смешанную структуру, включающую и статические, и динамически генерируемые страницы. Основное назначение серверных инструментов — выявление критических мест. И без ручной работы не обойтись.
Инструменты поставляется с исходным кодом, где это нужно.
Вот простой пример кода, который в новом IE перестанет работать как раньше:
Чтобы все снова заработало в новой версии IE, замените этот код вызовом скрипта из внешнего файла. Стоит поинтересоваться также разделом на сайте MSDN msdn.microsoft.com/ieupdate/. Там можно скачать тестовые примеры, работающие в подавляющем большинстве случаев.
Если в странице присутствует один клип (или несколько, но не много), можно использовать следующее простое решение. Создайте для каждой страницы внешний JavaScript файл (JS), содержащий соостветствующий flash-контент. Если клипов в странице более одного, нужно внутри этого файла создавать уникальные функции для каждого клипа.
По шагам:
1. Создайте и сохраните JS-файл ос скриптом. В этом примере файл будем называть foo.js. Скрипт из этого файла при помощи функции document.write воссоздает в исходном HTML-файле насильственно устраненную оттуда конструкцию object/embed:
object/embed
2. Теперь подключите этот JavaScript к HTML-странице:
3. Замените все тэги <object> , <embed> , или <applet> вызовом соответствующего внешнего файла:
Немного сложнее, чем первый вариант, зато гибче. Внешний файл со скриптом содержит функции, вызывая которые вы можете включать в HTML-документ нужные вам ActiveX-объекты. При этом вы можете передавать функциям параметры, что и делает решение более гибким. Macromedia создала такие JS-Файлы для случая с включением в html-страницу Flash и Shockwave.
1. Сохраните эти JS-файлы в подходящей директории. В данном примере файлы называются AC_RunActiveContent.js и AC_Flash.js. Качать здесь(4Кб);
2. Подключите эти файлы ко всем страницам, содержащим ActiveX-контент. То есть Flash.
3. Замените все тэги <object> и <embed> соотвествующими вызовами функций (при этом передавая в функции параметры). Вот пример четырех вызовов: два для Flash и два для Shockwave:
AC_RunFlContent( "att1Name","att1Value", "att2Name","att2Value", ... "attnName","attnValue" );
AC_RunFlContentX( "att1Name","att1Value", "att2Name","att2Value", ... "attnName","attnValue" );
AC_RunSWContent( "att1Name","att1Value", "att2Name","att2Value", ... "attnName","attnValue" );
AC_RunSWContentX( "att1Name","att1Value", "att2Name","att2Value", ... "attnName","attnValue" );
Пары типа "att1Name","att1Value" соответствуют исходным параметрам типа movie, id, bgcolor и т.п.
att1Name
att1Value
movie
id
bgcolor
Например, вот так передается имя клипа:
(внешний JavaScript-код сам добавит расширение файла)
Если же вы передавали параметры в сам Flash-файл, что могло выглядеть как
То чтобы продолжать передаваь эти атрибуты, включите их как аргументы функции:
Файлы AC_RunActiveContent.js и AC_Flash.js производят проверки пар имя/значение на завершенность. Также автоматически добавляются атрибуты типа classid, codebase, mimeType и pluginspage. Если вы хоитие обновить значение одного из этих необходимых, нужно редактировать значение во внешнем JavaScript-файле AC_Flash.js. А в самой HTML-странице передавайте в качестве параметров только дополнительные аргументы.
Вот развернутый пример применения вышеописанной техники:
Оригинальный код
Заменяется на:
Да, тогдав все это не сработает. Но заметьте, что обычно такие пользователи отключают и ActiveX-объекты тоже. Так что они ничего не потеряют при обновлении броузера. Их опыт не изменится.
Дополнение от MSA (спасибо!): "Тут ты забыл упомянуть про чудесный html-тег - <noscript></noscript> В который можно вставить код в старом виде (<object>, <embed> и <applet>. ). И хотя пользователь получит идиотское сообщение, но это лучше чем ничего. Тем самым мы перестраховываемся по любому."
Паника была "несколько преждевременной". Перечисленные инcтрументы и/или ваши руки позволяют подготовиться к переходу на обновленную версию IE заранее. То есть никто из ваших пользователей не увидит те самые диалоговые окна с глупейшими вопросами типа "Можно ли включить Флэш?". Главное — вовремя проапгрейдить сайт, а на это есть достаточно времени. Конец Флэша снова отменяется :)
Мы как-то упустили человека по имени Ralf "Bokel" Bokelberg из виду, а он тем временем создал много полезных продуктов, из них отдельно можно выделить LoaderClass — библиотеку actionscript, которая умеет загружать все (и не просто загружать, а делать это с умом: выстраивать очередь загрузки при одновременном запросе нескольких файлов, например). Имеется также полная документация к LoaderClass. Стоит также отметить, что здесь приложил руку и сам Колин Мук :)
#include "com/flash-ripper/debug-0.as" this.createEmptyMovieClip( "loadContainer", 1090 ) mcLoader1 = new MovieClipLoader(); mcLoader1.onLoadStart = function( mc ) { mc.stop(); debug( mc._name + ": loadStart"); } mcLoader1.onLoadProgress = function( mc, bytesLoaded, bytesTotal ) { debug( mc._name + ": loadProgress=" + bytesLoaded + "/" + bytesTotal ); } mcLoader1.onLoadComplete = function( mc ) { mc.play(); debug( mc._name + ": loadComplete!" ); } loadListener = {}; mcLoader1.addListener( loadListener ); loadListener.onLoadStart = function() { debug ("lisnener: loadStart" ); } loadListener.onLoadProgress = function( mc, bytesLoaded, bytesTotal ) { debug ( "from listener :" + Math.floor(bytesLoaded / bytesTotal * 100) + "%" ); } loadListener.onLoadComplete = function() { debug ("lisnener: loadComplete" ); debug ("listener removed: " + mcLoader1.removeListener(loadListener) ); } mcLoader1.loadClip("movie.swf", loadContainer);
Одним из нововведений Flash 7 является возможность отображения контекстного меню, Флэш-разработчики долго "выпрашивали" это у Macromedia (кроме этого, появилась также долгожданная поддержка прокрутки текстовых полей с помощью колеса мышки (для этого даже не нужно наличие скроллбара), а также несколько других полезных вещей, о них мы тоже скоро напишем).
Чтобы увидеть контекстное меню Flash в действии, достаточно установить Flash Player 7 и кликнуть правой кнопкой мышки вот по этому:
Можно заметить, что это контекстное меню ничем не отличается от тех, которые мы видели раньше, в других приложениях. Кроме одной детали: теперь это наше контекстное меню, и мы можем делать с ним все, что захотим.
А чтобы делать с ним это, нам понадобится такой код:
//создаем экземпляр объекта ContextMenu //и передаем ему ссылку на функцию-обработчик. mainMenu = new ContextMenu(menuHandler) //создаем элементы меню itm1 = new ContextMenuItem("Item 1", itemHandler); itm2 = new ContextMenuItem("Item 2", itemHandler); itm3 = new ContextMenuItem("Item 3", itemHandler); //добавляем элементы меню в массив customItems. mainMenu.customItems.push(itm1); mainMenu.customItems.push(itm2); mainMenu.customItems.push(itm3); mainMenu.builtInItems //передаем свойству menu текущего таймлайна // ссылку на объект mainMenu. this.menu = mainMenu; this.menu.showBuiltIn(false);
Как видите, все довольно просто и дружелюбно. (Только не думайте, что мы все это сами сочинили :) Кроме того, вы можете указывать, нужно ли отображать "встроенные" пункты контекстного меню, такие, как "Quality", "Play" т.п. (они содержатся в массиве builtInItems). Нельзя только отменить отображение пунктов "Settings..." и "About...". Хотя, наверное, что-то можно придумать и по этому поводу :)
builtInItems
Статья об отображении диаграмм с помощью Flash на примере Stock History Sample Application (входит в DRK 4). Хотя, казалось бы, что там можно писать? Разве только за деньги :)_
Задача создания масок с размытыми краями давно волновала флэшеров. Как сделать так, чтобы картинка обрезалась по краю не грубо, а плавно сходила на нет? Эта проблема обуждалась в конференции ruFlash. Ив Дембицки предложил использовать свойства альфа-канала png-изображений. Вначале он предложил простое решение для следующего примера:
Решение процитируем со слов самого Ива: "делаешь PNG с переходом по альфе от 100% в центре до примерно 10% по краям (или вообще как тебе захочется) потом просто задаешь ему альфу от 0 до 200%, в результате получаешь тот эффект, что у меня в примере. PNG сохраняет RGB во всех пикселах, вне зависимости от альфы. Поэтому, увеличивая альфу мувика на значения больше 100%, мы можем поднять альфу картинки по краям до нужного значения." Если после этого объяснения у вас еще остались вопросы, вы можете скачать исходный файл.
На этом Ив не остановился. Это был бы не Ив, если бы он остановился на этом. Он задался вопросом: а как сделать так, чтобы область полупрозрачности можно было перемещать? В предыдущем примере она была статической — как заставить ее двигаться? Он решил: если мы можем менять прозрачность одной png-картинки, то можем сделать это и с четырьмя. Размещаем четыре копии одной картинки точно друг над другом. Картинки одинаковые, у всех альфа-канал построен по принципу линейного градиента — с прозрачностью ~0% в начале и ~100% — в конце. У первой картинки этот градиент прозрачности идет свеху вниз, у второй — снизу вверх, у третьей — слева направо, а у четвертой — справа налево. Значит, если синхронно менять прозрачность всех четырех картинок, можно добиться эффекта перемещения прозрачной области.
Эта хорошая мысль была успешно воплощена Ивом в приведенном примере.
Исходники: пример 1, пример 2.
На сайте Виктора Рассохи выложены для общего доступа полезные вещи. Одной из них является движок программной анимации. Он построен на движении по траекториям, созданным как вручную, так и программно.
Возможности и фичи:
Подробнее — на сайте Виктора Рассохи. Виктор пишет, что вы можете использовать эту разработку в любых (коммерческих и некоммерческих) проектах по своему усмотрению, а также также дает некоторые советы по переносу движка в ваши проекты.
Интересно также посетить страницы, посвященные разработкам автора — играм, и не только. // via Fix.
Некто Zeh выложил на сайте Layer51 (это такой широкоизвестный рассадник прототипов и прочих чудищ, если вы не в курсе) один полезный прототип. Он добавляет мувиклипу свойство .tween(property, pEnd, seconds, animType, delay, callback). Использование этого прототипа сводится к заданию соответствующих параметров свойства .tween; например, property означает "что, собственно, двигать" (например, "_xscale" или "[_x,_y]"); и т.д. Замечательно то, что можно совместно с этим прототипом использовать уравнения движения от Роберта Пеннера (мы сообщали о них в предыдущей записи). До сих пор это читаете? Идите, и займитесь делом! Вот ссылка.
.tween(property, pEnd, seconds, animType, delay, callback)
.tween
property
_xscale
[_x,_y]
Роберт Пеннер опубликовал обновленную версию разработанных им easing equations, если по-русски — это библиотека уравнений, описывающих динамику движения точки: (линейная, квадратичная, кубическая, экспоненциальная и т.д.). Лучше увидеть easing equations в действии и начать применять их в собственных работах. Для этого их можно скачать.
Mike Chambers (разработка) совместно с Josh Dura (дизайн), базируясь на Google Web Service API, создали приложение Google Search App, реализующее поиск на Google. Приложение использует разработанную Майком GoogleService ActionScript Library, компоненты из набора DRK3 и технологию Flash Remoting. На днях авторы обновили свою разработку, вот некоторые последние нововведения:
Посмотреть приложение в действии вы можете здесь: Google Search App.
Пройдя по следующей ссылке, вы найдете систему голосования, созданную с помощью связки PHP+MySQL+Flash. Вот ссылка: Flash Poll 1.0. Скрипт полностью бесплатный; имеется также панель администратора для создания опросов, поддерживаются cookies для предотвращения повторных голосований. Данные хранятся в MySQL-базе. Вот пример работы скрипта. А вот — прямая ссылка для скачивания, от VM.
Mario Klingemann опубликовал симпатичное решение для отбрасывания программируемой тени от объектов, в том числе и анимированных. Марио не пожадничал и выложил также исходный файл. Марио — молодец!
Санни Хонг [Sunny Hong] хорошо потрудился, разрабатывая PHPObject (текущая версия — v1.3 (20.04.2003), скачать ). PHPObject — это продукт с открытым кодом, предоставляющий сервисы Flash Remoting для PHP-разработчиков. С помощью PHPObject вы можете вызывать методы удаленных серверных классов или библиотек PHP точно так же, как будто бы они были определены во Flash. PHPObject обслуживает соединения "клиент-сервер", предлагая при этом удобный способ подключения серверной бизнес-логики к насыщенному (rich media) клиенту на Flash.
PHPObject распространяется по лицензии GNU LGPL License. Это означает, что вы можете использовать PHPObject бесплатно, в том числе и в коммерческих целях.
А вот фичи:
onInit
onError
onResult
myFoo.doMethod_onResult = function(result){}
serialize()
unserialize()
См. также
"Инструкции по установке PHPObject"(англ.) "Использование PHPObject"(англ.)
Посетите сайт "GhostWire" — он посвящен Flash+PHP-разработке.
Тодд Ярд опубликовал интересный компонент, позволяющий рисовать векторные пути и двигать текст по ним. Посмотреть и скачать можно здесь.
На днях сотрудники Ф. Потрошителя осваивали полезный Hierarchical Menu Component, талантливо запрограммированный одним из наших египетских собратьев, Hamza Fawzi (сайт достоин внимания). Это очень полезная вещь. Это меню, которое практически ничем-ничем не отличается от тех, к которым мы так привязались, используя операционные системы с графическим интерфейсом. Сегодня же телетайпом было получено сообщение из Египта: Hierarchical Menu Component обновлен до версии 1.4, и теперь он еще более дружелюбен!
Вы также можете подружиться с данным компонентом — прямо здесь и сейчас. Скачать Hierarchical Menu Component и начать жить.
Macromedia предлагает разработчикам скачать бесплатную версию Flash Communication Server MX 1.5 Developer Edition. Функциональность данной версии ограничивается количеством одновременных подключений — 5 штук и максимальной пропускной способностью канала — 250 kbps. Версии Personal и Professional имеют ограничения в 50 и 2500 пользователей соответственно.
Скачиваемые файлы для Windows 2000/XP содержат обе компоненты — для разработки и для сервера. Для Red Had Linux 7.3 и выше доступны только серверные компоненты, а для Macintosh — только компоненты разработки.
Flash Communication Server MX 1.5 также включает возможность HTTP-тоннелирования (прощайте, проблемы с безопасностью?)
Бесплатную версию Flash Communication Server MX 1.5 качать отсюда // via www.planetmx.net
Burak выпустил новый плагин для ASV, он значительно облегчает просмотр кэша IE в поисках файлов формата swf. Кроме самых банальных случаев, эта утилитка придет на помощь при отладке с помощью ASV димамически генерируемого флэш-контента, например, когда используется Ming (модуль генерирования Flash для PHP) или JGenerator.
Лицензионные пользователи могут связаться с автором и получить плагин бесплатно, он также включен в новые релизы ASV.
Macromedia сообщает о выпуске обновления с исправлением многих "проблемных мест" Flash Remoting — Macromedia Flash Remoting Updater Release 1.
Здесь — полный перечень исправлений в Flash Remoting и ссылки для скачивания необходимых компонентов.
Macromedia выпустила новую версию Flash Player для всех платформ — Flash Player 6.0.79.0. Произведен ряд улучшений и исправлений:
liveDelay
NetStream
Вам, очевидно, известно, что нарисовать одновременно большое количество объектов — нетривиальная задача для Flash. Мы рискуем получить предупреждение от проигрывателя — он может решить что завис, потому что такая операция занимает довольно долгое время. Вот один из вариантов решения этой задачи на сайте www.redsnail.com. Исходный файл прилагается.
Автор сайта www.j3r.com умело использует объектно-ориентированное программирование и делится собственным опытом. Стоит сходить, однозначно. Идите.
Вы, вероятно, уже использовали имеющиеся в Flash MX методы программного рисования мувиклипов; напомним, что встроенный метод curveTo позволяет создавать кривые второго порядка. Роберт Пеннер создал и опубликовал библиотеку для программного рисования кривых третьего порядка. Пример ее использования вы можете видеть выше.
curveTo
Непосредственная отрисовка кривой третьего порядка производится путем вызова вот такой функции: myMovie_mc.drawBezierPts(p1, p2, p3, p4, tolerance)
myMovie_mc.drawBezierPts(p1, p2, p3, p4, tolerance)
Скачивайте библиотеку и экспериментируйте сами.
Рекомендуем посетить сайт junioronline — автор выложил несколько новых экспериментальных клипов, создающих довольно интересные и качественные визуальные эффекты. И что особенно хорошо — с исходниками :)
Колин Мук [Colin Moock] опубликовал ценную статью о загрузке XML-данных с разных доменов. Дело в том, что клип, находящийся в одном домене, не может просто так загрузить XML из другого домена — это продиктовано соображениями безопасности: каждый клип "играет в своей песочнице", а к другим его поиграть не пускают :) Все это подробно описано в документе о политике безопасности Flash MX — "Security Sandbox". Как это печально..
..и тут в роли Колина Мука появляется Колин Мук и показывает нам, что все на самом деле не так плохо :) Ура! Всем читать, как обойти ограничения доменов при загрузке XML (Сдается, речь пойдет о хорошо знакомом нашим постоянным читателям методе AllowDomain (по-русски))
ASV Drawing Class — это класс для отрисовки графики с использованием массивов данных, сгенерированых прямо из swf-файла с помощью утилиты ActionScript Viewer. Совсем скоро (несколько недель) выйдет версия ASV, полностью поддерживающая соответствующие возможности.
Питер Холл [Peter Hall] приводит пару примеров. Первый пример показывает линейные преобразования векторного объекта, второй — более интересный — демонстрирует нелинейные трансформации.
Как говорит сам Питер, ему досадно, что Burak несколько запоздал с введением в ASV возможностей экспорта векторных данных. "Я вынужден был все это время динамически отрисовывать сложные векторные формы, например, такие, как скриптованый логотип Питера Холла ;-)" — признается Питер.
Что все это означает? Теперь вы можете не ломать голову, вручную составляя массивы точек для рисования задуманной вами векторной формы (а вы давно уже это делаете, правда?). Теперь вы просто рисуете ее, компилируете, и пропускаете готовый swf-файл через ASV нужной версии (ASV v. 3.01), и на выходе получаете готовые массивы тех же точек, что могли часами рисовать с линейкой и циркулем. Отлично! Теперь они в ваших руках :)
Питер также делится, что его дальнейшие шаги будут направлены в сторону формата SVG.
Он вообще башковитый парень, этот Питер Холл :)
Не знаешь, как правильно генерировать псевдослучайные последовательности? Нужны алгоритмы поразрядной, быстрой, пирамидальной, и топологической сортировки? Заказчик хочет срочно обойти бинарное дерево, используя нечеткий поиск :) ? Или найти ближайший к данному цвет? А может, программно нарисовать лист папоротника?
Тебе нужны алгоритмы!
И ты найдешь их на сайте, целиком и полностью посвященном алгоритмам —www.algolist.manual.ru
Кроме того, ты найдешь там темы: Защита информации и ее взлом (Введение в криптографию, Атаки, Стеганография, Аутентификация и хэш-функции) Сжатие и кодирование (Звука, Изображений, Общие алгоритмы) АИ, ГА, Нейронные сети (Нейронные сети, Генетические алгоритмы) Игры (Генерация лабиринтов, Волновой алгоритм, Крестики-нолики, Альфа-бета отсечения, Калах, Изометрическая проекция) — и многое другое. Такой полезный сайт нельзя пропустить, хоть он и не о флэше :)
Иди, и алгоритмизируй свою деятельность на www.algolist.manual.ru!
Ах да, с днем типа самизнаетекого :)
Собственно, что рассказывать-то? Настоящая трехмерная игра в космосе, с разными типами кораблей и вооружения, миссиями, базами, заданиями и другими фичами. Мы рады, что она сделана "нашим" человеком по имени Владимир Савченко :) Смотрите и играйте: Space Control
Это маленький инструмент, который может пригодиться вам для запуска внешних приложений, открытия файлов и окон проводника, печати документов и т. д. — всего, что иногда приходится выполнять флэш-клипам на машине пользователя. Автор этой утилиты - Aritali, а инструкцию на русском вы найдете у Ф. Потрошителя:
SOP — парсер зашаренных объектов.
Это недокументированный метод для работы с текстовыми полями, который сжимает до одного пробела несколько идущих подряд пробельных символов (так же поступают броузеры). Например, фраза:
"Привет \t\n\r \t всем!"
превратится в
"Привет всем!"
Данный метод действует только для html-текста в текстовых полях и полезен тем, что теперь не нужно вручную удалять все переносы строк, табуляции и т. п. в подгружаемом html-тексте. Жизнь становится немного удобнее :)
Больше можно узнать здесь: обсуждение метода textField.condenseWhite на FlashCoders
textField.condenseWhite
Если вам приходилось терять исходники, а затем ломать голову — как отредактировать уже откомпилированный файл — тогда вы поймете, что за инструмент попал к вам в руки :) URL Action Editor позвляет редактировать в уже опубликованном swf-файле части кода, связанные с вызовом URL(такие функции, как getURL, LoadMovie, UnloadMovie, LoadVariables и так далее). Это полезно, например, для изменения контактной информации в ваших старых клипах (если вы поменяли адрес E-mail), или ссылок в баннерах. Скачать URL Action Editor 3.03!
getURL
LoadMovie
UnloadMovie
LoadVariables
[добавалено] И еще один момент: на самом деле вы можете обойтись без программы URL Action Editor. Как подсказывает syo, [www.script.com.ua], ссылки в swf можно редактировать и в обычном текстовом редакторе, они визуально выделяются из бинарного кода :) Хорошо было бы подобным образом править и тексты :)
А вот — еще один пример трехмерной круговой диаграммы, правда, исходников не видно :) Но весьма впечатляет! Да и зачем исходники — что уж тут неясного, бери и делай! См. пример 3d диаграммы>>
Красивый способ построения круговых диаграмм представлен на сайте www.vmstudio.com. Статья написана простым, доходчивым языком, и мы рекомендуем ее всем, кто имеет дело с отображением статистических данных, и не только. Читайте, это красиво и интересно: динамическое построение трехмерных круговых диаграмм с помощью Flash MX [И скажите спасибо Виталию Манакову :]
Если вы зайдете на сайт www.flash-tools.com по этой ссылке, то увидите обычную, на первый взгляд, веб-страницу. Но только на первый взгляд. Потому что кроме Flash там нет совершенно ничего, даже скроллбар, который вначале воспринимается как скроллбар самого броузера, оказывается встроенным в флэш-клип! Кстати, на этом флэш-сайте вы найдете также множество полезной информации, так что Якоб Нильсен может в данном случае отдыхать: никогда еще флэш не был замаскирован так умело :)
Предлагаем вам начать освоение технологии Flash Remoting. Это удобный инструмент для работы Flash с сервером, о чем мы уже неоднократно сообщали — и вот пришло время перейти от слов к действию. Эту статью перевел с английского и передал нам Кирилл Гришин, за что мы ему очень и очень благодарны; надеемся, после ее прочтения вы будете испытывать аналогичные эмоции :) Осталось только освоить статью по ColdFusion MX и Flash Remoting и начать создавать свое первое приложение для FlashRemoting.. Начать!
Даниэль Дура [Daniel Dura] сообщает интересную новость о совместной работе Flash Remoting и PHP; если вы знаете PHP, и при этом просто влюблены в функциональность Flash Remoting (а это такая штука, которая ну просто очень-очень упрощает работу с сервером), вам будет полезно почитать сообщение от Шона Корфилда [Sean Corfield]. Итак, читайте: Flash Remoting и PHP
Этот компонент можно использовать, если вы хотите добавить обработку колеса мышки в ваши приложения, использующие стандартные компоненты из набора Flash UI Components, например, такие, как ListBox и ScrollPane. Полезная вещь! Качать >>
!Важно: комментарий от Антона Волкова:
Внимание! Компонент для Screenweaver'а!
Т.е. в native флэше мы это использовать не можем. Оно и понятно, ведь для того, чтобы считать движения колеса мыши, необходимо вызывать cистемные функции, а если они не заложены во flash player, то просто средствами AS их не написать.
Поэтому данный компонент пригодится для тех, кто делает standalone-презентации. Не забудьте "обработать" получившуюся презентацию Screenweaver'ом (http://www.screenweaver.com/download.cfm)
Эти сведения получены нами от Питера Холла [Peter Hall]. Он пишет:
"Учитывая комментарии читателей к моему сообщению о скорости выполнения функций в Flash Player [то же самое по-русски], оптимизация Flash Player зависит от платформы, на которой он используется.
Машины на процессоре Pentium 4 быстрее выполняют функции, чем "процедурный" код, что можно объяснить оптимизацией в процессоре P4 (r40), хотя эта оптимизация более связана с рендерингом, чем с ActionScript. Макинтоши по прежнему выполняют функции медленнее, чем процедурный код.
Также я уверен, что одиночное действие выполняется медленнее, чем аналогичное ему, но являющееся частью цикла из 100000 идентичных действий. Но очень сложно измерить время выполнения одного действия. Очевидно, стоит провести серию тестов производительности, чтобы измерить эти различия и использовать полученный статистический вздор для получения ответа.
Не знаю, вызваны ли различия повышением эффективности внутренних функций, улучшениями в стандартных функциях, вызова функций или недостатками в манипуляциях с объектами. Но ясно, что оптимизированный код для одной машины может не являться таковым для другой."
При разработке приложений часто требуется вызвать модальное окно [как правило, для ввода данных пользователем]. Модальность окна означает, что пользователь может совершить действия только в этом подокне вашего флэш-приложения — значит, если в приложении есть другие элементы ввода, (например, кнопки) их нужно сделать неактивными. Красивое решение этой задачи вы найдете на сайте Эрика Долецки, вот ссылка: модальность в флэш-приложении.
Обновление: зачеркнутый далее текст устарел, ссылки в нем не работают. Вот рабочие:
Создание Flash MX компонента от Виталия Манакова
Создание компонентов (часть 1) от Александра Манжулова.
А еще лучше -- подпишитесь на группу ruFlex! Вот где сила.
Первая статья рассказывает о том, как создавать компоненты в Macromedia Flash MX. На примере создания компонента "Пульсирующая кнопка" показаны все ключевые моменты процесса. Итак, читайте статью Создание компонентов Flash MX на сайте http://michl.flashmaster.ru
И вот ваш компонент завершен и протестирован. Самое время дать ему билет в большой мир, чтобы вашим творением мог воспользоваться каждый желающий. Здесь вам весьма пригодится статья о том, как создать XML-файлы справки для пользовательских Flash MX компонентов
Читать и действовать!
Оказывается, многие функции Flash Player выполняет значительно быстрее, чем мы думали. Например, англичанин Питер Холл [Peter Hall] всегда считал, что вручную (с помощью оператора []) элементы добавляются в массив быстрее, чем при использовании метода push. И был не прав, в чем сам же скромно признается (кстати, очень повальная практика). Питер пишет:
[]
push
Я всегда делал так:
a = []; t = getTimer(); for(var i=0; i<100000; i++){ a[i] = 1; } trace(getTimer()-t); // результат: 2555
Но сравните с этим:
a = []; t = getTimer(); for(var i=0; i<100000; i++){ a.push(1); } trace(getTimer()-t); // результат: 2241 (!)
Как видите, если компьютер не самый быстрый, можно реально уменьшить количество циклов, чтобы избежать остановки проигрывателя по таймауту.
И это касается Flash Player версии 6.0.21.0. Но люди говорят, что в проигрывателях более свежих версий функции стали работать еще быстрее :)
Устранен последний баг, связанный с комментариями к записям в журнале Ф. Потрошителя (неверная кодировка символов при открытии окна комментирования). Теперь все работает правильно, проверяйте, да хоть бы и на вот этой самой записи.
Спасибо Димму за помощь :)
Claus Wahlers целый год работал над проектом под названием "DENG". DENG — это движок, превращающий Flash Player 6 в модульный веб-броузер. DENG понимает стандартные XML-форматы типа XHTML, XForms и XFrames. Особую мощь движку придает встроенный парсер CSS 2.1 (неужели globalStyleFormat больше не нужен?). Также движок обеспечивает полную поддержку пространств имен XML. Например, добавление #include "dengSVG.as" в ваш проект превратит ядро DENG в рендерер формата SVG.
globalStyleFormat
DENG будет доступен для всех желающих, но не бесплатно. Есть подозрение, что к моменту выкладывания автором бета-версии (намечено на весну), заочных поклонников DENG'а будет уже немало.
Уже сейчас вы можете плотнее войти в курс дела, прочитав написанную Клаусом статью о некоторых особенностях DENG. Кроме того, у Клауса есть собственный блог, который также может вам пригодиться.
"Это руководство расскажет Вам, как отправлять собственные Flash открытки кому-либо, или предложить посетителям Вашего сайта сделать тоже самое. Это руководство писалось как можно более простым языком, но оно является описанием очень мощной службы отправки открыток даже для комерческого сайта. Я использовал только два простых php скрипта, они автоматически создадут...Читайте полностью: Статья о совместном использовании flash и php. на www.zona5.al.ru //via Michael
Метод SetInterval позволяет контролировать время выполнения функций лучше, чем какой-либо другой метод. Во
SetInterval