Flex и RIA блоги



2008-03-24

15:18:42, Graann's blog
Использование registerClassAlias для восстановления объектов определенного класса из SharedObject

Продолжу тему затронутую Александром Гаховым в статье “Клонирование объектов утилитой ObjectUtil.copy".
Здесь

я приведу пример использования registerClassAlias для восстановления объектов определенного класса из SharedObject. Суть проблемы заключалась в том, что помещенные в SharedObject экземпляры определенного класса при перезапуске возвращались, как экземпляры класса Object. Когда я столкнулась с этой проблемой, доступного для понимания примера мне нагуглить не удалось. Перед размещением же поста, я нашла вопрос по этой теме в ruFlex, однако приведенный там пример показался мне не вполне наглядным. Предлагаю вашему вниманию свой пример решения этой проблемы:

Code:

<mx:Application creationComplete="onCreationComplete()" xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"> 
<mx:Script> 
<![CDATA[ 
  import src.DataObject; 
  import flash.net.*; 
   
  private var so: SharedObject; 
  private var dataObject: DataObject; 
 
   
  private function onCreationComplete(): void 
  { 
    dataObject=new DataObject(); 
    registerClassAlias('src.DataObject', DataObject);     
    so = SharedObject.getLocal("test"); 
  } 
   
   
  private function dataObjectGeneration(): void 
  { 
    dataObject.generate(); 
    ta.htmlText+='GENERATION: '+dataObject.toString()+'\n'; 
  } 
   
  private function saveLocalData(): void 
  { 
    so.data.DataObject=dataObject; 
    so.flush(); 
    ta.htmlText+='SAVE: '+dataObject.toString()+'\n'; 
  } 
   
   
   
  private function loadLocalData(): void 
  { 
    so = SharedObject.getLocal('test'); 
    if(so.data.DataObject!=null) 
    { 
      dataObject=so.data.DataObject as DataObject; 
      ta.htmlText+='LOAD: '+dataObject.toString()+'\n'; 
    } else { 
      ta.htmlText+='LOAD: null\n'; 
    } 
  } 
   
]]> 
</mx:Script> 
<mx:Button x="193" y="27" label="save" id="save_" click="{saveLocalData()}"/> 
<mx:Button x="107" y="27" label="generate" id="generate" click="{dataObjectGeneration()}"/> 
<mx:Button x="49" y="27" label="load" id="load_" click="{loadLocalData()}"/> 
<mx:TextArea x="49" y="57" height="141" width="618" id="ta"/> 
</mx:Application> 

Собственно сам класс нашего объекта.

  1. ackage src
  2. {
  3.         import mx.formatters.DateFormatter;
  4.        
  5.         public class DataObject
  6.         {
  7.                 public var date: Date;
  8.                 public var random: String;
  9.                
  10.                 public function DataObject()
  11.                 {
  12.                        
  13.                 }
  14.                
  15.                 public function generate(): void
  16.                 {
  17.                         date=new Date();
  18.                         random=""+Math.random()*10000;
  19.                 }
  20.                
  21.                 public function toString():String
  22.                 {
  23.                         var df: DateFormatter=new DateFormatter();
  24.                         df.formatString="JJ:NN:SS DD/MM/YYYY";
  25.                         return "\n  date: "+df.format(date)+"\n  random: "+random;
  26.                 }
  27.         }
  28. }

Прошу прощения за подобное отображение mxml-ины. Если пример вас заинтересует скопируйте его. :)


14:37:16, Flash-ripper.com
Встречайте блог о флэш-анимации от Лерики

Наконец-то. Кто-то будет писать не только о бесконечных дебагах, К-мерных движках и глобальнотехнологических мегастратегиях!

Валерия "Lerika" Маллаева из Донецка (на UAPFUG-1 я имел радость познакомиться с ней и еще несколькими разработчиками из того же города) открыла блог про анимацию во Flash. Вот о чем она пишет: "movie clip vs graphic", "об исходниках", "маленькое кино в большом городе - 2008".

Кстати, а что мы вообще знаем об анимационных ресурсах и форумах рунета? Есть что-то новое или хорошо упрятанное старое? А то я как-то совсем начал упускать из виду эту фундаменальную сторону флэша.


2008-03-21

23:42:54, Flash-ripper.com
Одна из моих любимых FPUG-фоток

Первая встреча UAFPUG прошла у меня дома, в Харькове:


Рис. 1.
R00Z, NoubaSE и Shagrat. Утро, неспешная беседа, чай "Maitre".
16 марта 2008 г., Харьков

Хороших выходных всем :)


15:29:45, Flash-ripper.com
Сервiс "Хочу почути доповідь" на сайті UAFPUG

Друзі, зверніть увагу на сервіс "Хочу почути доповідь" на сайті UAFPUG. За його допомогою ви можете зробити запит на доповідь — це допоможе організаторам та доповідачам вибрати для наступної зустрічі найкращі доповіді.

Список вже запропонованих доповідей можна побачити на тому ж сайті — дивіться в правому нижньому куточку, щоб не створювати клонів.

А доповідачам, які вже знають, про що вони хочуть розказати, нагадую, що працює відповідний сервіс для доповідачів. Ви можете запропонувати доповідь на добре відому вам тему, а інші проголосують за неї, тим самим давши вам знати, наскільки дана тема цікава для слухачів. Дивіться також увесь список пропозицій від доповідачів.


2008-03-20

18:50:00, Flash-разработка
XMLList и его длина. AS3
Ужасные грабли. Для того, чтобы получить длину XMLList мы по привычке пишем xml_list.length;. Но это неверно, так как length является МЕТОДОМ!
Это удивительная и ужасная непонятность, создающая кучу проблем. Особенно, когда идет работа с объектами, генерируемыми байндингами и другими неявными ссылками, где length не подставляется автоматом.
Итак, обращаем особое внимание:
Не xml_list.length;, а xml_list.length();
То же самое относится и к классу XML.

