RIA crumbs.

Blog about RIA development. ActionScript, JavaScript and more.

Archive for the ‘Flex’ tag

Встречаем новинку Mozilla Prism.

5 comments

 

Лого

Mike Chambers написал о том, что Mozilla запускает новый проект – Mozilla Prism. Майка они немного разозлили :) , по-моему тем, что сравнили AIR с Silverlight и т.п.

Mozilla Prism – это идея десктоп рантайма на базе Firefox, которая даст возможность запускать веб приложения на десктопе (свойства браузера ( forward, back и тп ) будут отключены).

По большему счету, Mozilla Prism похожа на AIR, хотя есть несколько отличий. Во-первых, Prism на данный момент не имеет механизма работы в офф-лайн режиме, но это есть в планах разработки. Рассчитывают на на функционал из Google Gears, так как Mozilla тесно сотрудничает с Google. Во-вторых, Mozilla Prism не будет позволять работать с локальными данными (пока такое не заявлено). Это не очень комфортно, так как придётся закачивать файлы на сервер, а потом измеренными возвращать обратно (Adobe AIR в этом плане очень сильно выигрывает, так как даёт возможность работать с локальными файлами напрямую).

Перейдём к схожим вещам между Adobe AIR и Mozilla Prism. Первое, приложения в Mozilla Prism как и в Adobe AIR не имеют функций присущих браузеру (forward, back, bookmarks и тп.), несмотря на то, что они базируются на Mozilla Firefox. Второе, реализована поддержка taskbar и systray.

Преимущество, которым обладает Mozilla Prism, в том, что приложения могут интегрироваться в Firefox (расчет на 30% пользователей Интернета). Дружба с Google может помочь в продвижении технологии путём использования её в Googl’овских проектах, например, на GMail. Но у AIR есть уже довольно большая аудитория, так как очень много Интернет пользователей имеют Flash Player на своих компьютерах. Так что будем наблюдать, как Mozilla будет распространять/продвигать Prism рантайм.

Разработчикам должно понравится то, что Google Gears, используемое в Mozilla Prism, и Adobe AIR используют SQLLite, и API для работы с базами данных будет одинаковым. Также Adobe отдал на растерзание Мозилле Tamarin, так что можно предположить, что девелопмент на Prism и Flex AIR будет похожим.

Как по мне, главное – это то, что наличие конкуренции не даёт людям и технологиям застаиваться, а наоборот, подстёгивает к развитию и совершенству. Или рано или поздно они все объединятся :) , хотя MS вряд ли пойдёт на это.

Немного картинок об Mozilla Prism:

Сравнительная таблица (Будущее VS Настоящее)


Prism в действии :)

ps. скоро я обновлю скин блогу, и можно будет размещать нормальные по размеру картинки :)

Written by reijii

October 28th, 2007 at 12:06 am

Немного знаний с Flex Boot Camp.

leave a comment

Ely Greenfield автор блога Quietly Scheming, опубликовал несколько примеров со своей презентации на MAX Barcelona для Flex Boot Camp.

Сделаю краткий перевод, советую почитать более полный текст у автора:

Пример 1: Создаем свой компонент

Пример об основах создания своих виджетов: класса, графика, под компоненты, события, размеры, отрисовка и т.п.

Пример 2: Что есть потомок MXML компонента

Пример о том как определить потомков для своего MXML компонента.

Пример 3: Мета программирование на AS и кастомными мета данными.

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

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

Written by reijii

October 25th, 2007 at 12:00 pm

Posted in Flex

Tagged with , , , , ,

Бесплатный Flex Builder для студентов.

2 comments

Adobe сообщила о том, что Adobe Flex Builder 2 будет бесплатен для студентов и образовательным учреждениям. В ноябре они обещают выложить его доступным на скачку.

Полный текст новости можно почитать на Yahoo News или у самого Adobe.

Так же советуют интересующимся в обучении игре на бубне и Adobe Flex присоединятся к официальной группе Adobe Flex. Группа размещена на Facebook, так что прийдется регистрироватся там.

Written by reijii

October 25th, 2007 at 11:36 am

Posted in Flex

Tagged with , , , ,

Тонкости работы с Alert под IE и FF.

one comment

Недавно наткнулся на довольно интересный баг с виджетом Alert. Баг заключается в том, что если мы используем в Alert кнопки, к примеру YES и NO, и вызываем его по старинке:
[code lang="javascript"]
Alert.show( "Some text", "Some title", alertHandler );
[/code]
то все как бы работает. Но в FF у нас все отрабатывает отлично, и мы радостно продолжаем дальше работать, а в IE 6 ( дома нет IE 7, поэтому пишу про 6) перед появлением нашего Alert’a мы наблюдаем ошибку:

