Flex и RIA блоги
2009-02-26 |
Пожалуйста, подтвердите свое участие во встрече UFUG в Харькове 28 февраля Около часа назад все зарегистрировавшиеся на встречу UFUG в Харькове 28 февраля в Харькове получили от Валерии Маллаевой письмо, которое она отправила каждому лично через систему сообщений сайта Adobe Groups. На почту вам должно прийти оповещение, и, скорее всего, текст в нем нечитаем из-за кодировки. Это проблема сервиса отправки оповещений, и в данный момент мы общаемся с разработчиками для ее устранения (система новая, баги есть, но есть и сильные стороны — мы упомянем их на встрече). А сейчас вы можете прочесть сообщение Валерии, кликнув по первой ссылке в пришедшем вам письме. Там вы найдете полезную информацию о встрече, проживании и т.п. Важно: подтвердите участие во встрече как можно скорее, очень желательно до 10 утра завтрашнего дня (27 февраля, пятница). Напишите также Валерии свои имя и фамилию, так как нам нужно составить список для проходной института ФТИНТ, в помещении которого будет проходить встреча. При себе нужно иметь документ с похожим ФИО. Итак, пожалуйста, напишите Валерии на гуглопочту mallayeva письмо с темой "UAFPUG - я буду", а в тело письма включите ваши имя и фамилию. Кстати, почему бы не добавить их в свой профиль на Adobe Groups? Если же вы еще и вовсе не зарегистрировались на встречу, то пока можно это сделать, просто оставьте комментарий на странице встречи и сразу же напишите Валерии письмо с подтверждением участия, именем, фамилией. А если вы по какой-то причине не можете зайти на сайт — все равно напишите Валерии, этого будет достаточно. Кстати, Алексей Гончаренко опубликовал краткий отчет о встрече RAFPUG в Москве 8 февраля. |
Как обеспечить офф-лайновую работу веб-приложения? Иными словами, как хранить данные веб-приложения локально? Если вы делаете Flash / Flex / AIR, то вопросов здесь нет. Особенно, если использовать CRUD-БД bzoo, позволяющую организовать целую локальную базу данных для Flash. А если вы делаете большое приложение на JavaScript? Может быть, можно как-то приспособить флэш для хранения этих данных? А если у клиента нет Flash или он отключен из-за рекламы, но браузер поддерживает свое собственное хранилище (которое у всех браузеров свое, лучшее и неповторимое)? Очевидно, такие размышления привели автора библиотеки PersistJS Пола Дункана к ее созданию. Он решил использовать все возможности сразу: Persist-JS сама выбирает оптимальный вид хранилища, а вам, как пользолвателю ее API, об этом знать не обязательно. Но если нужно, вы можете вмешаться и, например, запретить использование определенных видов хранилищ. Так, сейчас она умеет хранить данные локально, используя одну из этих возможностей:
Но, может быть, PersistJS — не лучшее решение? Сегодня буду ее испытывать, а о результатах доложу. А вам — приходилось решать такие задачи? |
Как обеспечить офф-лайновую работу веб-приложения? Иными словами, как хранить данные веб-приложения локально? Если вы делаете Flash / Flex / AIR, то вопросов здесь нет. Особенно, если использовать CRUD-БД bzoo, позволяющую организовать целую локальную базу данных для Flash. А если вы делаете большое приложение на JavaScript? Может быть, можно как-то приспособить флэш для хранения этих данных? А если у клиента нет Flash или он отключен из-за рекламы, но браузер поддерживает свое собственное хранилище (которое у всех браузеров свое, лучшее и неповторимое)? Очевидно, такие размышления привели автора библиотеки PersistJS Пола Дункана к ее созданию. Он решил использовать все возможности сразу: Persist-JS сама выбирает оптимальный вид хранилища, а вам, как пользолвателю ее API, об этом знать не обязательно. Но если нужно, вы можете вмешаться и, например, запретить использование определенных видов хранилищ. Так, сейчас она умеет хранить данные локально, используя одну из этих возможностей:
Но, может быть, PersistJS — не лучшее решение? Сегодня буду ее испытывать, а о результатах доложу. А вам — приходилось решать такие задачи? |
2009-02-25 |
В цинковом гробу. Перетаскиваемые окошки Волею судеб, свалился мне проект такой. Есть несколько флэшек, так называемых виджетов, которые нужно одеть в Zinc так, чтобы еще и под Mac OSX работали. Во-первых, сразу зарекаюсь - Мак только для мак-девелоперов. Без меня. Такого количества проблем я уже давно не встречал. Возможно, основным виновником их является Zinc, который я смело могу назвать УСЛОВНО кросс-платформенным. Что сказать про Zinc 3.0? Под красивым брендовым дизайном, симпатичной оболочкой, красивыми заголовками скрывается довольно ограниченный функционал, убогая документация и море непонятностей, глюков и граблей. В данном посте, приведу один пример, как простая задача решается через "заднее место". Нужно, чтобы окошко нашего виджета перетаскивалось мышкой за специальную панельку. В документации, нам рассказывают про это так: Creating a Draggable Form. И что мы получаем? Да полный отстой. Мышь теряет окошко, потом, при наведении вдруг опять подхватывается, уже без нашего на то соизволения, в общем, ужас. Как это победить? Нужно повесить 3 обработчика мыши на панельку и сделать это вот как: dragNDropRenderer.buttonMode = true; dragNDropRenderer.useHandCursor = true; dragNDropRenderer.addEventListener(MouseEvent.ROLL_OVER, rollOverHandler); dragNDropRenderer.addEventListener(MouseEvent.ROLL_OUT, rollOutHandler); dragNDropRenderer.addEventListener(MouseEvent.MOUSE_UP, mouseUpHandler); . . . private function rollOverHandler(event:MouseEvent):void { mdm.Forms.getFormByName("MainForm").startDrag(); } private function rollOutHandler(event:MouseEvent):void { if (!event.buttonDown) { mdm.Forms.getFormByName("MainForm").stopDrag(); } } private function mouseUpHandler(event:MouseEvent):void { var renderer:DisplayObject = DisplayObject(event.target); if (!renderer.getBounds(renderer).contains(event.localX,event.localY)) mdm.Forms.getFormByName("MainForm").stopDrag(); } Конфликт событий мыши распространяется только на нажатие. Отпускание, вполне корректно работает. Кстати, при перетаскивании, обрабатывать нажатие вообще не советую - реакция совершенно непредсказуема. Таким образом, мы отрубаем перетаскивание пир отпускании кнопки, а при отведении мыши от панели проверяем, отпущена ли в данный момент кнопка. Если отпущена - останавливаем перетаскивание. Если нет - ни в коем случае этого не делаем - мышь потеряет окошко в момент таскания. Другие баги - почему под MacOX криво работает LocalConnection, или не открываются Zinc-ом новые окошки, и не распарсивается полученный с сервера XML, мне еще предстоит выяснить. Чувствую, это будут "приятные" сюрпризы. * * * В обработчик отпускания мыши добавлена проверка на отсутствие мыши в области панели. |
В цинковом гробу. Перетаскиваемые окошки Волею судеб, свалился мне проект такой. Есть несколько флэшек, так называемых виджетов, которые нужно одеть в Zinc так, чтобы еще и под Mac OSX работали. Во-первых, сразу зарекаюсь - Мак только для мак-девелоперов. Без меня. Такого количества проблем я уже давно не встречал. Возможно, основным виновником их является Zinc, который я смело могу назвать УСЛОВНО кросс-платформенным. Что сказать про Zinc 3.0? Под красивым брендовым дизайном, симпатичной оболочкой, красивыми заголовками скрывается довольно ограниченный функционал, убогая документация и море непонятностей, глюков и граблей. В данном посте, приведу один пример, как простая задача решается через "заднее место". Нужно, чтобы окошко нашего виджета перетаскивалось мышкой за специальную панельку. В документации, нам рассказывают про это так: Creating a Draggable Form. И что мы получаем? Да полный отстой. Мышь теряет окошко, потом, при наведении вдруг опять подхватывается, уже без нашего на то соизволения, в общем, ужас. Как это победить? Нужно повесить 3 обработчика мыши на панельку и сделать это вот как: dragNDropRenderer.buttonMode = true; dragNDropRenderer.useHandCursor = true; dragNDropRenderer.addEventListener(MouseEvent.ROLL_OVER, rollOverHandler); dragNDropRenderer.addEventListener(MouseEvent.ROLL_OUT, rollOutHandler); dragNDropRenderer.addEventListener(MouseEvent.MOUSE_UP, mouseUpHandler); . . . private function rollOverHandler(event:MouseEvent):void { mdm.Forms.getFormByName("MainForm").startDrag(); } private function rollOutHandler(event:MouseEvent):void { if (!event.buttonDown) { mdm.Forms.getFormByName("MainForm").stopDrag(); } } private function mouseUpHandler(event:MouseEvent):void { var renderer:DisplayObject = DisplayObject(event.target); if (!renderer.getBounds(renderer).contains(event.localX,event.localY)) mdm.Forms.getFormByName("MainForm").stopDrag(); } Конфликт событий мыши распространяется только на нажатие. Отпускание, вполне корректно работает. Кстати, при перетаскивании, обрабатывать нажатие вообще не советую - реакция совершенно непредсказуема. Таким образом, мы отрубаем перетаскивание пир отпускании кнопки, а при отведении мыши от панели проверяем, отпущена ли в данный момент кнопка. Если отпущена - останавливаем перетаскивание. Если нет - ни в коем случае этого не делаем - мышь потеряет окошко в момент таскания. Другие баги - почему под MacOX криво работает LocalConnection, или не открываются Zinc-ом новые окошки, и не распарсивается полученный с сервера XML, мне еще предстоит выяснить. Чувствую, это будут "приятные" сюрпризы. * * * В обработчик отпускания мыши добавлена проверка на отсутствие мыши в области панели. * * * Продолаются жалобы. Под MACOX не удалось (под Windows всё Ок) передать на сервер запрос с GET-параметрами (URLRequest). Запрос проходит, параметры не передаются. Не имел возможности выяснить, виновен ли в этом Zinc или админы сервера. В итоге, стали передавать параметры через POST, что сразу дало положительный результат. * * * Прозрачность. Плашка прозрачностью 1% ложится поверх поверхности со сложным изображением сложной прозрачности. Окно приложения устанавливается прозрачным. И что вы думаете? Эта плашка видна. Она как бы добавляет прозрачности подлежащему изображению. То же самое можно сказать, если поверх ложится растр с прозрачностью. Прозрачная область растра становится видна. Выход - не допускать "недопрозрачностей", обтравливать растр во флэше. * * * Всё. Финиш. Zinc и MacOX - больше несовместимые понятия. Делаю полноэкранное приложение. В окне приложения, справа, где-то на 1/4 ширины, существует "мертвая" зона, в которой мышь перестает оказывать воздействие на интерактивные flash-элементы. Нет, нельзя сказать что совсем не оказывает. После 5-10 нажатий, кнопка срабатывает. Но это же бред. Элементраный пример - делаем во flash плашку размером с экран (1280x800), вставляем SWF в гроб, билдим и наблюдаем эту границу. Кошмар. Под Windows и под MacOX в Safari работает превосходно. Сделать многооконное приложение с Zinc также не получилось - опять же проблемы с мышью. Интерактив не откликается. |
BAFPUG March 2009 15 Марта в IBB Минск состоится тематическая встреча Belarusian Adobe Flash Platform User Group посвященная Flex фреймворкам. На встрече прозвучат следующие доклады: “PureMVC от теории к практике” - Валентин Железный Начало мероприятия в 14.00 Всем желающим просьба зарегистрироваться на сайте группы. |
BAFPUG March 2009 15 марта в IBB Минск состоится тематическая встреча Belarusian Adobe Flash Platform User Group, посвященная Flex фреймворкам. На встрече прозвучат следующие доклады:
Начало мероприятия в 14.00. Желающих просим зарегистрироваться на сайте группы. |
Потерял работу? Получи Flex Buider 3 Вдобавок к бесплатному Flex Builder 3 Professional для студентов и работников образования (и здесь), теперь Flex Buider можно получить также, если вы потеряли работу. Для этого достаточно связаться с одним из трех людей, которых некоторые из нас уже знают: Михай, Том, Серж. За новость спасибо Андрею Панасу. А в эту субботу, 28 февраля, на встрече UFUG в Харькове кто-то написавших во Flex Cookbook получит Flex Buider 3 Professional, а кто-то — Adobe CS4. Немного попозже напишу об этом подробнее. |
Потерял работу? Получи Flex Buider 3 Вдобавок к бесплатному Flex Builder 3 Professional для студентов и работников образования (и здесь), теперь Flex Buider можно получить также, если вы потеряли работу. Для этого достаточно связаться с одним из трех людей, которых некоторые из нас уже знают: Михай, Том, Серж. За новость спасибо Андрею Панасу. А в эту субботу, 28 февраля, на встрече UFUG в Харькове кто-то из написавших во Flex Cookbook получит Flex Buider 3 Professional, а кто-то — Adobe CS4. Немного попозже напишу об этом подробнее. |
Вышел Adobe AIR 1.5.1 с новой полезной функцией Вышло обновление Adobe AIR 1.5.1. Кроме многочисленных исправлений ошибок, этот релиз включает также новую возможность, которую в своем блоге описывает Оливер Голдман, один из разработчиков этой платформы. Теперь приложение имеет возможность определить, каким образом оно было запущено: обычным образом или в процессе автозапуска. Это можно определить из свойства события Чтобы ваше приложение могло воспользоваться этой функциональнстью, нужно обновить версию в файле дескриптора: xmlns="http://ns.adobe.com/air/application/1.5.1" Доступен для скачивания обновленный Adobe AIR SDK и инструкция по его применению к существующей конфигурации Flex SDK, а также примечания к Adobe AIR 1.5.1. |
Вышел Adobe AIR 1.5.1 с новой полезной функцией Вышло обновление Adobe AIR 1.5.1. Кроме многочисленных исправлений ошибок, этот релиз включает также новую возможность, которую в своем блоге описывает Оливер Голдман, один из разработчиков этой платформы. Теперь приложение имеет возможность определить, каким образом оно было запущено: обычным образом или в процессе автозапуска. Это можно определить из свойства события Чтобы ваше приложение могло воспользоваться этой функциональнстью, нужно обновить версию в файле дескриптора: xmlns="http://ns.adobe.com/air/application/1.5.1" Доступен для скачивания обновленный Adobe AIR SDK и инструкция по его применению к существующей конфигурации Flex SDK, а также примечания к Adobe AIR 1.5.1. |
2009-02-24 |
Подсказки по отладке Javasript-кода в Firebug В лучшем когда-либо созданном отладчике JavaScript-кода Firebug есть несколько полезных функций, которые я постоянно использую и думаю, что они пригодятся многим, имеющим дело с отладкой кода в браузере:
Просьба к тем, кто это все уже знает: не бросайте в меня ботинком. |
Подсказки по отладке Javasript-кода в Firebug В лучшем когда-либо созданном отладчике JavaScript-кода Firebug есть несколько полезных функций, которые я постоянно использую и думаю, что они пригодятся многим, имеющим дело с отладкой кода в браузере:
Просьба к тем, кто это все уже знает: не бросайте в меня ботинком. |
Raven: бесплатный онлайновый векторный редактор от Aviary Aviary, ранее выпустившие онлайновые графический редактор Aviary Phoenix и генератор паттернов Aviary Peacock, выпустили онлайновый векторный редактор Raven. Если вам нужно сделать логотип, векторный клип-арт, дизайн футблоки — он справится. Демки и скринкаст можно увидеть в блоге Aviary. Примеры готовых работ — в галерее векторного редактора Raven. |
Raven: бесплатный онлайновый векторный редактор от Aviary Aviary, ранее выпустившие онлайновые графический редактор Aviary Phoenix и генератор паттернов Aviary Peacock, выпустили онлайновый векторный редактор Raven. Если вам нужно сделать логотип, векторный клип-арт, дизайн футблоки — он справится. Демки и скринкаст можно увидеть в блоге Aviary. Примеры готовых работ — в галерее векторного редактора Raven. |
2009-02-23 |
Закрываем И запускаем AIR-debugger с помощью Eclipse Monkey Про апгрейченый скрипт запуска AIR дебагера:
Правила применения: При выполнении скрипт, убивается процесс AIR дебагера и запускает процесс сборки и новый дебагер. |
Мультиматограф Ежегодный некоммерческий фестиваль компьютерного анимационного и видео-творчества «Мультиматограф». |
Мультиматограф Ежегодный некоммерческий фестиваль компьютерного анимационного и видео-творчества «Мультиматограф». |
Мультиматограф Ежегодный некоммерческий фестиваль компьютерного анимационного и видео-творчества «Мультиматограф». |
Примите мои поздравления В этот день хочу поделиться с вами воооот таким (ссылка далее через пять слов) эпизодом про то, как ребята пытаются влиться в нормальное мужское общество с помощью специального футбольного разговорника. Русский дубляж там сильно перекрывает оригинальный звук, по которому заметно, что манера плеваться словами у нормальных британских пацанчиков мало чем отличается от нашенских местных манер: харьковских, пермских, каких-то еще. Это легко услышать в оригинальном видео: прослушайте моменты 00:40 и 01:10 ок |
Примите мои поздравления В этот день хочу поделиться с вами воооот таким (ссылка далее через пять слов) эпизодом про то, как ребята пытаются влиться в нормальное мужское общество с помощью специального футбольного разговорника. Русский дубляж там сильно перекрывает оригинальный звук, по которому заметно, что манера плеваться словами у нормальных британских пацанчиков мало чем отличается от нашенских местных манер: харьковских, пермских, каких-то еще. Это легко услышать в оригинальном видео: прослушайте моменты 00:40 и 01:10 ок |
Примите мои поздравления В этот день хочу поделиться с вами воооот таким (ссылка далее через пять слов) эпизодом про то, как ребята пытаются влиться в нормальное мужское общество с помощью специального футбольного разговорника. Русский дубляж там сильно перекрывает оригинальный звук, по которому заметно, что манера плеваться словами у нормальных британских пацанчиков мало чем отличается от нашенских местных манер: харьковских, пермских, каких-то еще. Это легко услышать в оригинальном видео: прослушайте моменты 00:40 и 01:10 ок |
Звонки из Flash в Skype - реальность Проект flaphone уже позволял раньше звонить из flash по протоколу SIP на другие SIP-клиенты или в вообще на обычные телефонные номера с использованием провайдеров SIP-телефонии, теперь к этому добавилась возможность звонить из flaphone в Skype, причем с отличным качеством звука. Для того, чтобы позвонить пользователю skype нужно выбрать SIP-аккаунт "none(global)" в выпадающем списке наверху софтфона, а потом ввести номер в формате sip:skypeusername@skype - и нажать кнопку вызова, тот кому вы звоните увидит входящий звонок. Пока вся система находится на стадии бета-тестирования, поэтому любой фидбэк будет очень полезен. |
Звонки из Flash в Skype - реальность Проект flaphone уже позволял раньше звонить из flash по протоколу SIP на другие SIP-клиенты или в вообще на обычные телефонные номера с использованием провайдеров SIP-телефонии, теперь к этому добавилась возможность звонить из flaphone в Skype, причем с отличным качеством звука. Для того, чтобы позвонить пользователю skype нужно выбрать SIP-аккаунт "none(global)" в выпадающем списке наверху софтфона, а потом ввести номер в формате sip:skypeusername@skype - и нажать кнопку вызова, тот кому вы звоните увидит входящий звонок. Пока вся система находится на стадии бета-тестирования, поэтому любой фидбэк будет очень полезен. |
2009-02-22 |
Закрываем AIR-debugger с помощью Eclipse Monkey Flex Builder не умеет закрывать дебагер AIR приложений. Лично я все время забываю закрывать приложение и каждый раз при запуске получаю сообщение об ошибке. После чего приходится “искать” приложение и закрывать его. Отнимает время и иногда нервирует. Чтобы облегчить себе работу в закрытии приложения я написал небольшой Eclipse Monkey script:
он убивает запущенный процесс adl.exe(отладчик AIR) легким движением руки ) и экономит время. В идеале я хотел написать скрипт, который слушает событие эклипса о запуске дебагера, и автоматом дебагер, но не нашел как “достучатся” до дебагера. upd: чтобы запустить скрипт нужно создать в папке со скриптами(по умолчанию проект monkey папка scripts) js файл, например kill-adl.js в него вставить код. Запускаеться скрипт нажатием alt+d или выбором пункта из меню |
Закрываем AIR-debugger с помощью Eclipse Monkey Flex Builder не умеет закрывать дебагер AIR приложений. Лично я все время забываю закрывать приложение и каждый раз при запуске получаю сообщение об ошибке. После чего приходится “искать” приложение и закрывать его. Отнимает время и иногда нервирует. Чтобы облегчить себе работу в закрытии приложения я написал небольшой Eclipse Monkey script:
он убивает запущенный процесс adl.exe(отладчик AIR) легким движением руки ) и экономит время. В идеале я хотел написать скрипт, который слушает событие эклипса о запуске дебагера, и автоматом дебагер, но не нашел как “достучатся” до дебагера. upd: чтобы запустить скрипт нужно создать в папке со скриптами(по умолчанию проект monkey папка scripts) js файл, например kill-adl.js в него вставить код. Запускаеться скрипт нажатием alt+d или выбором пункта из меню |
2009-02-21 |
Adobe организует субботник 28 марта Adobe в Сиэтле организует субботник по правке багов во Flex SDK. Приглашаются все желающие. Можно еще участвовать через Connect, ссылку отправят всем зарегистрированным. Будут присутствовать разработчики из Adobe. В общем достаточно любопытное меропрятие. |
|
Adobe организует субботник 28 марта Adobe в Сиэтле организует субботник по правке багов во Flex SDK. Приглашаются все желающие. Можно еще участвовать через Connect, ссылку отправят всем зарегистрированным. Будут присутствовать разработчики из Adobe. В общем достаточно любопытное меропрятие. |
|