15:58:00, Flex 2 & Co
Повышение производительности AS3 приложений
Здесь представлены некоторые приемы, которые помогут повысить производительность наших приложений:

1) Создавайте константы для часто используемых объектов типа new Point(0,0) или new Rectangle(0,0,320,240):

//вызов 100000 раз: 75мс
new Point(0,0);
//или
private static const POINT:Point = new Point(0,0);
//8мс
POINT;


Быстрее на 838%

2) Сократите указания на статические члены классов. Вместо этого старайтесь использовать переменные пакета:
//15мс
SomeClass.somevar;
package somepackage{
public const somevar:int;
}
//8мс
somevar;

на 66% быстрее

3) Сохраняйте getter свойства в локальных переменных при их использовании более одного раза.

somesprite.graphics.clear();
somesprite.graphics.beginFill(0x000000);
somesprite.graphics.drawRect(0,0,10,10);
somesprite.graphics.endFill();

// лучше заменить на

var n:Graphics = somesprite.graphics;
n.clear();
n.beginFill(0x000000);
n.drawRect(0,0,10,10);
n.endFill();


4) Создавайте собственные reflection-методы вместо использования getDefinitionByName(getQualifiedClassName(object))
utils reflection
// 503мс
var someclass:Class = getDefinitionByName(getQualifiedClassName(someObject));
// getter reflection
public class SomeClass {
public function get reflect():Class {
return SomeClass;
}
}
// 9мс
var someclass:Class = object.reflect();

быстрее на 5489%

5) Страрайтесь использовать строгое типизирование

6) Приводите к нужным типам, например, при чтении из массива.
Быстрее будет обращаться к image

var image: BitmapData = images[index];
image.getPixel(x,y)
//чем к
images[index].getPixel(x,y);


7) Где возможно, используйте int вместо Number

8) Операторы побитового сдвига работают быстрее:

Побитовый сдвиг влево быстрее на 300% при умножении на любую степень двойки:

x = x * 2;
x = x * 64;
//равно:
x = x << 1;
x = x << 6;


Побитовый сдвиг вправо быстрее на 350% при делении на любую степень двойки:

x = x / 2;
x = x / 64;
//равно:
x = x >> 1;
x = x >> 6;


Извлечение компонентов цвета:

//24bit
var color:uint = 0x336699;
var r:uint = color >> 16;
var g:uint = color >> 8 & 0xFF;
var b:uint = color & 0xFF;
//32bit
var color:uint = 0xff336699;
var a:uint = color >>> 24;
var r:uint = color >>> 16 & 0xFF;
var g:uint = color >>> 8 & 0xFF;
var b:uint = color & 0xFF;


Объединение компонентов цвета:

//24bit
var r:uint = 0x33;
var g:uint = 0x66;
var b:uint = 0x99;
var color:uint = r << 16 | g << 8 | b;

//32bit
var a:uint = 0xff;
var r:uint = 0x33;
var g:uint = 0x66;
var b:uint = 0x99;
var color:uint = a << 24 | r << 16 | g << 8 | b;


9) Обмен значениями численных переменных без использования временной переменной:

var t:int = a;
a = b;
b = t;
//равно:
a ^= b;
b ^= a;
a ^= b;


Быстрее на 20%.

10) Инкремент/декремент.
Внимание: это пример понижения производительности, но зато есть возможность понизить читабельность кода для врагов:)

i = -~i; // i++
i = ~-i; // i--


11) Смена знака с помощью NOT или XOR (говорят на 300% быстрее):

i = -i;
//равно:
i = ~i + 1;
//или
i = (i ^ -1) + 1;


12) Подсчет остатка

Если делитель является степенью двух, то остаток можно подсчитать быстрее на 600% следующим образом:
остаток = делимое & (делитель - 1);

x = 131 % 4;
//равно:
x = 131 & (4 - 1);


13) Проверка на четность/нечетность:

isEven = (i % 2) == 0;
//равно:
isEven = (i & 1) == 0;


Быстрее на 600%.

14) Абсолютное значение. Версия 1 быстрее на 2500%, чем Math.abs(), а версия 2 быстрее на 20%, чем версия 1.

//версия 1
i = x < 0 ? -x : x;
//версия 2
i = (x ^ (x >> 31)) - (x >> 31);


15) Сравнение двух числе на равенство знаков

eqSign = a * b > 0;
//равно:
eqSign = a ^ b >= 0;


На 35% быстрее.

16) Быстрое конвертирование цвета из R5G5B5 в R8G8B8

R8 = (R5 << 3) | (R5 >> 2)
G8 = (R5 << 3) | (R5 >> 2)
B8 = (R5 << 3) | (R5 >> 2)

17) a++ быстрее, чем a = a + 1 и т.п.

18) Умножение быстрее деления.

Лучше использовать a = b*.5 вместо a = b / 2

19) int(1.5) быстрее, чем Math.floor(1.5)
Аналогично int(1.5) + 1 быстрее, чем Math.ceil(1.5)


15:58:00, Flex 2 & Co
Повышение производительности AS3 приложений
Здесь представлены некоторые приемы, которые помогут повысить производительность наших приложений:

1) Создавайте константы для часто используемых объектов типа new Point(0,0) или new Rectangle(0,0,320,240):

//вызов 100000 раз: 75мс
new Point(0,0);
//или
private static const POINT:Point = new Point(0,0);
//8мс
POINT;


Быстрее на 838%

2) Сократите указания на статические члены классов. Вместо этого старайтесь использовать переменные пакета:
//15мс
SomeClass.somevar;
package somepackage{
public const somevar:int;
}
//8мс
somevar;

на 66% быстрее

3) Сохраняйте getter свойства в локальных переменных при их использовании более одного раза.

somesprite.graphics.clear();
somesprite.graphics.beginFill(0x000000);
somesprite.graphics.drawRect(0,0,10,10);
somesprite.graphics.endFill();

// лучше заменить на

var n:Graphics = somesprite.graphics;
n.clear();
n.beginFill(0x000000);
n.drawRect(0,0,10,10);
n.endFill();


