среда, мая 16, 2007

APE - Actionscript Physics Engine

APE - 2d движок для Flash/Flex. Скачать версию 0.3 alpha можно отсюда. Есть небольшое демо, а также можно выполнить урок для начала работы с движком во Flex Builder.

Прикольная демка Papervision/Flex

пятница, мая 04, 2007

AS3 String Utils

Класс с расширенными методами управления строками.

API:
afterFirst
adterLast
beginsWith
beforeFirst
beforeLast
between
block
capitalize
contains
countof
editDistance
endsWith
hasText
isEmpty
isNumeric
padLeft
padRight
properCase
quote
remove
removeExtraWhiteSpace
reverse
reverseWords
similarity
stripTags
swapCase
trim
trimLeft
trimRight
wordCount
truncate

четверг, апреля 26, 2007

Открываем ссылки в новом окне

Современные браузеры зачастую блокируют ссылки, открывающиеся в новом окне. Firefox также не является исключением. При этом (в зависимости от настроек блокировщика) у него появляется маленький крестик внизу, о миссии которого сложно догадаться с первого раза. Так как не все флексовые приложения использую SWFAddress, то открыв ссылку в этом же окне и вернувшись назад мы получаем исходный вид приложения, что является крайне неюзабельным. Поэтому, часто сразу ссылки открывают в новом окне, которое и блокируется. Чтобы этого избежать, некто Сергей Ковалев предлагает открывать окна через жаваскриптовый window.open. Все отлично работает, спасибо за метод борьбы:). Но теперь остается еще одна проблема: во флексе ссылки не открываются из Label. Чтобы решить эту проблему, можно совместить вышеприведенный метод с новым текстовым событием LINK следующим образом:

...
[Bindable] private var str:String = '<a href="event:http://www.ya.ru">www.ya.ru</a>';
...

<mx:Label selectable="true" htmlText="{str}" link="URLUtil.openWindow(event.text)"/>


Теперь все в порядке.

среда, апреля 18, 2007

AS3 карты

Даррон Шелл создал на гугл-коде раздел as3cards, который содержит скинуемый движок по созданию карточных игр (например, Klondike).
SVN

понедельник, апреля 16, 2007

FDT 3.0 beta

Powerflasher'ы анонсируют выход беты известного Eclipse-плагина FDT третьей версии с поддержкой конечно же AS3. Стоить сие творение будет 299 евро, а вот апгрейд с 1.5. версии всего 99. Релиз планируется на июль. Из новых фич ничего толком не объявлено: совместимость с флексом, улучшенная производительность и много очень полезных улучшений:)

понедельник, апреля 02, 2007

HTMLRenderer - больше, чем htmlText!

Хотите, чтобы Flex отображал нумерованный список, изображения с всплывающими альтами и цветными бордерами, разукрашенные таблицы со всякими колспанами и роуспанами? И еще, чтобы задано это было простыми html тегами/аттрибутами, обернутыми в конструкции OL, TEXT, IMAGE и GRID? Пожалуйста!



HTMLRenderer далеко не универсален, но всего функционала и впихнешь, а если и впихнешь, то можно получить какой-нибудь браузер:)

среда, марта 21, 2007

SWFZ - еще один 3D движок

Одновременно с Papervision3D некто jhalse разрабатывает свой движок SWFZ, который является портированным на AS движком Irrlicht, написанным на C++. Прогресс создания создания движка можно посмотреть здесь.

Примеры:
DOOM ?!
Танцующий динозаврик
Использование материалов для модели

воскресенье, марта 18, 2007

Семейство Flex Explorer

Flex Style Creator - создание css-стилей приложения.
Flex Primitive Explorer - создание графических примитивов.
Flex Filter Explorer - создание графических фильтров.
Flex Transitions and Effects Explorer - эффекты и переходы.

четверг, марта 15, 2007

Flex 2.0 Primitive Explorer

Flex 2.0 Primitive Explorer - простой способ создания графических примитивов (звездочек, треугольников, дуг, секторов и т.п.) Примитивы можно разукрашивать в свое удовольствие. Необходимый код генерируется тут же.

Некоторые тонкости использования E4X

1. Устанавливайте resultFormat="e4x" для HTTPService

По умолчанию, resultFormat для <mx:HTTPService> является "object". Но при получении XML данных, "object" - это не то, что вам нужно. Если же задать "e4x", то lastResult будет являтся XML объектом, который можно парсить с помощью E4X выражений.

2. E4X выражения не ссылаются на самый верхний тег XML

Итак, имеем <mx:HTTPService>, названный myService с resultFormat="e4x", возвращающим следующую структуру:

<?xml version="1.0"?>
<people>
<person>mike</person>
<person>sho</person>
<person>nj</person>
</people>

Эти данные содержатся в myService.lastResult (или в event.result.) Как получить XMLList всех элементов <person>?

Часто думают, что E4X выражения составляют от корневого тега <people>:

var personNodes:XMLList = myService.lastResult.people.person;
// неправильно
А правильно так :
var personNodes:XMLList = myService.lastResult.person;
// правильно

3. Используйте for each, а не for

ECMAScript давно имеет структуру for (ключ в коллекции). Но обратите внимание, что при использовании этого выражения переменной цикла является ключ коллекции, а не значение текущего элемента, поэтому в цикле необходимо писать коллекция[ключ] для ображения к его значению.

E4X добавляет следующую структуру (которую можно использовать на любой коллекции): for each (значение в коллекции). Рассмотрим примеры:

for (var key:* in myService.lastResult.person)  { 

var value:* = myService.lastResult.person[key];
...
}
А теперь for each:
for each (var value:* in myService.lastResult.person)  
{... }


4. Используйте for each (child in parent.*), вместо for each (child in parent)

Итак, есть документ :

var mydocument:XML = 
<root>
<cat>
<mouse />
<mouse />
<mouse />
</cat>
</root>
var cats:XMLList = mydocument.cat; // это только один элемент
Теперь необходимо перебрать всех мышей у этого кота.
Чтобы получить атрибуты объекта ActionScript, можно написать следующее:

var o:Object = ...;  for each (var property:* in o) ...
Вы думаете, что следующим образом вы делаете тоже самое:

for each (var mouse:XML in cats) ... // неправильно

Увы, E4X отличается. В E4X, "cats" - это коллекция -- список узлов <cat>, а в примере есть только один <cat>.

Поэтому, чтобы перебрать всех мышей необходимо использовать следующую структуру:

// перебрать все прямые дочерние элементы
for each (var mouse:XML in cats.*) { ... }
// или перебрать всех прямых потомков, которые являются узлами <mouse>
for each (var mouse:XML in cats.mouse) { ... }