TypeError: Error #2007: Parameter source must be non-null.
at flash.accessibility::Accessibility$/sendEvent()
at mx.accessibility::AlertAccImpl/mx.accessibility:AlertAccImpl:
:eventHandler()
at flash.events::EventDispatcher/flash.events:EventDispatcher:
:dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at mx.core::UIComponent/dispatchEvent()
at mx.core::UIComponent/set initialized()
at mx.managers::LayoutManager/::doPhasedInstantiation()
at Function/http://adobe.com/AS3/2006/builtin::apply()
at mx.core::UIComponent/::callLaterDispatcher2()
at mx.core::UIComponent/::callLaterDispatcher()

Разглядев в дебагере, где у нас нашлись грабли, видим, что Alert.defaultButton = null. Первая мысль, которая у меня появилась: “А причем тут IE?”; в результате устранения граблей мысль перешла в следующую: “И куда смотрит FF?”.
Суть проблемы в том, что по умолчанию Alert.defaultButton равен 0×0004 ( то есть кнопка OK ), которой в нашем случае нет и в проекте. Вызвав наш Alert с указанием в качестве кнопи по умолчанию одной из существущих у нас, к примеру YES:
[code lang="javascript"]
Alert.show( "Some text", "Some title", alertHandler, null, 0x0001 );
[/code]
всё начинает отлично работать и в IE и в FF.

Если кто знает ответ на то, почему FF “забил” на null, пожалуйста, поделитесь знанием.

UPD: Как по мне, то и Adobe не очень правы, можно было бы ставить по умолчанию не кноку OK, а первую копку в массиве кнопок который есть в Alert.

Written by reijii

October 24th, 2007 at 1:03 am

Posted in Flex,UI

Tagged with , , ,

Новые обучающие статьи и видео уроки по AIR.

2 comments

Mike Chambers собрал массу полезных ссылок с интересными статьями и видео демками связанных с AIR.

Вот некоторые статьи которые могут быть полезны:

ps. тоже решил поучавствовать в Blogowar :) 308d5a602fdeafba6d72b44913b17ba0

Written by reijii

October 19th, 2007 at 12:27 pm

Posted in AIR,Flex

Tagged with , , , , ,

Поиск описаний ошибок.

5 comments

Набрел тут на одно замечательное Flex приложение от автора Judah Frangipane, за что ему от меня респект.

Приложение приятно облегчает жизнь тем кто хочет узнать о том куда его послали, введя код ошибки :) Так же есть ссылки на Error Wiki, Runtime Errors и Compiler Errors. Пользуйтесь на здоровье.

Written by reijii

October 16th, 2007 at 5:01 pm

Posted in AIR,Flex

Tagged with , , , , ,

Делаем процесс “скинования” проще. [Часть 2]

2 comments

Продолжаю обзор Flex Skin Design Extension, на этот раз буду повествовать об extension под Adobe Photosop CS3. Часть первая, об extension в целом и его версии под Adobe Flash CS3, находится тут.

Flex Skin Design Extension под Photoshop представляет собой набор PSD шаблонов и два скрипта (экспорт скина и мастер создания скина).

Установка крайне простая, копируем содержимое архива в папку “\Program Files\Adobe\Adobe Photoshop CS3\Presets“. Теперь можно запускать Photoshop и начинать зверский акт вандализма над стандартными скинами :)

Запускаем Photoshop и запускаем мастер создания скина (File -> Scripts -> New Flex Skin…). Первое отличие от extension под Flash – это наличие выбора создания скина для нескольких компонент или для одного выбранного компонента. При выборе опции создания скина для единичного компонента активируется возможность выбрать диапазон применимости скина (для всех виджетов этого типа в приложении или только для тех, у кого заданный styleName ;) ).

PS - New Flex Skin

Рассмотрим создание скина для кнопки, у которой styleName=”customButton”. После выбора нужных значений и ввода styleName в мастере создание скина жмем Ок и получаем новый документ с импортированными в него заготовками для состояний кнопок (названия слоев и папок заданы в виде Button_customButton_overSkin и т.д., по состояниям виджета), а также хитрая папка с фоновым декором и пояснениями к шаблону (ее нужно скрывать перед экспортом скина, она так и называется – “_HIDE BEFORE EXPORTING”, но об этом потом).

PS - New Flex Skin Edit