4) Создавайте собственные reflection-методы вместо использования getDefinitionByName(getQualifiedClassName(object))
utils reflection
// 503мс
var someclass:Class = getDefinitionByName(getQualifiedClassName(someObject));
// getter reflection
public class SomeClass {
public function get reflect():Class {
return SomeClass;
}
}
// 9мс
var someclass:Class = object.reflect();

быстрее на 5489%

5) Страрайтесь использовать строгое типизирование

6) Приводите к нужным типам, например, при чтении из массива.
Быстрее будет обращаться к image

var image: BitmapData = images[index];
image.getPixel(x,y)
//чем к
images[index].getPixel(x,y);


7) Где возможно, используйте int вместо Number

8) Операторы побитового сдвига работают быстрее:

Побитовый сдвиг влево быстрее на 300% при умножении на любую степень двойки:

x = x * 2;
x = x * 64;
//равно:
x = x << 1;
x = x << 6;


Побитовый сдвиг вправо быстрее на 350% при делении на любую степень двойки:

x = x / 2;
x = x / 64;
//равно:
x = x >> 1;
x = x >> 6;


Извлечение компонентов цвета:

//24bit
var color:uint = 0x336699;
var r:uint = color >> 16;
var g:uint = color >> 8 & 0xFF;
var b:uint = color & 0xFF;
//32bit
var color:uint = 0xff336699;
var a:uint = color >>> 24;
var r:uint = color >>> 16 & 0xFF;
var g:uint = color >>> 8 & 0xFF;
var b:uint = color & 0xFF;


Объединение компонентов цвета:

//24bit
var r:uint = 0x33;
var g:uint = 0x66;
var b:uint = 0x99;
var color:uint = r << 16 | g << 8 | b;

//32bit
var a:uint = 0xff;
var r:uint = 0x33;
var g:uint = 0x66;
var b:uint = 0x99;
var color:uint = a << 24 | r << 16 | g << 8 | b;


9) Обмен значениями численных переменных без использования временной переменной:

var t:int = a;
a = b;
b = t;
//равно:
a ^= b;
b ^= a;
a ^= b;


Быстрее на 20%.

10) Инкремент/декремент.
Внимание: это пример понижения производительности, но зато есть возможность понизить читабельность кода для врагов:)

i = -~i; // i++
i = ~-i; // i--


11) Смена знака с помощью NOT или XOR (говорят на 300% быстрее):

i = -i;
//равно:
i = ~i + 1;
//или
i = (i ^ -1) + 1;


12) Подсчет остатка

Если делитель является степенью двух, то остаток можно подсчитать быстрее на 600% следующим образом:
остаток = делимое & (делитель - 1);

x = 131 % 4;
//равно:
x = 131 & (4 - 1);


13) Проверка на четность/нечетность:

isEven = (i % 2) == 0;
//равно:
isEven = (i & 1) == 0;


Быстрее на 600%.

14) Абсолютное значение. Версия 1 быстрее на 250%, чем Math.abs(), а версия 2 быстрее на 20%, чем версия 1.

//версия 1
i = x < 0 ? -x : x;
//версия 2
i = (x ^ (x >> 31)) - (x >> 31);


15) Сравнение двух числе на равенство знаков

eqSign = a * b > 0;
//равно:
eqSign = a ^ b >= 0;


На 35% быстрее.

16) Быстрое конвертирование цвета из R5G5B5 в R8G8B8

R8 = (R5 << 3) | (R5 >> 2)
G8 = (R5 << 3) | (R5 >> 2)
B8 = (R5 << 3) | (R5 >> 2)

17) a++ быстрее, чем a = a + 1 и т.п.

18) Умножение быстрее деления.

Лучше использовать a = b*.5 вместо a = b / 2

19) int(1.5) быстрее, чем Math.floor(1.5)
Аналогично int(1.5) + 1 быстрее, чем Math.ceil(1.5)


15:48:36, Flash-ripper.com
Наушники для марсиан: описание проблемы "IE8 и веб-стандарты"

Я не знаю, заказывал ли Microsoft своему уже давно бывшему сотруднику и большому авторитету в мире программирования Джоэлу Спольски эту статью (гугло-перевод на русский — спасибо, k4d).

Статью следует читать срочно: такого емкого и в то же время лаконичного описания проблемы "Браузеры и Веб-стандарты" я ранее не встречал. Даже вашей кошке станет понятно, что в Империи Зла есть все, кроме Империи. И даже Зло там побито на такие мелкие части, называющиеся "человеческие ошибки" (и твои тоже, читатель), что выявить это самое "Зло" сможет лишь жертва эгоцентрического затмения глубоко убежденный в своей категорической пожизненной правоте человек.

Описанное Джоэлем видение проблемы сетевых стандартов кажется мне особо важным в свете возможной ассимиляции платформы Silverlight с другими сетевыми технологиями (приблизительно в 2011 году, а может быть и раньше, если падающий индекс Доу-Джонса не заставит нас уйти копать картошку и запасаться недорогими китайскими товарами).


11:24:52, Flash-ripper.com
Флэшер жив, и более того — он находится вне опасности

Я часто читаю фразы в духе "флэшер умер" или "а что, флэшер еще жив?" Последний раз это было вчера в записи про необычный рефакторинг на форуме Flasher.ru.

Похоже, это явление мнимой смерти связано с демонстративным презрением к начинающим (или "нищим духом"). Мол, мы-то уже духом не нищи, а богаты. Мы, мол, аристократы девелопмента и у нас не бывает багов и вопросов, у нас одни насмешки над индусами, нубами да пиндосами. Флэшер у нас в прошлом, а впереди у нас тотальная мировая доминация и поворот земной оси в одиннадцатом проигрывателе. А наши какашки пахнут хвоей и превращаются в лесных эльфов. Это смешно, ребята :)

Кто сможет подсчитать то количество талантливых (и гениальных) разработчиков, для которых именно флэшер стал первым опытом, знанием, домом, исходником, второй семьей и чистилищем? Я не могу. Но вы их знаете.