5. E4X специально стирает различия между XML и XMLList

При изучении E4X, вы узнаете, что есть два типа данных: XML и XMLList. Вроде легко, но потом появляются проблемы с неправильной типизацией данных.
var mydocument = 
<root>
<rabbit name="Brownster Johansson McGee" />
</root>;
// 'mydocument.rabbit' - список всех узлов <rabbit>, значит
// myPetRabbit должен быть XMLList? Но я назвал переменную
// 'myPetRabbit', а не 'myPetRabbits',
// потому что я знаю, что заяц только один.
var myPetRabbit:XMLList = mydocument.rabbit;
// Как же его зовут? Почему следующее выражение не вызывает ошибки,
//ведь myPetRabbit - это XMLList?
trace(myPetRabbit.@name);

Причина в том, что E4X намеренно стирает различия между XML и XMLList. Каждый XMLList, который содержит один элемент, будет рассматриваться как XML. (Если 'myPetRabbit' будет содержать несколько узлов, то myPetRabbit.@name будет возвращать список всех атрибутов "name" все узлов <rabbit>.)

Например, рассмотрим документацию по методу XMLList.toString():

  • Если объект XML имеет простую структуру, то метод toString() возвращает содержимое узлов без тегов, атрибутов, пространств имен и т.п.

  • Если объект XML имеет сложную структуру, то метод toString() возвращает все содержимое, вклюяая теги, атрибуты и т.п.

То есть если XMLList содержит <node>hello</node>, то toString() вернет "hello"; но если он содержит <node>hello</node><node>goodbye</node>, toString() вернет "<node>hello</node><node>goodbye</node>" (а не "hellogoodbye"). Если же вам всегда нужен полный XML, используйте toXMLString() вместо of toString().

6. Внимание! Простое выражение может вам дорого обойтись

При использовании простых объектов нет ничего удивительного в использовании следующего кода:

var x:Object = ...;  
if (x.y.z == 3)
foo(x.y.z);

Код работает быстро, проблем не вознкает.

Но в E4X операция типа "x.y.z" будет означать, что цикл проходит через всю XML-структуру и ищет соответствующие совпадения:

var mydocument:XML = ...;  
if (mydocument.cat.mouse.length() == 3)
{foo(mydocument.cat.mouse)};

Итак, если вам потом понадобиться использовать результат, то лучше сохранить его в XMLLis переменнойt:

var mydocument:XML = ...;  
var mice:XMLList = mydocument.cat.mouse;
if (mice.length() == 3)
{foo(mice);}

7. Используйте дебаггер


Отладчик поможет вам разобраться в значениях XML и XMLList переменных.

XML variables


Отсюда

среда, марта 07, 2007

Презентация Papervision

Те, кого интересует движок Papervision, могут скачать презентацию (40 мб, говорят, там есть исходники psd, 3d max, papervision, я не качал). В конце, наверное, получится это чудо.

Взял отсюда.

FlexBook

Эли Гринфилд нафигачил кучу примеров по использованию книжного движка во флексе.

вторник, марта 06, 2007

ActionScript 2.0 - 3.0 Migration Cheatsheet

Опубликован ActionScript 2.0 - 3.0 Migration Cheatsheet, содержащий всю необходимую информацию по переходу на AS 3.

понедельник, марта 05, 2007

четверг, марта 01, 2007

Easing-эффекты в одном месте

Джеймс Ворд выложил примерчик, демонстрирующий все типы Easing-эффектов во Flex.

FlexLib на Google Code

Doug McCune, Ted Patrick, Mike Chambers и Darron Schall анонсируют библиотеку полезных компонентов Flexlib. Вот их список с примерами.

суббота, февраля 17, 2007

Примеры движка Papervision3D

Увидел еще несколько примеров, созданных на движке Papervision3D.


2007.jpg panorama.jpg


paperPlanet.jpg bumpmapRhino.jpg



Может для заядлых 3D-шников это ерунда, но меня впечатлило!

среда, февраля 14, 2007

Как раскрасить ряды DataGrid в зависимости от данных?

А вот так!

Adobe Flex Coding Guidelines

Некто Fabio Terracini совместно с DClick написали гайдланы для написания as и mxml кода. Привели в порядок в общем.

Flex Style Explorer 2.01

Вышел Flex Style Explorer 2.01. Из новых фич анонсируют следующие:

1) Навороченный ColorPicker (эх, Василий, не видели они вашего)
2) Экспорт всего CSS
3) Поддержка StyleName
4) Стили форматирования текста
5) Возможность введения значения руками и слайдером
6) Добавлены ToggleButtonBar, HDividedBox, VDividedBox, TextArea, VRule, VSlider, ColorPicker, ToolTip
7) Улучшенная навигация
8) Индикация отредактированных компонентов
9) Работа с прозрачным приложением
10) Улучшение UI

среда, февраля 07, 2007

Прикольный скин - мятые салфетки

Наткнулся на прикольный скин, имитирующий мятые салфетки.

.

У автора пока весь блог этим салфеткам посвящен:)

четверг, января 25, 2007

Макросы в html-темплейтах флекс-проекта

${project}
Название проекта, MyProject.

${application}
Имя приложения, MyApp.

${version_major}
Major-версия плеера, т.е. 9 для 9.0 r28.

${version_minor}
Minor-версия, т.е. 0 для 9.0 r28.

${version_revision}
revision-версия, т.е. 28 для 9.0 r28.

${build_suffix}
Суффикс, определяющий тип версии приложения, "-debug" - для отладочной версии и "" - для релиза.

${swf}
Имя SWF файла без расширения .swf. Эквивалентно ${application}${build_suffix}.

${bgcolor}
Фон приложения, заданный в атрибуте backgroundColor тега <mx:Application> или в поле метаданных backgroundColor в [SWF] metadata атрибуте [SWF(backgroundColor="#ffffff")] public class MyApp extends Sprite.

${width} и ${height}
Ширина и высота приложения, заданная в <mx:Application> или в метаданных [SWF(width="300", height="400")] public class MyApp extends Sprite.

${title}
заголовок приложения, заданный в атрибуте pageTitle тега <mx:Application> или в [SWF(pageTitle="flex r00lz")] public class MyApp extends Sprite.

Отсюда

среда, января 24, 2007

Flex2LocalDebugger - трейс-панель во флексе

Flex2LocalDebugger - это некоторое подобие легкой отладки флекс-приложений. Например, при вызове
LocalDebugger.show('test'); вылетает окошко Alert с надписью test.