После того, как вдоволь поиздевались над скином, прячем папку с названием _HIDE BEFORE EXPORTING и запускаем скрипт экспорта (File -> Scripts -> Export Flex Skins…). Скрипт попросит вас указать, куда будем создавать скины, и после нажатия OK начинаются танцы с бубнами, т.е. сохранение скина. (Фотошоп желательно оставить в покое, так как скрипт устраивает всяческие махинации с создаванием документов и т.д.)

После того, как скрипт закончит злодеяния, заходим в выбранный каталог для экспорта и смотрим, что создалось. А создалось, вопреки ожиданиям на чудо, css или что-то в этом духе – папка assets с четырьмя PNG-24 файлами. Теперь настал час “Ч” – импортировать весь этот artwork в Flex приложение.

Запускаем импорт нашего скина (File -> Import -> Skin Artwork…). Выбираем нашу папку со скином, в качестве значения для поля Folder or Bitmaps, и проект, внешний вид которого мы хотим изменить (также можно выбрать папку, куда все будет свалено, и название CSS файла; по умолчанию стоят названия assets). Next. Выведется список из доступных PNG, в котором можем выбрать, что будет импортироваться, а что – нет. Дополнительно в списке указывается название состояния виджета, на которое будет влиять PNG.

FX - Widget states skin selection

Finish. В папке проекта создается каталог assets, в который скопировались картинки, и в корне создался assets.css, в котором прописан стиль для нашей кнопки, а также в main MXML файл подключили наш CSS.

Fin.

Впечатления: все хорошо, но:

  • В версии для Flash не хватает мультивыбора компонент и указания styleName для единичного компонента, и довольно грязный импорт во Flex: помимо скина там в списке еще масса всякого хлама; хорошо, что все, что относится к скину, выбрано по умолчанию, а остальное отключено;
  • В версии для Photoshop не очень удобно редактировать скины, особенно полупрозрачные градиентные заливки;
  • В версии для Photoshop есть один большой минус: дизайнеру нельзя задать параметры для Scale-9 (это можно будет сделать только в коде, то есть подправить ручками CSS) и результат растровый;

Вроде все перечислил. Если что забыл, пишите, обновлю пост.

Written by reijii

October 12th, 2007 at 5:48 pm

Posted in Flex,UI

Tagged with , , , , , , ,

Cairngorm WYSIWYG редактор.

2 comments

Появился ресурс, который будет полезен для фанатов и начинающий путешественников по тропам Cairngorm. Cairngorm Creator, пока правда Beta, от Tyler Beck, помогает облегчить жизнь, путем визуального создания структуры, или ее части вашего приложения, основанного на Cairnrogm.

Заявленные фишки:

  • Настраиваемые имена пакетов;
  • Настраиваемые имена папок;
  • Настраиваемые build файлы;
  • Сохранение и загрузка структур (XML);
  • Редактируемый XML;
  • Превью классов / файлов, которые будут генерироватся;
  • Возможность скачать все содеянное в zip;

 

Cairngorm Creator - File Preview Cairngorm Creator - Start

Written by reijii

October 11th, 2007 at 12:09 pm

Posted in Flex

Tagged with , , , , ,

Условная компиляция в Flex 3 beta 2 ‘Moxie’

leave a comment

Adobe Flex Doc Team, заявляет о том, что Moxie поддерживает условную компиляцию. Которая позволяет включать или исключать определенный код при компилировании приложения.

Советуют пользоваться этим в основном при дебаге или при финальном релизе. Для того чтобы не включать какие-то части кода, классы, или библиотеки, которые использовались при разработке, но не должны попасть в релиз.

Документация по этой полезной особенности не вошла в Beta 2, так что все дружно качаем PDF (40 kb).

Written by reijii

October 10th, 2007 at 6:47 pm

Posted in Flex

Tagged with , , , ,

Есть ли Zink на Mac’e ?

2 comments

Решил поделиться рецептом для осуществления копирования большого количества файлов в связке Flex + MDM Zink под Mac OS.

Проблема с копированием большого количества файлов, используя MDM Zink API для работы с файловой системой, скажем, с CD на винт, и расфасовке их по папкам под Mac OS заключается в том, что MDM Zink Flex projector просто-напросто переставал копировать, не выдавая при этом никаких признаков того, что процесс копирования умер и ждать собственно нечего, плюс ко всем этим прелестям он копирует довольно долго даже сравнительно не большие файлы до 100 kb.

Служба поддержки у MDM Zink говорила в ответ на запрос, что, мол, таки да, но пока ничего поделать не будем.

Не помогало и разделение операций по формированию путей к файлам (откуда копируем и куда копируем), создавание структуры каталогов для копирования, реализация копирования файлов поштучно по таймеру или по событию от API. Удавалось лишь изредка увеличивать количество успешно скопированных файлов.