Проблема, как я понимаю, в энтропии сообщества на флэшере: только элита собралась обсудить глобальные вопросы, как появляется новичок и лезет со своими глупостями. Ох уж эти новички. Как бы нам от них избавиться?

Как бы нам избавиться от новичков и потерять платформу, на которой мы стоим — Флэш Платформу? Будем себе жить-доживать на ней, спокойно, без этих непредсказуемых варваров-новобранцев.

Короче, и без шуток: ресурс Flasher.ru есть главный и стратегически важный центр поддержки Flash в Рунете. Я могу это доказать: на собеседованиях на вопрос "где вы берете информацию по флэшу" чаще всего отвечают "на флэшере". Это факт. Флешер и есть та самая "кузница кадров", прямо у нас под носом.

Но как всякий зрелый сетевой организм (1999-2008) флэшер имеет свою историю, в том числе и историю болезни. Проявите богатство духа уважением к сложной и интенсивной системе его взаимосвязей. Помните, что только погибающие цивилизации избавлялись от стариков, больных и слабых младенцев.

И если вы не можете помочь флэшеру делом, то хотя бы не вредите ему словом: имейте респект не только к опытным, но и к начинающим.

Кого люблю, того здесь нет

Все это написал я, пока внутренний цензор продолжал клевать носом, а потом он проснулся и я подумал: в сакральной фразе "флэшер умер" видится трепет флэшерского существа перед чем-то несоизмеримо большим него самого. Конечно, есть в этом и оттенок ницшеанского "бог умер" — ведь тот флэшер, которым знали его многие, как своего флэшерского бога, уже никогда не вернется, потому что он растет.

Так и яблоня не плодоносит прошлогодними яблоками. Они как бы умерли, но каждый год яблоня приносит нам новые плоды, радуя способных насладиться ими (но любители прошлогодних яблок их просто не видят в упор (не-на-видят?).

Невозможно одним сознанием объять флэшер с его 1000 одновременно находящимися на сайте пользователями. Самые главные прозрения и самые жаркие споры — это флэшер.ру.

Сказать, что флэшер умер — то же самое, что обвинить во смерти цветущий луг.

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


2008-03-19

18:08:58, WebService //Flash
Новое серверное решение для защиты Flash конетента от Adobe

Adobe анонсировали новый серверный продукт, названный Flash Media Rights Management Server, который дает контент-провайдерам возможность защиты и монетизации Flash видео-контента.

Полный список возможностей Flash Media Rights Management Server можно посмотреть на сайте или скачать в виде табички (PDF, 146k).

Tags: ,


18:08:58, WebService //Flash
Новое серверное решение для защиты Flash конетента от Adobe

Adobe анонсировали новый серверный продукт, названный Flash Media Rights Management Server, который дает контент-провайдерам возможность защиты и монетизации Flash видео-контента.

Полный список возможностей Flash Media Rights Management Server можно посмотреть на сайте или скачать в виде табички (PDF, 146k).

Tags: ,


13:43:02, Flash-ripper.com
AIR vs. Zinc vs. Silverlight: почему их можно и нужно сравнивать

Пришла в голову шальная мысль. Пишу срочно, пока внутренний цензор спит.

Вопросы сравнения и конкурирования AIR, Zinc и Silverlight возникают все чаще и чаще. Как правило, опытные, имевшие дело в этими технологиями люди на такие вопросы отвечают, что Silverlight не является конкурентом Adobe AIR или что Zinc нельзя сравнивать с AIR.

Резюме: "все эти продукты съедобны, но сравнивать их нельзя"И это очень странная ситуация! Ведь вопросы сравнения возникают по-сто-ян-но! Значит, на то есть веские и неслучайные причины. И главная причина такая: разработчики ждут универсальной платформы для десктоп-приложений. Именно поэтому каждая платформа, в описании которой хоть раз встречается слово "десктоп" или подобное ему, ставится на полку "десктоп-платформа" рядом с аналогичными экспонатами: сейчас это Adobe AIR, Microsoft Silverlight, MDM Zinc и mProjector.

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

Это естественно: если производитель указал в названии продукта "for desktop", то этот продукт — для десктопа, и его можно сравнивать с аналогичными.

Поэтому вопросы сравнения Zinc с AIR, и даже Zinc с Silverlight — вполне законны. Они отражают реальные и самые настоящие потребности прикладных разработчиков, а также их ожидание того, как должна работать технология. А если технология работает не так, как от нее ожидается, то разработчик найдет другую вместо того, чтобы перестраивать свое понимание того, как должна работать такая технология.

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

И в этой ситуации правы прикладные разработчики, сравнивающие платформы AIR, Silverlight и Zinc между собой: победитель должен быть один (по меньшей мере в данное время и в данных обстоятельствах). Да, у платформы могут быть далеко идущие планы, с трудом поддающиеся мгновенному пониманию разработчиками. Но, если этот разрыв между планами архитекторов на будущее и сегодняшними чаяниями разработчиков столь велик, что блокирует адекватное восприятие десктоп-платформ здесь и сейчас — не грозит ли это возможным провалом успеха платформ, как не отвечающих ожиданиям?

Что можно сделать в этой ситуации? Нужно изучать проблему и продолжать задавать вопросы — чтобы архитекторы десктоп-платформ лучше понимали, для кого они создают свои технологии.


2008-03-18

20:42:22, Flash-ripper.com
Портируем, рефакторим, оптимизируем — участвуем?

На флэшере возникло народное движение "За Оптимизацию и Хорошую Жисть". Все желающие приглашаются понаблюдать, как группа добровольцев (реально состоящая из одного человека) получает готовый код и удовольствие.

Дело вот в чем: происходит перевод на рельсы AS3 хорошего проекта, но написанного на AS2. Причем проект это конкретный и недецкий — SVG to Flash от Helen Triolo.

И вот, на Флэшере, некий субъект взялся не просто портировать этот код — но сделать это чисто по флэшерски, на глазах у восхищенной публики (при этом комментируя свои действия). Начав с задачи "заставить проект работать на AS3" он идет дальше: к рефакторингу, оптимизации и счастью для всех.

Наблюдаем, хвалим, ругаем, помогаем, пользуемся? А самые умные уже догадываются, что результат будет доступен всем в виде опенсорсного проекта :)