А LocalDebugger.trace('test'); заносит информацию в окно отладки. Flex2LocalDebugger работает через LocalConnection, поэтому для правильной работы функции trace необходимо запустить файлик Flex2LocalDebuggerConsole.html, который идет в архиве. В нем и будут отображаться все ваши трейсы.

PageFlip во флеше и флексе

На ByteArray.org можно скачать базовый класс переворачивания страниц. А тем временем, в Нидерландах создали с его помощью маленькое флекс-приложение PageFlip.

среда, января 17, 2007

felxoBooth - сервис для эксбиционистов

Полушуточный сервис - felxoBooth - наложи на себя фильтр и покажись другим:)

пятница, января 12, 2007

Альтернатива FMS - Wowza Media Server

Вышла вторая бета Wowza Media Server (WMS). WMS - RTMP сервер для передачи потокового видео, аудио и данных от и к Flash-плееру. WMS может быть размещен на любой платформе, поддерживающей Java 5. На официальном сайте проекта текущая версия доступна для скачивания (после регистрации). В комплекте установки идут примеры проигрывания потокового видео, видеочата, использования Remote Shared Objects, записи видео и др.

О цене WMS будет объявлено позже.

четверг, января 11, 2007

Несколько заметок про Date

Как известно, конструктор Date может принимать значения года, месяца (0-11), дня (1-31) и т.п. Но можно немножко поиграть с параметрами и получить интересные результаты.

Например, если задать в качестве месяца -1, то из даты будет вычтен месяц:

var dt:Date = new Date( 2006, -1, 1 );
// Thu Dec 1 00:00:00 GMT+0300 2005


Теперь попытаемся создать 0 января 2006 года:

dt = new Date( 2006, 0, 0 );

Получим 31 декабря 2005 года.

0 марта не существует, поэтому получаем 29 февраля (2008 год будет високосным):

dt = new Date( 2008, 2, 0 );

Теперь вычтем из текущей даты неделю:

dt = new Date();
dt.date = dt.date - 7;


Получим Thu Jan 4 2006.

Вот такая математика:)

С прошедшими праздниками всех!

вторник, декабря 26, 2006

Введение в контейнеры

Закончил перевод новой статьи FlexWiki - "Введение в контейнеры". Рассмотрены способы добавления и удаления элементов в контейнерах, системы координат контейнеров, события контейнеров, использование скроллбаров.

Использование Flex 2 и AMFPHP

Перевел летнюю статью Майка Поттера о работе с PHP из Flex 2 через AMFPHP.
А тем временем вышла бета AMFPHP 1.9, поддерживающая json, xml-rpc, amf3. Сервис-браузер теперь на флексе. Примеры работы с AMFPHP можно скачать на гугловской страничке проекта.

вторник, декабря 19, 2006

Первое Fisix приложение

Недавно я писал про альфа-релиз движка Fisix. Вот перевод вводного урока по его использованию.

воскресенье, декабря 17, 2006

Flex-девелоперы, терпите, ваше время - 2008 год...

Яков Файн, прослушав финансовый отчет от Адоби сделал маленький обзор:
- на данный момент прибыльными являются продукты из Creative Suite;
- Acrobat вообще рабочая лошадка;
- LiveCycle является победителем в enterprise-секторе;
- Flash Lite рулит на мобильных девайсах;
- прибылей от Flex и Apollo ожидают в 2007 году.

Поэтому флексеры вольются в мейнстрим только к 2008 году, а значит сейчас самое время учиться.

P.S. Интересно, в России кто-нибудь имеет доходы от этого? Не считая работу с забугорными закзчиками.

Вышла альфа 2d движка Fisix

Движок реализован на ActionScript 3. Скачать можно отсюда.
Примеры:
Mona the Ragdoll
Bike Game
Boxes Demo
Hourglass

Несколько уроков:
Первое Fisix приложение
Работа с Fisix в FlashDevelop
Партиклы
FisixObject
Мануал по Fisix

Думаю, скоро переведу.

Компонент FileUpload

Coding cowboys причесали свое приложение по загрузке файлов и выпустили компонент FileUpload (исходник).

вторник, декабря 12, 2006

Как правильно переносить текст в ячейке DataGrid

Брюс Филлип недавно потратил целых полтора часа на поиск решения проблемы правильного переноса в DataGrid.

Суть проблемы в следующем. Текст в ячейке с атрибутом wordWrap=true будет переноситься в остальных рядах, только если он переносится в первом. Посмотрим на следующий пример. Измените ширину правой колонки Title так, чтобы текст ячейки не требовал переноса, затем перейдите туда и обратно, чтобы обновить вид. При этом, если следующие ряды требуют переноса, то его не будет и текст просто обрежется. Если же текст первой ячейки переносится изначально, то все остальные будут переноситься тоже. То есть никакой wordWrap не поможет...

А поможет нам variableRowHeight = true!

Papervision3D - примеры использования