В результате всех этих неуспешных попыток настало время кардинальных методов; в начале пробовал реализовать копирование файлов посредством AppleScript (только для Mac OS), благо в API у MDM Zink заложена такая возможность. Но снова решение не совсем удалось, во-первых, из-за того, что AppleScript обладает не совсем привычным синтаксисом, и с первого раза не “раскуришь” все тонкости “языка яблок”, простенький пример, который считает количество файлов в папке “Applications”:

[code lang="applescript"]
tell application "Finder"
if folder "Applications" of startup disk exists then
return count files in folder "Applications" of startup disk
else
return 0
end if
end tell
[/code]

Да и не очень удобно было производить отладку, так как в начале приходилось писать код на Mac’e, в его чудном редакторе ScriptEditor, потом переносить в MDM Zink под Win, так как проект собирался на Flex + MDM Zink под Windows, где он не всегда компилировался. В итоге я не нашел консенсуса с “языком яблок” и принялся искать другое решение.

Финальная часть “марлезонского балета”: ситуация спасена благодаря тому, что MDM Zink API предусмотрел возможность работы с MacShell, он же bash. Посредством команд MacShell мы успешно копируем файлы.

[code lang="actionscript"]

// file это наш типизированный объект в котором идет нужая нам инфа
private function doCopy ( file:CopyTarget ) : void
{
// преобразовываем пути в макосъедобные, на случай если они у вас в win формате
var macFromPath : String = mdm.FileSystem.nativePathToUnixPath( file.copyFrom );
var macToPath : String = mdm.FileSystem.nativePathToUnixPath( file.copyTo );

// устраняем лишний слеш, если его нет, то устранять не нужно :)
macFromPath = macFromPath.slice( 0, macFromPath.length - 1 );
macToPath = macToPath.slice( 0, macToPath.length - 1 );

// оборачиваем все в кавычки "
macFromPath = '"' + macFromPath + '"';
macToPath = '"' + macToPath + '"';

// составляем shell команду
var shellScript : String = 'cp ' + macFromPath + ' ' + macToPath;

// запускаем, подчеркивания убрать поставил из-за того что WordPress отказывался сохранять пост
mdm_._Mac_Shell_._exec_( shellScript );

// тут вызов рекурсии по таймеру, чтобы дальше копировать и отображаем прогресс копирования
setTimeout( processCopyFiles, 600 );
}

[/code]

Итого, алгоритм действий, которые позволяют решить проблему с копированием большого количества файлов из MDM Zink под Mac OS:

  1. Подготавливаем заранее пути для создания каталога/ов и для копирования файлов (откуда и куда; путь, куда копировать, нужен еще для того, что иногда хочется файл переименовать). Времени много не отберёт, но разгрузит нагрузку под Mac OS и упростит создание дерева каталогов, во время подготовки путей для каталогов можно отсеять дубликаты.
  2. Создаём каталоги, это можно реализовывать через MDM Zink API, методом mdm.FileSystem.makeFolder();
  3. Копируем файлы поштучно, используя MacShell, с небольшой задержкой (я ставил 600 мс);
  4. Радуемся жизни.

Помимо всего, выигрышем в использовании MacShell является возможность радовать глаз пользователя такой замечательной вещью, как прогресс копирования файлов, чего никак нельзя сделать, если мы делаем какие-либо операции с файловой системой, используя MDM Zink API. Потому что он просто посылает Flex приложение в глубокий нокаут до завершения своих злодеяний, и на примере прогресса копирования счастливый пользователь увидит только состояние в 100%. Также мы легко можем сделать паузу/отмену копированию. В общем, сплошная радость.

Бонусный рецепт для тех, кто дочитал до конца :) . Рецепт, как закрыть ваше MDM Zink приложение, работающее под Mac OS, да еще и в fullscreen режиме. При попытке закрыть приложение путем MDM Zink API (mdm.Application.exit()), приложение бывает просто уходит в ступор и жалобно просит “force quit”, то есть “снять задачу”.

MDM Zink сапорт, когда-нибудь напишу про него отдельную статью, лаконично ответил: “А вы не юзайте fullscreen”.

Но выход есть, немного грубо, но работает, просто запускаем, через mdm.MacShell.exec(), чудную команду – “killall mdm-static”.

Fin.

На первый раз я думаю рецептов хватит, но если у кого есть альтернативные решения данных проблем, милости просим.

ps. сорри за битый пост, была проблема с wordpress и code snippet плагином, чтото не дает сохранить пост с кодом :(

Written by reijii

October 9th, 2007 at 10:43 pm