18:39:02, DL1t's blog
OpenDialect 0.1.0

Появилась первая публичная версия OpenDialect - опенсорсной IDE для Flex-разработки, написаннной на C#. На данный момент работает под Windows, в ближайшее время будет портирована под Mono, т е станет работоспособна под Linux и OS X. После скачивания дистрибутива размером в 21 мегабайт и его установки обнаруживаем слегка странно выглядящий таймлайн и поле с Flex-компонентами, а также редактор mxml-кода(подстветки кода не обнаружено). Производит впечатление очень ранней альфы. Информация о проекте - здесь.


18:10:00, Flash-разработка
Как открыть ссылку, заданную в htmlText компонента Text. Flex
Если задать HTML-текст как мы это делали всегда, ссылка станет активной, но открываться не будет:
<a href='http://www.adobe.com' target='_blank'>Go Home</a>

На лайф-доках есть статья, которая открывает нам этот новый секрет Flex. Теперь необходимо создавать обработчик, который будет осуществлять переход по ссылке:
<?xml version="1.0"?>
<!-- textcontrols/LabelControlLinkEvent.mxml -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" borderStyle="solid" backgroundGradientColors="[#FFFFFF, #FFFFFF]">
<mx:Script>
<![CDATA[
import flash.events.TextEvent;
public function linkHandler(event:TextEvent):void {
myTA.text="The link was clicked."; // Open the link in a new browser
window. navigateToURL(new URLRequest(event.text), '_blank')
} ]]>
</mx:Script>
<mx:Label selectable="true" link="linkHandler(event);">
<mx:htmlText>
<![CDATA[<a href='event:http://www.adobe.com'>Navigate to Adobe.com.</a>]]>
</mx:htmlText>
</mx:Label>
<mx:TextArea id="myTA"/>
</mx:Application>

Таким образом, мы сами контролируем открытие ссылок из текстовых блоков.

17:58:17, Flash-ripper.com
Фотографии и отчеты с первой официальной встречи Ukrainian Adobe Flash Platform User Group

15 марта в в Харькове состоялась первая UAFPUG, и уже имеются некоторые фотографии с нее. Денис 'mrJazz' Шереметов порадовал мегакачественными фото (он клеевый!) А Рома 'NoubaSE' Шупер выложил целую кучу компромата (есть шедевры).

Уже есть отчеты (на английском, тоже с фото) от Андрея 'JabbyPanda' Панаса и Сергея Ковалева (фотосет на Flickr).

Я рад, что это событие состоялось в офисе моей компании GlobalLogic (ex-Validio Ukraine). Респект нашему VP of Software Development Юрию Ландграфу — он без сомнений дал свое согласие на проведение встречи. Большое спасибо Анастасии Логвиновой из нашего HR-отдела — она очень помогла мне с организацией.

И еще раз спасибо тем 45, кто был там! Если есть еще фотки и отчеты — прошу в комменты :)


10:12:38, RIA crumbs
ActionScript 3 RIA справочник

Майк Чамберс (Mike Chambers) сообщает о том, что они выпустили в свет справочное руководство по ActionScript 3 для RIA разработчиков. Справочник содержит полное описание ActionScript 3 API для Flash Player, Adobe AIR и Flex 3. Так же Майк дает ссылку на постеры, на базе которых был сделан этот справочник.

ps. если у вас лицензионный Flex 3 Builder, то вы можете заказать себе постеры :)


10:12:38, RIA crumbs
ActionScript 3 RIA справочник

Майк Чамберс (Mike Chambers) сообщает о том, что они выпустили в свет справочное руководство по ActionScript 3 для RIA разработчиков. Справочник содержит полное описание ActionScript 3 API для Flash Player, Adobe AIR и Flex 3. Так же Майк дает ссылку на постеры, на базе которых был сделан этот справочник.

ps. если у вас лицензионный Flex 3 Builder, то вы можете заказать себе постеры :)


2008-03-17

23:24:28, Flash-ripper.com
FlashPhone становится платформой для Flash VoIP

Сервис FlashPhone.ru развивается и вот уже появляется ZMS — платформа для создания VoIP-сервисов на Flash Platform (кстати, Silverlight-у такое пока не грозит вроде?)

Если вы не знаете о чем речь, то см. видео "How To Use FlashPhone":

Рунет обрастает платформами :)


22:58:19, Garbage Collector
Движение против спамеров

Поддержим движение против спамеров? ;-)

Движение против спамеров

P.S.: Танечки, у вас красивые ноги!


13:09:17, 33 коровы
Как самому отлавливать биндабл значения простым способом

Сегодня мне задали вопрос:

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

Я не забыл ответить сразу и человек ушел в оффлан. Думаю этот пример будет полезен всем ).
В кратце — ловим эвент, смотрим, что внутри, биндим в мхмл наше значение чтобы было все почесному.
Важно перед употреблением прочесть хелп по метатегу [Bindable] иPropertyChangeEvent

<?xml version=“1.0″ encoding=“utf-8″?>
<mx:Application xmlns:mx=“http://www.adobe.com/2006/mxml”
                                creationComplete=“init()”
                                layout=“vertical”>
        <mx:Button      label=“{’change property, property now is ‘+ testBinding}”
                                click=“{testBinding = Math.random().toString()}”/>
        <mx:TextArea    id=“eventsLog”  width=“600″ height=“200″/>
        <mx:Script>
                <![CDATA[
                        import mx.events.PropertyChangeEvent;
                       
                        //наша тестовая переменная
                        [Bindable]
                        public var testBinding : String;
                       
                        public function init()
                        {
                                addEventListener(PropertyChangeEvent.PROPERTY_CHANGE, propertyChangeEventHandler);
                        }
                       
                        public function propertyChangeEventHandler( event:PropertyChangeEvent ) : void
                        {
                                eventsLog.text  +=\n\nPropertyChangeEvent {”
                                                                +\n type : “+event.type
                                                                +‘,\n property : ‘+event.property
                                                                +‘,\n kind : ‘+event.kind
                                                                +“,\n newValue : “+event.newValue
                                                                +“,\n oldValue : “+event.oldValue +‘}’;
                        }
                ]]>
        </mx:Script>