Papervision3D - 3D движок для Flash 8/9 проектов. Как заявляют разработчики, он отличается легкостью применения и высокой производительностью. Примеры его использования мягко говоря впечатляют:
раз, два, три, четыре и пять (с Flex'ом).



Ссылки по теме:
Страница на OSFlash
Блог разработчиков
Email лист

Исходников пока нет, но обещают в декабре.

Первая часть урока Flex Cairngorm/WebORB Issue Tracker

Дерек начал выкладывать урок по созданию Flex Cairngorm/WebORB Issue Tracker приложения. Я начал его переводить.

воскресенье, декабря 10, 2006

Переходы между цветами

Даррон Шелл выложил пример создания так называемых Color Transitions.

Примеры по скинованию Flex-приложений

Эндрю Трайс выложил в довес к своей презентации по скинованию несколько примеров скинования с исходниками, в числе которых использование scale9, изображений при скиновании, программного создания скинов и др. Загрузить весь код можно отсюда. Посмотреть работу можно со страницы оригинального поста.

четверг, декабря 07, 2006

Эмуляция repeat-x/repeat-y для фона Flex-приложения

Чтобы создать дублируемый фон для приложения можно использовать заливку beginBitmapFill для заведомо большого прямоугольника, который будет играть роль фона. Посмотреть можно здесь. Исходники там же.

среда, декабря 06, 2006

Просмотр сгенерированного из MXML-приложения AS кода

Как известно, Flex при компиляции создает из MXML-кода ActionScript. Просмотреть созданный код можно, задав параметр компиляции -keep-generated-actionscript в свойствах проекта в разделе Flex Copmiler. Теперь при компиляции будет создана папка generated, где будет расположен весь код.

вторник, декабря 05, 2006

Интеграция WPF/E и Flash

Ли Бримлоу выложил пример интеграции Flash и WPF через JavaScript и исходники.

Использование mx:Metadata для задания стилей компонентов

Я уверен, что вы умеете создавать пользовательские компоненты во Flex и применять к ним CSS. Но знаете ли вы, что можно использовать стили компонента для задания стилей элементов, находящихся внутри этого компонента?

Давайте взглянем на пример. Здесь расположены два компонента (example 1 и example 2). Это два экземпляра компонента "MXML_Example". Да, выглядят они по разному, но родитель у них один. Каждый "MXML_Example" сожержит mx:Panel, mx:TextArea и mx:Button.

Посмотрим на исходный код компонентов:

<components:MXML_Example width="{(width/2)-20}" left="10" top="80" title="Example 1" styleName="example1" height="200" />
<components:MXML_Example width="{(width/2)-20}" right="10" top="80" title="Example 2" styleName="example2" height="200" />


Разница лишь в атрибуте styleName.

Давайте посмотрим на исходный код компонента "MXML_example". В теге mx:Metadata можно увидеть определения трех стилей.

<mx:Metadata>
[Style(name="panelStyleName", type="String", inherit="no" )]
[Style(name="buttonStyleName", type="String", inherit="no" )]
[Style(name="textAreaStyleName", type="String", inherit="no" )]
</mx:Metadata>


По наступлению события creationComplete эти стили применяются к компонентам внутри "MXML_Example".

private function onCreationComplete() : void
{
panel.styleName = getStyle("panelStyleName");
button.styleName = getStyle("buttonStyleName");
textArea.styleName = getStyle("textAreaStyleName");
}


А вот и сам CSS:

.example1
{
panelStyleName:"panel1";
buttonStyleName:"button1";
textAreaStyleName:"textArea1";
}
.example2
{
panelStyleName:"panel2";
buttonStyleName:"button2";
textAreaStyleName:"textArea2";
}


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

Открыть в новом окне
Посмотреть исходный код
Скачать исходный код

Статья

четверг, ноября 30, 2006

Поисковые инструменты

Продолжая тему поиска flex приложений, кода и другой инфы увидел пост Браяна Рили:

Постраничный вывод в DataGrid

Смотрим, код - по правой кнопке. Насколько я понял из оригинального поста, исходный источник данных в виде массива разделяется на необходимое число подмассивов, которые и выводятся по очереди.

Уменьшение размера swf с помощью удаленных библиотек

Накнулся на интересный пост Джеймса Ворда, в котором рассказано, как уменьшить размер выходного swf файла с помощью использования Runtime Shared Libraries (RSL) - удаленных библиотек. Вот перевод.

Flex 2 позволяет загружать эти библиотеки с других доменов. Подразумевается, что приложение будет указывать на какой-нибудь определенный набор библиотек, который браузер будет быстро доставать из кэша. Перед началом необходимо заметить, что это не поддерживается Adobe, хотя команда разработчиков и работает в этом направлении, пока это просто хак. Во-вторых, пока нет нормального централизованного хранилища для RSL- библиотек, они хранятся на моем сервере, который может быть взломан и вместо изначальных библиотек вы получите какие-нибудь опасные компоненты. Несмотря на эти препоны, этот способ удовлетворяет большинство приложений и позволяет значительно уменьшить их размер. Как же это применить?

Мною было создано три библиотеки: малая, средняя и большая. Библиотеки взаимодополняемы, то есть, если необходимо использовать среднюю, то загружать надо малую и среднюю. См. таблицу у автора.


1) Скачайте необходимые SWC для RSL
2) Измените build path проекта
2.1) Если вы компилируете с помощью Ant или командной строки, определите пути к библиотекам следующим образом:

flex2-sdk/bin/mxmlc -external-library-path+=build/framework-2_0_0_a-small.swc,
build/framework-2_0_0_a-medium.swc -runtime-shared-libraries=
http://ws.jamesward.org/framework-2_0_0_a-small.swf,
http://ws.jamesward.org/framework-2_0_0_a-medium.swf-o=
build/testHostedFlexLibs-medium.swf -file-specs=test/testHostedFlexLibs.mxml

2.2) Если вы используете Flex Builder, перейдите в Project -> Properties -> Flex Build Path -> Library Path -> Add SWC -> [добавьте необходимые SWC]. Затем выберите SWC’s RSL URL и нажмите кнопку Edit. Измените Link Type на "Runtime shared library (RSL)", введите правильный URL, уберите галку с "Auto extract checkbox", затем нажмите OK.

2.3) Если вы используете FDS, добавьте SWC в папку flex/user_classes и обновите runtime-shared-libraries соответственно в файле flex-config.xml.

3) Перекомпилируйте приложение (если этого не произошло автоматически) и размер файла значительно уменьшится!

4) Еще одна преграда - приложение будет работать только из интернета, потому что политика безопасности запрещает загружать внешние ресурсы.

среда, ноября 29, 2006

Поиск по коду as и mxml файлов

Недавно узнал о таком полезном сервисе Гугла, как поиск по коду. Например, можно искать по mxml и as файлам следующим образом:
file:.mxml$ tabnavigator
file:.as$ displayobject

Отсюда

Четыре днюхи за неделю

Заметил тут, что буквально за неделю с 20.11 по 27.11 прошло целых четыре дня рождения:
20 - МК
23 - Дэн Иванов
26 - Рост
27 - мое:)

Всех поздравляю задним числом!

вторник, ноября 21, 2006

Использование data-driven виджетов

Закончил перевод главы "Использование data-driven виджетов". В ней рассмотрены следующие виджеты:

Форматирование чисел в AS3

Есть небольшая AS3 библиотека с полезными методами. Одним из них является вывод чисел, форматированных по маске. За это отвечает класс NumberFormat. Маски поддерживают следующие символы:

  • 0 - место, заполненное числом или нулем
  • # - место, заполненное числом или пробелом
  • . - дробный разделитель. Выводится символ точки
    или запятой - в зависимости от локали.
  • , - группировка символов. Выводится символ точки или запятой - в зависимости от
    локали.

Рассмотрим следующую маску:
##,###.0000

Если эту маску применить к числам
1.2345
12.345
123.45
1234.5
12345

То они будут отображены в виде
1.2345
12.3450
123.4500
1,234.5000
12,345.0000

Задать маску числу можно следующими способами:

  1. создать эеземпляр NumberFormat:
    var styler:NumberFormat = new NumberFormat("##,###.0000");


  2. использовать свойство mask:
    styler.mask = "##.00";

