четверг, ноября 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 браузер, но вверху расположены ссылки на исходные файлы приложения. Некоторые элементы кода файлов подсвечены и при нажатии открывают подсказки. Приложение пока глючное, но автор обещает взяться за него серьезнее, если народ одобрит. А народ уже одобрил - это можно увидеть по комментам.