</mx:Application>

09:37:06, WebService //Flash
IV фестиваль «Мультиматограф-IV»

IV фестиваль «Мультиматограф-IV» приглашает к участию!Существенная черта фестиваля состоит в том, что главное значение имеет замысел творения. Его техническое воплощение с помощью современных компьютерных средств может лишь усилить или ослабить впечатление. К тому же фестиваль не задает изначально никакой темы для творчества.«Мультиматограф» - это место встречи известных специалистов в области компьютерного творчества, молодых авторов, которые делают первые шаги в этом направлении, и зрителей. Идея фестиваля – предоставление площадки для демонстрации своего творчества современным, динамичным и креативно мыслящим (но не «раскрученным» еще) людям.На конкурс принимаются работы некоммерческого характера, выполненные в различных направлениях, в том числе: Flash, 2D-3D-анимация, классическая и пластилиновая анимация, видеоклипы.

Номинации: «Мультфильм», «Клип», «Видео-арт», «Дичь».Фестиваль пройдет в Вологде 28 и 29 марта 2008 г. Гала-концерт и награждение победителей состоится 29 марта в ОКЗ «Русский Дом».

Tags:


09:37:06, WebService //Flash
IV фестиваль «Мультиматограф-IV»

IV фестиваль «Мультиматограф-IV» приглашает к участию!Существенная черта фестиваля состоит в том, что главное значение имеет замысел творения. Его техническое воплощение с помощью современных компьютерных средств может лишь усилить или ослабить впечатление. К тому же фестиваль не задает изначально никакой темы для творчества.«Мультиматограф» - это место встречи известных специалистов в области компьютерного творчества, молодых авторов, которые делают первые шаги в этом направлении, и зрителей. Идея фестиваля – предоставление площадки для демонстрации своего творчества современным, динамичным и креативно мыслящим (но не «раскрученным» еще) людям.На конкурс принимаются работы некоммерческого характера, выполненные в различных направлениях, в том числе: Flash, 2D-3D-анимация, классическая и пластилиновая анимация, видеоклипы.

Номинации: «Мультфильм», «Клип», «Видео-арт», «Дичь».Фестиваль пройдет в Вологде 28 и 29 марта 2008 г. Гала-концерт и награждение победителей состоится 29 марта в ОКЗ «Русский Дом».

Tags:


2008-03-16

11:08:59, Constantiner's blog
RAFPUG: День Космонавтики, Питер

AIR Rocket LaunchХочу сообщить, что следующая встреча RAFPUG (Russian Adobe Flash Platform User Group, Российская Группа Пользователей Flash-платформы от Adobe) состоится в субботу, 12 апреля, в День Космонавтики в Санкт-Петербурге. Приглашаются все желающие.

Место и время мероприятия в точности пока не определено. Мероприятие ориентировочно начнется в 12.00 (чтобы было время для афтерпати). Данная встреча предполагается быть очень плодотворной, плотной и рабочей. Предварительная программа встречи такова:

  • Юлия Николаева aka Junique. Связывание данных во Flex. Уровень слушателей: средний.
  • Павел Кожин. Жизненный цикл компонент во Flex (Component Lifecycle Overview). Уровень слушателей: средний.
  • Александр Гахов aka Agahov. Разработка Flex-приложений с использованием BlazeDS, Hibernate и Spring. Уровень слушателей: средний.

Программа может меняться. Ближе к событию будут опубликованы тезисы. Если есть необходимость (пишите в комменты), могу сделать краткий вводный обзор, что же такое Flex (если вдруг кто не знает и решит, что ему неинтересно будет слушать доклады).

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

  1. Имя Фамилия

  2. Ник

  3. Компания, в которой трудитесь

  4. Какими технологиями от Adobe интересуетесь (владеете)

  5. Город, в котором вы живете

  6. Личный сайт или блог (если есть)

На один (или несколько) из электронных адресов менеджеров группы:
as <at/> malkov <dot/> org - Артемий Малков
constantiner <at/> gmail <dot/> com - Константин Ковалев
mail <at/> tsyplikhin <dot/> org - Александр Цыплихин

Ответа на письмо ждать не стоит: процедура уведомительная. В теме письма можно указать дату встречи.

Кстати, будет здорово, если у кого-то есть интересные варианты насчет помещения для проведения встречи. Требования к помещению простые: 50+ посадочных мест и проектор. Помещение будет нами занято в течение 4-5 часов. Если помещение бесплатное - то и вообще хорошо. Насчет этого пишите в комменты или сразу мне (constantiner <at/> gmail <dot/> com).

Надеюсь, что все участники встречи узнают много нового и интересного, а также плодотворно пообщаются!


10:32:18, Constantiner's blog
Исправленный Adobe AIR-Microsoft Silverlight FAQ

После выхода 25 февраля 2008 финальной версии Adobe AIR и выхода 5 марта 2008 Microsoft Silverlight 2.0 Beta 1 в связи с MIX’2008, многие предположения из предыдущей статьи, касающейся вопросов конкуренции AIR и Silverlight, прояснились. Здесь я приведу исправленный и дополненный FAQ, который постараюсь содержать в актуальном состоянии. Предыдущий вариант оставлю для истории.

Итак:

Silverlight Logo

Что такое Silverlight?
Silverlight представляет собой браузерный плагин (официально Microsoft Silverlight Runtime), позволяющий создавать насыщенные интернет-приложения (RIA) на базе технологий от Microsoft. Silverlight базируется на декларативном языке разметки XAML, который является сердцем технологии WPF, являющейся частью Microsoft .NET 3.0//3.5. Кодовым названием Silverlight было WPF/E (WPF Everywhere).