Рассмотрим готовый пример:var styler:NumberFormat = new NumberFormat("#,###,###,###");
trace(styler.format(1));
trace(styler.format(12));
trace(styler.format(123));
trace(styler.format(1234));

styler.mask = "#,###,###,###.0000";

trace(styler.format(12345));
trace(styler.format(123456));
trace(styler.format(1234567));
trace(styler.format(12345678));
trace(styler.format(123456789));


Числа будут выведены в следующем виде:
1
12
123
1,234
12,345.0000
123,456.0000
1,234,567.0000
12,345,678.0000
123,456,789.0000

Разделители и знаки дроби меняются на точки или запятые в зависимости от текущей локали автоматически. Но могут иногда быть ошибки определения локали. В
этом случае локаль можно определить руками, задав, например:

Locale.slanguage = "fr";

Во Франции, в качестве группировки применяются точки, а в качестве дробного разделителя запятые. Насколько я знаю, в России тоже самое, поэтому данную
установку можно использовать (или я ошибаюсь?).

При выполнении примеров не забудьте импортировать необходимые классы:
import ascb.util.NumberFormat;
import ascb.util.Locale;

Отслеживание реального фреймрейта

По умолчанию, флекс-приложения компилируются с фреймрейтом, равным 24 кадрам в секунду.
Установить свой фреймрейт можно с помощью команды компилятора:

mxmlc -default-frame-rate=50 HelloWorld.mxml

Но установка значение в 50 кадров в секунду вовсе не означает, что каждые 20 миллисекунд будет проигран кадр. Разные типы браузера, плеера, операционной системы дают разные результаты. Протестировать реальный фреймрейт можно с помощью следующего небольшого приложения:

<mx:Application
mx="http://www.adobe.com/2006/mxml"
layout="horizontal"
enterFrame="enterFrameHandler()">
<mx:Script>
<!--[CDATA[
var lastTime:int;
public function enterFrameHandler():void {
test.text = String(int(1000/(getTimer()-lastTime)));
lastTime=getTimer();
}
]]>

</mx:Script>
<mx:TextInput id="test" />
</mx:Application>
Взято у FARATA.

пятница, ноября 17, 2006

Коллекция уроков по Ruby on Rails

На Rails Forum с августа функционирует раздел уроков (на английском) по RoR. На данный момент представлено около 30 уроков. Тут же можно заказать урок - возможно кто-то его и напишет.

Эли Гринфилд почти закончил свой календарь

Эли Гринфилд представляет очередную демку своего интеактивного календаря. Не путать с Flex Scheduling Framework. Скачать исходник можно отсюда.

понедельник, ноября 13, 2006

Создание FDS Flex приложения с помощью FlashDevelop

К бесплатной программе для AS/Flex разработки FlashDevelop некто Gurufaction создал темплейт для разработки Flex Data Services приложений. Установка и создание тестового приложения рассмотрена здесь.

вторник, ноября 07, 2006

250 темплейтов для RadRails

Dr. Nik создал 199 ruby и 48 rhtml темплейтов.
После скачивания откройте RadRails, перейдите в меню
Windows > Preferences > Ruby > Editor > Templates, выделите все элементы (ctrl+A), затем удалите их. Потом выберите Import и импортируйте ruby-rr-templates.xml.
Для импорта rhtml темплейтов зайдите в
Rails > Editiors > RHTML Editor > RHTML Templates, повторите туже процедуру и импортируйте rhtml-rr-templates.xml.
Обещано включить эти темплейты в следующий релиз RadRails.

понедельник, ноября 06, 2006

Загружаем эффекты, показанные на MAX 2006

Алекс Ульман выложил свою презентацию (pdf) с конференции MAX 2006 и весь исходный код своих эффектов. Данные эффекты используют утилиту DistortImage из 3d движка Sandy. Реализованы следующие эффекты - Flip, CubeRotate, Push, Pop, Door и Gate. Но лучше один раз увидеть, как говорится...

четверг, ноября 02, 2006

Видеоуроки по Flex 2 и Red5

Наткнулся на интересный сайт, предоставляющий видеоуроки по Flash / Flex / Red 5 - www.flashextensions.com. Особенно интересен Red5...

Компонент DisplayShelf

Компонент DisplayShelf представляет из себя богатый виджет для трехмерного отображения элементов.

Пример разделен на три блока. Первый, компонент TiltingPane, получает любой элемент и применяет к нему '3d' эффект. Второй, компонент DisplayShelf, использует компонент TiltingPane для отображения элементов вдоль виртуальной полки, из которой можно выбирать элемент.

В примере проиллюстрирурованы:
  • матричные трансформации
  • graphics API
  • маскирование
  • манипуляции с битмапом
  • темплейтинг
  • item renderers
  • интерфейс IList
  • реализация dataProvider'ов
  • анимация

Посмотреть DisplayShelf
Исходник
Загрузить

Отсюда

среда, ноября 01, 2006

Новый формат просмотра исходников Flex-приложения

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

вторник, октября 31, 2006

Выложены некоторые примеры кода из RIABook

Выложены примеры кода приложений главы про DataGrid из RIABook. Сами примеры можно посмотреть здесь. Авторы также собираются опубликовать три из этой книги в ColdFusion magazine.

Увеличение производительности Eclipse IDE

Чтобы увеличить скорость работы Eclipse, необходимо изменить параметры выделяемой для программы виртуальной памяти. Изменения можно произвести в файле eclipse.ini, а для Flex Builder 2 - FlexBuilder.ini, которые находятся в папках установки этих программ. Также можно задавать эти параметры в командной строке при вызове IDE.

Например, для машины с 512 метрами памяти предлагается использовать следующие параметры:
-vmargs -Xms256m -Xmx256m -XX:PermSize=64m -XX:MaxPermSize=64m

А для 1024 -
vmargs -Xms512m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=128m

Оригинал

понедельник, октября 30, 2006

четверг, октября 26, 2006

Полнотекстовый поиск по Rails-приложению

Ferret - это Ruby-реализация поискового движка Apache Lucene. Использовать его довольно легко:

1. Откройте командную строку и установите
gem install ferret
2. Затем установите плагин acts_as_ferret в папку приложения:
ruby script/plugin install 
svn://projects.jkraemer.net/acts_as_ferret/
tags/stable/acts_as_ferret
3. Измените модель, соответствующую таблице, по которой должен идти поиск, следующим образом:
class Bug < ActiveRecord::Base
acts_as_ferret :fields => [ ‘description’]
end
где :fields - поля для индексации. Если не использовать этот атрибут, то будут проиндексированы все поля.

4. Добавьте, например, такой метод:
def searchBugs
@bugs= Bug.find_by_contents(params[:query])
render(:xml => @bugs.to_xml)
end
5. Наконец, можно вызвать этот метод из Flex-приложения с помощью HTTPService.

Например, следующий код вернет все bugs, содержащие слово "error" в поле description:
searchBugs.send({query:"error"});

Оттуда

Пример кода Apollo приложения

В дополнению к посту Майкла Клишина о структуре Apollo приложения хочу представить отрывок кода простого HelloWorld приложения, подсмотренный со слайдов FiTC Hollywood. Приложение состоит из конфигурационного xml-файла ApolloHelloWorld-app.xml:

<application
xmlns="http://ns.adobe.com/apollo/application/1.0"
appid="" version="1.0">
<properties>
<name>ApolloHelloWorld</name>
<publisher>Mike Chambers</publisher>

<description></description>
<copyright></copyright>
</properties>

<rootcontent
contenttype="application/x-shokwave-flash"
windowmode="transparent">
ApolloHelloWorld.swf
</rootcontent>

</application>
windowmode может быть также systemChrome.
Все просто и ясно.

И mxml-файла самого приложения ApolloHelloWorld.mxml:

<mx:application
xmlns:mx="http://www.adobe.com/2006/mxml"
layout="absolute"
xmlns:apollo="http://www.abode.com/2006/apollo">
<mx:style>
Application
{
background-color:"";
background-image:"";
}
</mx:style>
<apollo:applicationwindow
title="Hello World" layout="absolute"
right="5" left="0" top="0" bottom="5">
<mx:label text="Hello World"
horizontalcenter="0"
verticalcenter="0">
</mx:label>
</apollo:applicationwindow>
</mx:application>
Тоже ничего сложного.

среда, октября 25, 2006

Как прилепить ApplicationControlBar к низу приложения

Для этого Andrew Trice расширил класс mx.core.Application и создал компонент BottomDockApplication.
Посмотреть
Исходник
Скачать

вторник, октября 24, 2006

Открыта вики по RadRails

Вики по RadRails. Правда статья там пока одна - как установить RadRails. Написано там "немало":

1) Скачать eclipse.

2) Запустить и перейти в Help | Software Updates | Find and Install | Search for New Features

3) Добавить следующие сайты:
  • RDT: http://updatesite.rubypeople.org/release
  • RadRails: http://radrails.sourceforge.net/update
  • Subclipse (не обязательно): http://subclipse.tigris.org/update_1.0.x

И поискать обновления.

Динамическая загрузка шрифтов

Шигеру Накагаки выложил несколько примеров (1, 2) использования встроенных шрифтов, а также пример динамической подгрузки шрифтов из внешнего swf файла.
Данная тема также рассмотрена в вики.

понедельник, октября 23, 2006

DataGrid с фильтрацией

Деррик Григг создал маленькую, но нужную вещицу - DataGrid c возможностью фильтрации.

Стеклянный DataGrid

Если добавить прозрачность к свойствам headerColors, selectionColor и rollOverColor, то получился стеклянный DataGrid.
Исходники по правому клику.

среда, октября 18, 2006

Выложены пдфы с AS3 API и Flex 2 Framework API

AS3 API (2,3 Мб)
Flex 2 Framework API (6 Мб)

Изменение стиля разделителя в заголовке mx:DataGrid

Этот вопрос задавался много раз:
Как изменить или избавится от вертикальных линий в заголовке mx:DataGrid?
Вот простой ответ.

понедельник, октября 16, 2006

Новая статья от Derek Wischusen

Derek Wischusen разместил на Adobe Flex Developer Center новую статью об интеграции Flex2 и RoR. Я в свою очередь выкладываю ее на русском. Кстати, я для создания Rails приложения рассматривается Radrails. Почитать можно здесь, pdf качнуть отсюда.

воскресенье, октября 15, 2006

Чат Flex2/Red5

Ренон Эриксон разработал Flex2/Red5 чат. Пока пример не полностью функционален. Автор еще не установил Red5 на сервер. Но в ближайщем будущем он обещает это сделать и поделиться возникшими проблемами при установке. А сперва он предлагает ознакомится с исходным кодом.

среда, октября 11, 2006

Новая статья "Использование текстовых виджетов"

В вики добавлена новая глава "Использование текстовых виджетов", в которой представлен обзор использования следующих виджетов:
а также правила использования простого и HTML форматированного текста во Flex-приложениях.

вторник, октября 10, 2006

DatGrid: меняем фоновый цвет ряда

Чтобы изменить фоновый цвет ряда необходимо:

1. Создайте новый класс, расширяющий mx.controls.DataGrid. Это может быть как MXML, так и ActionScript файл.
2. Переопределите метод drawRowBackground:
override protected function drawRowBackground
(s:Sprite, rowIndex:int, y:Number, height:Number,
color:uint, dataIndex:int):void
{
// изменяем цвет
color = 0xFF0000;
// вызываем метод родителя
super.drawRowBackground(s,rowIndex,y,
height,color,dataIndex);
}

3. Можете пользоваться.

Внутри drawRowBackground можно тестировать данные. Аргумент dataIndex может быть использован для поиска элемента в dataProvider, соответствующего этому ряду. Например, если необходимо выделить зеленым все ряды с данными больше 1000:

var item:Object = (dataProvider as ArrayCollection).getItemAt(dataIndex);
if( item.quantity > 1000 ) color = 0x00FF00;


Все просто.

Взято у Пента.

понедельник, октября 09, 2006

Поддержка полноэкранного режима плеера в браузере

В обновленном Flash плеере появилась возможность перехода в полноэкранный режим прямо в браузере. Раньше такая возможность была только в stand-alone плеере, projector-файлах и хаках в эксплоэре. Теперь же можно обновить плеер и несколько файлов и спокойно пользоваться этой возможностью (правда с некоторыми ограничениями). Вот перевод статьи от Adobe на эту тему.

четверг, октября 05, 2006

Использование swc во FlashDevelop-проектах

Для разрабоки Flex 2 приложений можно использовать бесплатный FlashDevelop. Конечно там нет многих возможностей Flex Builder, но
жить с ним можно:)
Так вот, чтобы заюзать swc-компоненты во FlashDevelop-проекте, необходимо добавить директиву компилятора типа в файл build.xml в блок compile:

<target name="compile">
<exec executable="${flex2.dir}/${compiler}">
<arg
line="-compiler.include-libraries
${source.dir}/your_file.swc">
...
</arg>
</exec>
</target>


В этом случае компонент your_file.swc находится в папке ${source.dir}.