Какие версии Silverlight существуют?
Изначально планировался выпуск версии 1.0, нацеленной на представление в сети Интернет насыщенного медиа-контента и спустя какое-то время версии 1.1, обладающей большинством особенностей WPF. Версия Silverlight 1.0 была выпущена 5 сентября 2007. Тогда же была выпущено последнее обновление Silverlight 1.1 alpha. 29 ноября 2007 было официально объявлено, что версия Silverlight 1.1 переименовывается в Silverlight 2.0 ввиду того, что список нововведений столь широк, что тянет на мажорный номер версии. Это также по поводу распространенной в сети попугайской критики Silverlight, которая, якобы, не успела дожить до 1.1, а уже ожидается 2.0. Просто воспринимайте это как переименование. Таким образом 5 марта 2008 вышла версия Silverlight 2.0 Beta 1.

В чем отличие версий Silverlight?
Версия 1.0 не содержит в себе контролов, лэйаутов, а в качестве языка программирования используется JavaScript. Основная возможность - HD-видео. Позиционируется как релиз, направленный на доставку пользователям насыщенного медиа-контента. Версия 2.0 (бывшая 1.1) является достаточно полноценным подмножеством WPF и содержит в себе мощный набор контролов, лэйаутов, сетевых протоколов, классов .Net 3.5 (включая LINQ), а также возможность локального хранения данных (что позволит таким приложениям работать и в оффлайне). Также SL 2.0 обладает богатыми возможностями по кастомизации/скинизации компонент (также, как в WPF). Языками написания приложений могут быть JavaScript, CLR--языки (C#, VB Итд.), DLR--языки (IronRuby, IronPython, Managed JScript). Подробнее о списке особенностей Silverlight 2.0 можно прочитать тут.

Какие платформы поддерживает Silverlight?
Silverlight 1.0 (как и Silverlight 2.0) поддерживает Windows и MacOS. Silverlight 2.0 будет также поддерживать Linux (Moonlight) благодаря партнерскому соглашенияю с Novell.

Как осуществляется установка Silverlight-приложений?
Silverlight-приложения не нуждаются в установке. Браузерный плагин сам скачивает с сервера необходимые файлы и отображает их. Соответственно, не требуется специальной подготовки файлов для разных браузеров и платформ. Если же у пользователя отсутствует установленный Silverlight-плагин, то вместо приложения он увидит специальный бэйдж, говорящий о необходимости установить плагин и осуществляющий эту установку.

Содержит ли в себе Microsoft Silverlight Runtime контролы и DLR?
Нет. Все контролы содержатся во внешних dll, которые подгружаются при необходимости. Также и DLR не включен в среду исполнения: соответствующие dll подгружаются при необходимости их использования. Так, для использования IronPython пользователь будет вынужден загрузить больше мегабайта dll-ек. Для IronRuby это будет около 700 k. Понятно, что они кэшируются браузером, но для приложения с другого домена придется загружать их повторно. Контролы в общей сложности занимают также больше мегабайта, и все это пользователь будет вынужден загружать с приложением. Общий вес пользовательских библиотек, не включенных в Microsoft Silverlight Runtime и, соответственно, необходимых для загрузки пользователем (далеко не факт, что будут использоваться все эти библиотеки) составляет свыше 5 мегабайт.

Сколько стоит разработка Silverlight-приложений?
Для разработки Silverlight-приложений доступен бесплатный SDK. SDK доступен только для Windows! Также существует Microsoft Silverlight Tools Beta 1 for Visual Studio 2008, который доступен для Microsoft Visual Studio 2008 Standard и выше. Таким образом, разработка Silverlight-приложений в бесплатной VS Express недоступна, несмотря на анонс Скотта Гатри (если не принимать во внимание хаков третьих сторон). Для дизайнеров доступен платный Expression Blend, позволяющий работать с теми же самыми проектами, что и VS, и предназначенный для работы с XAML (подробнее тут). Таким образом, можно бесплатно создавать Silverlight-приложения с использованием SDK, но бесплатных инструментов не существует. Все эти инструменты доступны только на Windows.

Существует ли у Microsoft кроссплатформенная среда для создания настольных насыщенных интернет-приложений (RIA)?
На данный момент такой технологии у Microsoft .нет, и она пока не анонсирована. Десктопная платформа WPF, с помощью которой можно создавать насыщенные интернет-приложения, доступна лишь на платформе Windows. Silverlight же, являющийся кроссплатформенным, не доступен на десктопе и никакой официальной информации об обратном нет. Единственной кроссплатформенной платформой от Microsoft, которую можно установить на большое число современных компьютеров, можно считать Microsoft Windows :)

Доступны ли исходные коды Silverlight?
Исходные коды Microsoft Silverlight Runtime не доступны. Доступны исходные коды и модульные тесты контролов. Также доступны исходные коды DLR.

Приведите список ресурсов по Silverlight.
Пожалуйста:




AIR Logo (Final Version)

Что такое Adobe AIR?
Adobe AIR (Adobe Integrated Runtime), которая имела кодовое название Apollo, представляет собой среду исполнения, позволяющую портировать и создавать веб-приложения, стирающие границу между операционной системой и вебом. Используя существующие навыки, разработчики могут создавать веб-приложения, хорошо интегрирующиеся в десктоп.

Что подразумевается под интеграцией AIR-приложений в операционную систему?
Это подразумевает, что веб-приложения могут быть запущены с рабочего стола (как обычные приложения), иметь доступ к файловой системе, подразумевает ассоциации расширений файлов с приложением (например, запуск нашего AIR-приложения при клике на файл something.smthng), работу приложений в многооконном режиме с родными для операционной системы окнами, возможность перетаскивания файлов из операционной системы, возможность использования Rich Clipboard, возможность использования меню, системного трея, доков (для Маков), контекстного меню, оповещений (всплывающие из трея окошки с информацией о неком событии), локального хранилища данных (включая защищенное хранилище), встроенную базу данных (SQLite).