вторник, октября 03, 2006

Анимированные чарты

Эли Гринфилд эксперементирует с анимированием диаграмм.

Прозрачные Flex-приложения

Майк Мореарти вспомнил про старый добрый wmode и замутил прозрачное приложение.
Чудес никаких - просто добавление в html-файл строки:

AC_FL_RunContent(
...,
"wmode", "transparent"
);

понедельник, октября 02, 2006

Учите Flash, Flex, Apollo, Actionscript 3 и WPF

Оригинал статьи Lee Brimelow

Последнее время я активно работаю с WPF и Flash. Flash давно является моей любимой платформой для создания интерактивности и анимации для веба. Вся шумиха от Microsoft и Adobe о WPF как о потенциальном убийце Flash так и останется шумихой. Пока эти два бегемота идут вместе во многих областях, Flash не должен беспокоится о конкуренции с WPF.

Основным моментом является то, что Flash и WPF - это удивительные инструменты для создания интерактивности и анимации. Но их конечные продукты сильно отличаются. WPF использует формат XBAP, который может быть прочитан IE. Вообще WPF заточен для создания богатых Windows приложений. Основываясь на своем опыте, могу сказать, что это платформа легка для изучения Flash разработчиками и дизайнерами. Комбинация C#/XAML в WPF похожа на связку Javascript/HTML, с которой знакомы многие веб-разработчики. WPF был разработан с целью достижения разделения визуального дизайна и данных(модели), что достаточно важно для современных приложений.

Причин того, что Flash не будет "убит" WPF, множество. Видео является той областью, где Flash явно доминирует над всеми. Никакая другая технология не может интегрировать видео и анимацию так легко, как это делает Flash. Также виновато само Flash сообщество, которое делает из мухи слона. Вот новости для всех: Microsoft - это не зло, а Adobe - не ваша добрая фея. Это просто компании, которые хотят заработать на вас деньги. То есть, судить технологии надо по их достоинствам, а не по тому, где они разработаны - в Редмонде или в Сан Хосе.

Итак, если Flash рулит в вебе, почему Flash разработчики и дизайнеры должны беспокоится о WPF? Ответ прост. Многие дизайн-студии уже получают тонны заказов на WPF проекты и сильно нуждаются в "полиглотах"-девелоперах. Мы уже завершили несколько проектов и ждем еще кучу. Итак, если вы хотите удержаться на плаву, расширять кругозор просто необходимо. Другой причиной изучения WPF является то, что он чертовски крут! Flash разработчики теперь имеют возможность создавать Windows приложения, которые содержат сложную анимацию и 3D. Поверьте мне, это не только круто, это еще и весело!

Хорошо, вы вняли моему совету и начали изучать WPF, который в связке с Flash-навыками, станет мощной силой в создании интерактивного контента как для веба, так и для десктопа. Но, подождите. Как же насчет Flex и Apollo? Когда вы подумали, что вся индустрия у вас на ладони, эти двое стучатся в дверь. Мой совет - учите и их! Flex - это технология, похожая по структуре на WPF, поэтому код можно практически легко портировать туда-сюда. Flex использует MXML в качестве языка размети, как XAML для WPF. Вместо C# для скриптинга используется Actionscript 3. Кстати, учите и его тоже. Но если вы знаете WPF или Flex, изучение другого является лишь проблемой синтаксиса. Отлично, теперь у вас три интеактивные технологии за плечами. В ваше резюме добавилась еще одна страница, но мы еще не закончили.

Apollo - это попытка Adobe войти на рынок десктопных приложений. С его помощью Flash разработчики могут создавать standalone приложения для Windows, Mac и Linux. Хотя релиза еще не было, я видел несколько демок и выглядят они впечатляюще. Теперь у вас есть полный контроль над приложениями, можно использовать такие фишки как прозрачные и округлые окна. Но если вы использовали Zinc до этого, вы скажете "Нах надо?". Поверьте на слово - надо! Основной проверкой будет проверка на кроссплатформенность этих приложений и насколько будет глубоким доступ к операционной системе. Apollo позиционируется как платформа для RIA на десктопе. Он не собирается замещать WPF с его огромной .NET библиотекой, которую никогда не достигнет Apollo.

Итак, хотите быть интерактивным крутнем, учите Flash, Flex, Apollo, Actionscript 3 и WPF.

четверг, сентября 28, 2006

среда, сентября 27, 2006

Image Converter на RoR и Flex

Derek Wischusen продолжает эксперименты. Теперь он создал jpg/png/bmb/gif/pdf/eps конвертер изображений. Конвертация происходит с помощью Rmagick. Из остального функционала:
  • загрузка изображений
  • zip-архивирование
  • сохранение изображений

Компонент Closeable Tab Navigator

Darron Schall создал компонент Closeable Tab Navigator. С помощью компонента можно создавать закладки (или табы) с различными иконками и возможностью закрытия.



Исходников не будет, так что делаем сами:)

понедельник, сентября 25, 2006

Трюки и приемы использования BitmapData во Flex 2

Andrew Trice делится опытом использования BitmapData во Flex 2. С его легкой руки теперь возможны следующие фичи:
  • сохранение изображения из приложения (над этим он сейчас трудится)
  • создания скриншотов текущего состояния приложения
  • зеркальное отображения поведения компонентов (есть эксперимент и с видео)
  • различные эффекты с изображениями
Скачать и почитать пдф можно здесь.

четверг, сентября 21, 2006

Flex-интерфейс для блога

Раймонд Камден создал интерфейс на Flex для своего блога.
Функционал:
  • поиск
  • выбор по категориям
  • выбор по календарю
  • добавление комментариев

среда, сентября 20, 2006

Компонент Calculator

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

Update: Кстати, есть большой урок от Adobe по созданию калькулятора, правда для 1.5.

вторник, сентября 19, 2006

Yahoo! Maps на Flex 2 / AS3

Реализация Yahoo! Maps на Flex 2. Исходники в ассортименте.

Обновления у вики

На неделе были размещены следующие статьи во FlexWiki:
Все это относится к созданию интерфейсов во Flex.
Готовится большая статья по виджетам.

четверг, сентября 14, 2006

Компонент SelfLabelingTextInput

NJ анонсирует компонент SelfLabelingTextInput - поля формы теперь говорят сами за себя. Просто пишем
<controls:selflabelingtextinput x="10" y="10" width="238"
label="Name">
</controls:selflabelingtextinput>

и в поле формы написано Name - всем понятно - сюда пишем имя :). При получении фокуса подпись исчезает.



Исходники в ассортименте.

вторник, сентября 12, 2006

Тюнингованный Rich Text Editor для Flex 2

Питер Бейрд из Adobe Consulting немного усовершенствовал компонент Rich Text Editor - он сделал панель с настройками редактирования текста выезжающей. Мило.

Использование JSON и Flex 2

Перевел статью Майка Чемберза про использование JSON данных во flex-приложении. Скачать пфд можно здесь.

понедельник, сентября 11, 2006

Редактируем картинки во Flex - сохраняем с помощью rails

Derek Wischusen перенес с Java на RoR пример FlexPaint и добавил в RubyOnRailsRIASDKbyAdobe. Кто не в курсе, это редактирование изображений и их сохранение в формате Jpeg ( Tinic.)

пятница, сентября 08, 2006

Укрощаем XML - получаем соседский узел

Одним из преимуществ XML является представление информации с помощью родительско-дочерних отношений.Это облегчает парсинг и понимание структуры.Однако, есть некоторые XML форматы (такие как формат play-листа Apple), представляют информацию с помощью соседских отношений на одном уровне.

Например, одним способом представления пары имя / значение является следующая форма:

<Artist>Interpol</Artist>

А формат Apple делает это с помощью структуры ключ / значение:

<key>Artist</key><string>Interpol</string>

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

Чтобы распарсить эту строку, необходимо сперва извлечь узел key, соответствующий нужному значению, а затем получить следующий узел, содержащий это значение.

Вот пример:

package {
import flash.display.Sprite;

public class XMLTest extends Sprite
{
public function XMLTest()
{
var xml:XML =
<xml>
<songs>
<song>
<key>Artist</key><string>Interpol</string>
<key>Track Number</key><int>7</int>
</song>
<song>
<key>Artist</key><string>Bloc Party</string>
<key>Track Number</key><int>3</int>
</song>
</songs>
</xml>

var temp:XML;
var artistName:String;

//проходим через songs
for each (var song:XML in xml.songs.song)
{
// получаем узел key, имеющий значение Artist,
// в первой song
temp = song.key.(text() == "Artist")[0];

//получаем следующий узел
//(т.е. соседский узел узла key).
//Сохраняем его как Stirng
artistName =
String(temp.parent().children()[temp.childIndex() + 1]);

trace(artistName);
}
}
}
}


Важной частью примера является строка:

temp.parent().children()[temp.childIndex() + 1]

Здесь извлекается соседский узел узла temp. Для получения предыдущего узла, вычтите 1:

temp.parent().children()[temp.childIndex() - 1]

Данный метод добавлен Майком Чамберсом в класс XMLUtil в corelib.

Оригинал поста

среда, сентября 06, 2006

Альтернативная IDE для RoR

Я уже рассматривал одну из самых популярных IDE для разработки rails приложений - Radrails. Сейчас попалась в руки еще одна бесплатная вещица - RoRed. Правда только для Windows платформы.
Главное преимущество - это вес - всего 900Кб.
Основные фичи:
  • Таб-навигация между открытыми файлами
  • Навигация по коду с помощью Ctrl+клик
  • Переключение назад/вперед между открытыми файлами
  • Использование закладок, гиперзакладок, макросов
  • Подсветка синтаксиса для .rb .rhtml файлов (черный фон - белые буквы - круто)
  • Запуск сервера, консоли, командной строки в одно нажатие
В будущем планируют добавить автокомплит по шаблонам.
В общем, пробуйте, выбор за вами.

понедельник, сентября 04, 2006

Затемнение ala Windows XP (Flex 2)

Alistair McLeod любит Windows XP, а особенно выключать его и любоваться эффектом затемнения всего, что находится за модальным окном. В связи с этим, он решил реализовать этот эффект во Flex 2.

Примеры данного эффекта можно посмотреть в оригинальном посте автора, там же можно загрузить библиотеку данного эффекта и SWC-файл. Просто нажмите кнопку и фон за модальным окном померкнет.

Работает это так. Класс PopUpManager имеет недокументированное внутреннее свойтсво modalWindowClass. Если задать в качестве значения этого свойства какой-нибудь класс, то его экземпляр будет создан при создании модального (только модального!) окна. Экземпляр появляется позади модального окна и изменяет внешний вид приложения.

Alistair создал класс SaturationFadePopUpBlocker, который использует его новый эффект SaturationFade. SaturationFade изменяет насыщенность компонента, который является целью эффекта.

Чтобы добавить данный эффект в приложение, необходимо добавить в обработчик creationComplete строку:

PopUpManager.mx_internal::modalWindowClass = 
SaturationFadePopUpBlocker;


Вот переделанный пример из документации с использованием данного эффекта:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
creationComplete="doInit();">
<mx:Script>
<![CDATA[
import mx.managers.PopUpManager;
import mx.core.IFlexDisplayObject;
import com.adobe.effects.*;
private function doInit():void {
PopUpManager.mx_internal::modalWindowClass =
SaturationFadePopUpBlocker;
}
private function showLogin():void {
var helpWindow:IFlexDisplayObject =
PopUpManager.createPopUp(this, MyLoginForm, true);
}
]]>
</mx:Script>

<mx:VBox>
<mx:Button click="showLogin();" label="Login"/>

<mx:Image source="img/sunset.jpg" />
</mx:VBox>

</mx:Application>

Необходимо еще само модальное окно, но его можно взять из хелпа. Изменений никаких в нем нет.

Естественно, все классы или swc файлы должны быть импортированны.
Эффект можно настроить для любого уровня насыщенности. Эффект SaturationFade можно использовать отдельно. В следующем примере эффект проигрывается при нажатии на изображения. Насыщенность меняется с 1 до 0. При отпускании эффект проигрывается в обратную сторону:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
xmlns:eff="com.adobe.effects.*" >
<mx:Script>
<![CDATA[
import com.adobe.effects.SaturationFade;
]]>
</mx:Script>
<eff:SaturationFade id="fadeToGray" duration="500"
saturationFrom="1" saturationTo="0" />
<eff:SaturationFade id="fadeBack" duration="500"
saturationFrom="0" saturationTo="1" />
<mx:Image mouseDownEffect="fadeToGray" mouseUpEffect="fadeBack"
source="sunset.jpg" />
</mx:Application>

Кого интересует реализация данного эффекта во Flash - добро пожаловать.

воскресенье, сентября 03, 2006

Исходники и библиотеки от Quietlyscheming

Эли Гринфилд (Ely Greenfield) выложил архив (11 Мб) исходников своих проектов (11) и библиотек, обновленных до версии Flex 2 / Flash Player9. Качайте, а я пойду, добавлю в вики.