Какими навыками должен обладать разработчик для создания AIR-приложений?
В AIR-приложениях можно использовать Flash/Flex, HTML/JavaScript/AJAX и PDF. Корневым документом AIR-приложения может быть как HTML-файл, так и swf. При этом можно встраивать в текущие и новые окна приложения как HTML-элементы, так и swf. Также имеется возможность встраивания PDF-документов (при наличии у пользователя Acrobat Reader’а). Для работы с HTML используется движок WebKit, тот же самый, что и в браузере Safari. Возможет доступ из swf-документов к элементам HTML DOM, а также вызов JavaScript-функций и наоборот. То есть большинство современных клиентских веб-разработчиков могут с легкостью создавать AIR-приложения.

Какие версии среды исполнения AIR существуют на данный момент?
25 февраля 2008 была выпущена версия 1.0, которая является на данный момент текущей.

Какие платформы поддерживает Adobe AIR?
Версия 1.0, выпущенная 25 февраля 2008 г. поддерживает Windows и MacOS. В настоящее время идет работа над выпуском версии для Linux.

Каким образом следует подготавливать AIR-приложения для установки на различных платформах?
AIR-приложения (файлы с расширением *.air) уже готовы к установке для всех поддерживаемых платформ. Специальной подготовки файла для каждой платформы не требуется.

Каким образом осуществляется установка AIR-приложений?
Установить AIR-приложения можно как непосредственно с веб-странички, так и скачав файл к себе на локальную машину. В первом случае на веб-страничке размещается специальный бэйдж, который проверяет наличие у клиента среды исполнения AIR и при необходимости устанавливает ее (вес среды около 10M). После установки (определения наличия) среды исполнения AIR с помощью универсального инсталлера устанавливается само приложение. Каждое приложение может быть подписано (включая сертификаты, заверенные certificate authorities), информация о подписи указывается при установке, и пользователь сам волен решать, доверяет ли он издателю или нет. При установке приложения, скачанного пользователем на локальную машину, наличие среды исполнения не проверяется. Просто при запуске *.air-файла будет задан вопрос о том, с какой программой ассоциировать данное расширение. При установленной же среде исполнения AIR автоматически запустится универсальный инсталлер. Для приложений также доступна проверка обновлений приложения и установки новых версий.

Сколько стоит разработка AIR-приложения?
Стоимость разработки AIR-приложения, если не учитывать оплату услуг специалистов, состоит из стоимости SDK и инструментов для разработки. AIR SDK бесплатен и доступен для скачивания.. Он содержит в себе AIR Debug Launcher (ADL) и AIR Developer Tool (ADT), которые служат для запуска приложения во время отладки и для подготовки версии приложения, пригодной для установки конечным пользователем. Также SDK содержит шаблон дескриптора AIR-приложения, примеры AIR-бэйджа и файлы, представляющие алиасы AIR-классов для JavaScript. Для создания же компонентов, используемых при упаковке AIR-приложения инструментом ADT, можно использовать бесплатный Flex SDK (для создания swf-файлов), который уже включает в себя AIR SDK, среду разработки Flex Builder на базе Eclipse, либо же Adobe Flash, с помощью которых можно создавать swf-файлы. Для работы с AIR-приложениями на базе JavaScript существует бесплатное AIR-расширение для бесплатной Aptana Studio.. Таким образом есть как бесплатные SDK для разработки приложений, так и бесплатные инструменты.

Доступны ли исходные коды AIR?
Исходные коды среду исполнения AIR не доступны. Не доступны также исходные коды инструментов ADL и ADT. Доступными являются лишь исходные коды Flex SDK (включая Flex framework) и WebKit (плюс виртуальная машина ActionScript). Все это можно найти на сайте Adobe Open Source.




Как мы видим, на данный момент Silverlight никак не является конкурентом Adobe AIR и играет на разных с ним полях. С точки зрения конкуренции, конкурентом Silverlight можно назвать Flash-плеер от Adobe.


09:04:01, Constantiner's blog
Статья о RIA в журнале «Мир ПК»

В свежем мартовском номере журнала «Мир ПК» вышла большая статья, посвященная насыщенным интернет-приложениям (RIA) моего авторства. Если интересно, можно купить и прочитать.

Там рассматриваются отличительные особенности RIA-технологий, примеры RIA, дается краткий обзор основных существующих RIA-технологий. Редакторская правка почти не исказила материала статьи (только в двух-трех местах), за что редакции респект.

Также большое спасибо Артемию Малкову, сосватавшему меня в это издание.


2008-03-15

19:02:27, Flash-ripper.com
UAFPUG-1 состоялась

Меня ждут на улице, буду краток: спасибо всем, кто пришел!


2008-03-14

17:18:01, WebService //Flash
Встречайте SWFObject 2.0

Как и предполагалось, сегодня официально объявлено о выходе SWFObject 2.0. Финальный релиз можно скачать с Google Code. Также на домашней странице проекта можно воспользоваться онлайн-генератором кода для внедрения SWF в HTML страницу. Или скачать соответствующее AIR-приложение.

Tags:


17:18:01, WebService //Flash
Встречайте SWFObject 2.0

Как и предполагалось, сегодня официально объявлено о выходе SWFObject 2.0. Финальный релиз можно скачать с Google Code. Также на домашней странице проекта можно воспользоваться онлайн-генератором кода для внедрения SWF в HTML страницу. Или скачать соответствующее AIR-приложение.

Tags:


16:57:45, DL1t's blog
Flex C++ Bridge

Появилась замечательная надстройка над ExternalInterface заточенная под взаимодействие Flex с С++ .  Автор позиционирует ее в первую очередь как средство для создания красивых и удобных интерфейсов  к С++ приложениям. Работает пока только под Windows из-за использования ActiveX в диалоговом  окне, созданном средствами MFC,
но возможны подвижки в сторону поддержки других платформ, т к проект является
опенсорсным.  Подробности - здесь.


Предыдущие 30 | Следующие 30