<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;CkQGQHc9cSp7ImA9WhRVF00.&quot;"><id>tag:blogger.com,1999:blog-25528681162651304</id><updated>2012-01-16T11:52:01.969+04:00</updated><category term="Смешное" /><category term="FlashDevelop" /><category term="Странное" /><category term="Zinc" /><category term="Microphone" /><category term="Actionscript 2.0" /><category term="Actionscript 3.0" /><category term="haXeVideo" /><category term="Эффекты" /><category term="Flash Builder" /><category term="AIR" /><category term="Код" /><category term="Идеи" /><category term="Flash IDE" /><category term="Bitmap" /><category term="XML" /><category term="Extensions" /><category term="События" /><category term="Паттерны проектирования" /><category term="Bezier" /><category term="Wowza" /><category term="Видео" /><category term="Mate" /><category term="APE" /><category term="Справка" /><category term="Flash Player" /><category term="Грабли" /><category term="Flex Builder" /><category term="Eclipse" /><category term="MXML" /><category term="Впечатления" /><category term="ASDoc" /><category term="Flex" /><category term="Papervision 3D" /><category term="Flash Media Server" /><category term="JavaScript" /><category term="API ВКонтакте" /><category term="Обзоры" /><category term="SmartFoxServer" /><category term="От автора" /><category term="Burrito" /><category term="Red5" /><title>Flash-разработка</title><subtitle type="html">Предмет: Flash-технологии, программы, редакторы, классы, библиотеки.
Методика: Изучение шаг за шагом, поиск новых решений, сбор ссылок, новостей и мнений, разбор примеров.
Цель: Сбор, обработка и накопление тематической информации.</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://racer242.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://racer242.blogspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/25528681162651304/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>Евгений Симонов</name><uri>https://profiles.google.com/103035028933726102028</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-O8I1h_klPKM/AAAAAAAAAAI/AAAAAAAAAAA/nXxr79r2scI/s512-c/photo.jpg" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>216</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/blogspot/pabt" /><feedburner:info uri="blogspot/pabt" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;CkQGQHc8fyp7ImA9WhRVF00.&quot;"><id>tag:blogger.com,1999:blog-25528681162651304.post-605509324768972790</id><published>2012-01-09T00:21:00.002+04:00</published><updated>2012-01-16T11:52:01.977+04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-16T11:52:01.977+04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="От автора" /><category scheme="http://www.blogger.com/atom/ns#" term="События" /><title>Переезд на Tumblr</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
Переезжаю на Tumblr из Blogger-а: http://racer242.blogspot.com/.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Вроде бы нет причин для переезда. Да и блог мой стал совсем неактуальным. Уже год я в него толком ничего и не писал. Висит несколько черновиков, которые и публиковать то не хочется. Причина банальна. В моей практике flash-разработчика кончилось время исследований и достижений. Сегодня моя работа базируется на отработанных годами механизмах, о которых уже давно всё сказано.&lt;br /&gt;
Однако, ряд событий и последние известия относительно развития самой Flash Platform, навели меня на определенные мысли. Видимо, пора обновлять свой арсенал и поднимать якоря в поисках новых и более привлекательных гаваней. Меня сильно привлекла активность моего “кормильца” Adobe в направлении переноса своих технологий и опыта на HTML5. Я верю в успех этого дела и, пока не поздно, подключаюсь. И расширяю область своих интересов от “Flash-разработки” до “Front-end-разработки”, что включает в себя и Flash, и HTML5, и всё что им сопутствует.&lt;br /&gt;
&lt;br /&gt;
Переход на новый блоговый движок обусловлен не только новой направленностью моих изысканий. Пользуя tumblr как веб-, так и iPhone-приложение, я испытываю гораздо больший комфорт чем от Blogger-а. Да и эта гугловая “замкнутость на себе” немного раздражает.&lt;br /&gt;
&lt;br /&gt;
Всё. Прощаюсь с милым старым Блоггером без особых сожалений. Увидимся на Тумблере &lt;a href="http://racer242.tumblr.com/"&gt;&lt;span style="font-size: large;"&gt;http://racer242.tumblr.com/&lt;/span&gt;&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25528681162651304-605509324768972790?l=racer242.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/gegVcw3i1IxbdQD0-UPYAJjWLRQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/gegVcw3i1IxbdQD0-UPYAJjWLRQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/gegVcw3i1IxbdQD0-UPYAJjWLRQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/gegVcw3i1IxbdQD0-UPYAJjWLRQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/pabt/~4/zpaIxUmqriQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://racer242.blogspot.com/feeds/605509324768972790/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=25528681162651304&amp;postID=605509324768972790" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/25528681162651304/posts/default/605509324768972790?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/25528681162651304/posts/default/605509324768972790?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/pabt/~3/zpaIxUmqriQ/tumblr.html" title="Переезд на Tumblr" /><author><name>Евгений Симонов</name><uri>https://profiles.google.com/103035028933726102028</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-O8I1h_klPKM/AAAAAAAAAAI/AAAAAAAAAAA/nXxr79r2scI/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://racer242.blogspot.com/2012/01/tumblr.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEMERnc6fyp7ImA9WhdSEUo.&quot;"><id>tag:blogger.com,1999:blog-25528681162651304.post-2594491139878196760</id><published>2011-07-19T22:53:00.008+04:00</published><updated>2011-07-20T18:33:27.917+04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-07-20T18:33:27.917+04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Zinc" /><title>Zinc screensaver free</title><content type="html">Скачал последний Zinc, поставил, подтянул проект. Работает, и никаких упоминаний о пробной версии. Раньше выводил поверх контента сообщение о пробной версии и все было очевидно. А чего от него сейчас ожидать? Или это неожиданная халява?&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;* * *&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;div&gt;Кстати, столкнулся с проблемой вывода на экран screensaver-а при расширении рабочего стола на несколько мониторов. Приложение растягивается на область всех мониторов, что для вывода вменяемого контента недопустимо. Полдня бился над тем, как вывести контент только на один монитор и желательно главный. &lt;/div&gt;&lt;div&gt;Решение простое: &lt;/div&gt;&lt;div&gt;1. Берем размер экрана: &lt;i&gt;mdm.System.screenWidth&lt;/i&gt; и &lt;i&gt;mdm.System.screenHeight&lt;/i&gt;&lt;/div&gt;&lt;div&gt;2. Берем координаты главной формы: &lt;i&gt;mdm.Forms.getFormByName("MainForm").x &lt;/i&gt;и &lt;i&gt;mdm.Forms.getFormByName("MainForm").y&lt;/i&gt; &lt;/div&gt;&lt;div&gt;3. Устанавливаем размер приложения по размеру экрана: &lt;i&gt;mx.core.Application.application.width&lt;/i&gt; и &lt;i&gt;mx.core.Application.application.height&lt;/i&gt;. &lt;/div&gt;&lt;div&gt;4. Если координаты формы отрицательные, то устанавливаем: &lt;i&gt;mx.core.Application.application.x=-mdm.Forms.getFormByName("MainForm").x &lt;/i&gt;и&lt;i&gt; mx.core.Application.application.y=-mdm.Forms.getFormByName("MainForm").y&lt;/i&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;* * *&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Странно, что на привью-флэшке, которая была сделана для отображения в настройках, водяной знак выводится.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25528681162651304-2594491139878196760?l=racer242.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/OE8xnvaFptvDfVdz_mO2YC8ddbY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/OE8xnvaFptvDfVdz_mO2YC8ddbY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/OE8xnvaFptvDfVdz_mO2YC8ddbY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/OE8xnvaFptvDfVdz_mO2YC8ddbY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/pabt/~4/7RssMSxhi1g" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://racer242.blogspot.com/feeds/2594491139878196760/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=25528681162651304&amp;postID=2594491139878196760" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/25528681162651304/posts/default/2594491139878196760?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/25528681162651304/posts/default/2594491139878196760?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/pabt/~3/7RssMSxhi1g/zinc-screensaver-free.html" title="Zinc screensaver free" /><author><name>Евгений Симонов</name><uri>https://profiles.google.com/103035028933726102028</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-O8I1h_klPKM/AAAAAAAAAAI/AAAAAAAAAAA/nXxr79r2scI/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://racer242.blogspot.com/2011/07/zinc-screensaver-free.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEAMQ3o-fSp7ImA9Wx9WFkQ.&quot;"><id>tag:blogger.com,1999:blog-25528681162651304.post-4625453109210425830</id><published>2011-01-22T13:34:00.003+03:00</published><updated>2011-01-22T13:39:42.455+03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-01-22T13:39:42.455+03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Грабли" /><title>Забавный глюк автокомплита</title><content type="html">Flash Builder Burrito. Работаю с двумерным массивом. &lt;div&gt;Автокомплит перестает работать после строки: &lt;/div&gt;&lt;div&gt;&lt;i&gt;this.matrix[objectPosition.y, objectPosition.x]=1;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Причем автоподстановка импортов классов так же начинает глючить и плюхает импорты прямо посреди кода.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Исправляю и всё работает:&lt;/div&gt;&lt;div&gt;&lt;i&gt;this.matrix[objectPosition.y][objectPosition.x]=1;&lt;/i&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25528681162651304-4625453109210425830?l=racer242.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/TEabDSl_11Sf6TeD4WzeobLDnKg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/TEabDSl_11Sf6TeD4WzeobLDnKg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/TEabDSl_11Sf6TeD4WzeobLDnKg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/TEabDSl_11Sf6TeD4WzeobLDnKg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/pabt/~4/MN8a6je4gr8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://racer242.blogspot.com/feeds/4625453109210425830/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=25528681162651304&amp;postID=4625453109210425830" title="Комментарии: 1" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/25528681162651304/posts/default/4625453109210425830?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/25528681162651304/posts/default/4625453109210425830?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/pabt/~3/MN8a6je4gr8/blog-post.html" title="Забавный глюк автокомплита" /><author><name>Евгений Симонов</name><uri>https://profiles.google.com/103035028933726102028</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-O8I1h_klPKM/AAAAAAAAAAI/AAAAAAAAAAA/nXxr79r2scI/s512-c/photo.jpg" /></author><thr:total>1</thr:total><feedburner:origLink>http://racer242.blogspot.com/2011/01/blog-post.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CE4FQ3Y-eip7ImA9Wx9WE00.&quot;"><id>tag:blogger.com,1999:blog-25528681162651304.post-104643880633810054</id><published>2011-01-12T23:52:00.020+03:00</published><updated>2011-01-18T01:21:52.852+03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-01-18T01:21:52.852+03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Flex Builder" /><category scheme="http://www.blogger.com/atom/ns#" term="Burrito" /><category scheme="http://www.blogger.com/atom/ns#" term="Flash Builder" /><category scheme="http://www.blogger.com/atom/ns#" term="Обзоры" /><title>Flash Builder Burrito</title><content type="html">Начало года - мертвый сезон - время апгрейдов и апдейтов.&lt;div&gt;Windows 7 и весь свежий софт уже стоят, пора обновить рабочие инструменты.&lt;/div&gt;&lt;div&gt;Первый главный инструмент Flash Professional CS5 стоит, и вполне себе устраивает. После CS3, прогресс явно ощутим.&lt;/div&gt;&lt;div&gt;А вот Flash Builder, несмотря на достаточное количество нововведений, не сильно удивил. Инструментарий для кодера остался на том же уровне. Потуги создать видимость деятельности за счет нового представления веток классов в Package Explorer, честно говоря, не впечатлили.&lt;/div&gt;&lt;div&gt;Однако, судя по многочисленным анонсам, светлое будущее уже настает, и это -&lt;a href="http://labs.adobe.com/technologies/flashbuilder_burrito/"&gt; Adobe Flash Builder "Burrito"&lt;/a&gt;. Большинство &lt;a href="http://blogs.adobe.com/flex/2010/09/flash-builder-codename-burrito.html"&gt;анонсов &lt;/a&gt;этого продукта датируется октябрем прошлого года, а значит, за три месяца мексиканская шаурма уже достаточно подрумянилась, чтобы ее попробовать.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Пока нет разделения версий самостоятельного продукта и плагина для Eclipse. Есть просто ссылка для скачивания. Однако, в &lt;a href="http://labs.adobe.com/wiki/index.php/Flash_Builder_Burrito"&gt;Release Notes&lt;/a&gt;, описание установки плагина Eclipse есть. Проверим позже.&lt;/div&gt;&lt;div&gt;Итак, качаем и ставим. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;И вот у нас появилась в коллекции продуктов от Adobe папочка "Adobe Flash Builder Burrito". Действительно, release notes не обманули. Есть каталог "utilities", в котором лежит инсталлятор плагина Eclipse. Это уже хорошо.&lt;/div&gt;&lt;div&gt;Забавно, в меню "Пуск&gt;Все программы" ярлык упал прямо в корень. Запуск. Нас сразу крупно оповестили, что: либо вводи серийник, либо 60 дней знакомься. Что ж, будем надеяться что за это время выпустят новую версию и продлят нам срок.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Ой. при установке я выбрал русский язык и, видимо, зря это сделал. Половина пунктов меню на русском, остальное на родном. При осмотре интерфейса и создании проекта в голову лезли противоречивые мысли - хорошо оно или плохо, этот частично русский. В итоге пришел к однозначному мнению - для диалогов и тулбаров русский совсем не годится, ибо, многословен и многобуквен. Хотя, как не странно, казусов не обнаружил. Переведено всё грамотно. Конечно, фраза "Проводник пакетов", возможно, кого-нибудь и может смутить, но только не нашего брата flех-разработчика. В итоге, пришел к мнению переустановить английскую версию.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Кстати, как только я создал проект для Flax SDK 3.5 (ибо планирую еще как минимум год делать приложения под FP9.0), он уже содержал ошибку - не найдена локаль ru_RU. Достаточно в настройках компилятора заменить в строке дополнительных параметров -locale ru_RU на locale en_US. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;А теперь - попробуем установить плагин Eclipse. Eclipse у меня последний на сегодня, 32-х битный, 3.6.1 Helios. Там же установлен Flex Builder 3 Plugin. Посмотрим заодно, как они подружатся.&lt;/div&gt;&lt;div&gt;Итак, находим инсталлятор плагина: C:\Program Files (x86)\Adobe\Adobe Flash Builder Burrito\utilities\FB_Burrito_Plugin_Utility.exe. Наученные опытом, выбираем английский язык.&lt;/div&gt;&lt;div&gt;Выбираем папку с Eclipse. По завершении процесса установки, следуем рекомендациям и делаем модификации в eclipse.ini: &lt;/div&gt;&lt;div&gt;-Xms256m &lt;/div&gt;&lt;div&gt;-Xmx512m &lt;/div&gt;&lt;div&gt;-XX:MaxPermSize=256m &lt;/div&gt;&lt;div&gt;-XX:PermSize=64m&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Теперь смотрим. При запуске Eclipse получаем экран ошибок. Это наш Flex 3 дал о себе знать. Да, это была плохая идея. Увы, надо удалить Flex 3 и заново всё установить. В общем, совсем прощаемся с Flex3...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Итак, JRE переустановлено, Eclipse распакован, повторяю установку. Кстати, Eclipse по умолчанию руссифицирован. Кому такой расклад не привычен - меняем интерфейс на английский - добавляем в eclipse.ini:&lt;/div&gt;&lt;div&gt;-Duser.language=en&lt;/div&gt;&lt;div&gt;-Duser.country=US&lt;/div&gt;&lt;div&gt;(Спасибо &lt;a href="http://the33cows.com/category/flex-builder-2/"&gt;33 коровам&lt;/a&gt;! И, кстати это спасает проект от ошибки неверной локали).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Итак, у нас функционирует пробная 60-дневная версия Flash Builder Burrito. Работает пока нормально, сейчас ее поднастрою и попробую в деле. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;*  *  *&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Поработал на Burrito (Flex SDK 3.5). Нововведения пока не оказали значительного влияния на рабочий процесс. Столкнулся с несколькими глюками:&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;Старая болезнь билдера, когда при запуске дебага, процесс повисает на ожидании подключения к дебаггеру. Побеждается просто - поставить "Запуск от имени администратора" на эклипс, и, на всякий пожарный, на дебаговый FP.&lt;/li&gt;&lt;li&gt;Путаница при переименовывании классов. Сильно мешает при клонировании классов, когда копипастишь класс, потом его переименовываешь. Я так и не понял откуда растет баг, но раньше такого небыло.&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;Зато работа с темплейтами автокомплита кода порадовала. При работе в редакторе, нажимаем CTRL+SPACE+SPACE, и получаем варианты для быстрой вставки.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;* * *&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Серьезный баг, здорово мешает работе.&lt;/div&gt;&lt;div&gt;Если пользоваться автокомплитом (content assist) во flex-коде, довольно часто окно с выбором вариантов подвисает, затем подвисает и вся оболочка. Что бы вернуться к работе нужно закрыть Eclipse и снова запустить.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25528681162651304-104643880633810054?l=racer242.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/DQt11Sx6-jhgXoirZQOp3BWymyY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/DQt11Sx6-jhgXoirZQOp3BWymyY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/DQt11Sx6-jhgXoirZQOp3BWymyY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/DQt11Sx6-jhgXoirZQOp3BWymyY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/pabt/~4/N9No0sLOr6k" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://racer242.blogspot.com/feeds/104643880633810054/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=25528681162651304&amp;postID=104643880633810054" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/25528681162651304/posts/default/104643880633810054?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/25528681162651304/posts/default/104643880633810054?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/pabt/~3/N9No0sLOr6k/flash-builder-burrito.html" title="Flash Builder Burrito" /><author><name>Евгений Симонов</name><uri>https://profiles.google.com/103035028933726102028</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-O8I1h_klPKM/AAAAAAAAAAI/AAAAAAAAAAA/nXxr79r2scI/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://racer242.blogspot.com/2011/01/flash-builder-burrito.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0QDRX8zcCp7ImA9Wx5aEUk.&quot;"><id>tag:blogger.com,1999:blog-25528681162651304.post-3445294831897794643</id><published>2010-11-07T18:28:00.003+03:00</published><updated>2010-11-07T18:56:14.188+03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-11-07T18:56:14.188+03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Eclipse" /><category scheme="http://www.blogger.com/atom/ns#" term="Обзоры" /><title>Надоел логгер FD</title><content type="html">Надоело постоянно висящее окно FlashDevelop, который я пользую только для просмотра лога Flash Player.&lt;div&gt;Хочется просто обычный логгер - легкий и под всегда рукой.&lt;/div&gt;&lt;div&gt;Смотрим, что есть по этой теме в гугле.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Первое, на что я западаю - &lt;a href="http://code.google.com/p/flash-thunderbolt/"&gt;ThunderBolt AS3&lt;/a&gt;. AIR-приложение, которое заточено как раз под нашу задачу. &lt;a href="http://code.google.com/p/flash-thunderbolt/downloads/detail?name=ThunderBoltAS3Console_v.2.2.2.air"&gt;Качаем&lt;/a&gt;, ставим, смотрим.&lt;/div&gt;&lt;div&gt;Продвинутый интерфейс, лог фильтруется по разным категориям. &lt;/div&gt;&lt;div&gt;Местоположение лог-файла предлагается указать драг-дропом самого файла flashlog.txt прямо в приложение.&lt;/div&gt;&lt;div&gt;Всё вроде бы замечательно. Но. Как только я запустил Громовой Шуруп, логгер FlashDewelop работать отказался. По-видимому, он держит файл лога занятым, не давая другим его открывать. Да и сам болтяра показывает лог как-то не стабильно, вызывая к себе недоверие.&lt;/div&gt;&lt;div&gt;В общем - всё не супер.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Дальнейшие поиски приложений - логгеров ни к чему хорошему меня не привели.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Я работаю в основном на Flex Builder под Eclipse. Как хорошо было бы иметь под рукой логгер в виде плагина под эту чудесную платформу! &lt;/div&gt;&lt;div&gt;И, несомненно, таковой тут же нашелся: плагин для Eclipse: &lt;a href="http://tekkie.flashbit.net/flash/logwatcher-as-a-cross-platform-flash-debugger-in-eclipse"&gt;LogWatcher as a cross-platform Flash debugger in Eclipse&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;a href="http://sourceforge.net/projects/graysky/files/LogWatcher/1.4.0.1/logwatcher_1.4.0.1.zip/download"&gt;Качаем&lt;/a&gt;, ставим согласно инструкции, смотрим.&lt;/div&gt;&lt;div&gt;Теперь рядом с закладочкой Console, у меня всегда перед глазами закладочка LogWatcher, где в реальном времени выводится содержимое лога.&lt;/div&gt;&lt;div&gt;Здесь можно подключиться и к другим логам, например, policyfiles.txt, что тоже может пригодиться.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;В общем, получили окошко, аналогичное FD Logs, но под Eclipse, что очень радует.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Но поиски хорошего специализированного логгера еще не окончены.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25528681162651304-3445294831897794643?l=racer242.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/kOO_NJjGSiuDxhhddtM1FTOZD6Y/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/kOO_NJjGSiuDxhhddtM1FTOZD6Y/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/kOO_NJjGSiuDxhhddtM1FTOZD6Y/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/kOO_NJjGSiuDxhhddtM1FTOZD6Y/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/pabt/~4/kcbx_EHWyLY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://racer242.blogspot.com/feeds/3445294831897794643/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=25528681162651304&amp;postID=3445294831897794643" title="Комментарии: 4" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/25528681162651304/posts/default/3445294831897794643?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/25528681162651304/posts/default/3445294831897794643?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/pabt/~3/kcbx_EHWyLY/fd.html" title="Надоел логгер FD" /><author><name>Евгений Симонов</name><uri>https://profiles.google.com/103035028933726102028</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-O8I1h_klPKM/AAAAAAAAAAI/AAAAAAAAAAA/nXxr79r2scI/s512-c/photo.jpg" /></author><thr:total>4</thr:total><feedburner:origLink>http://racer242.blogspot.com/2010/11/fd.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0UFRnsyfCp7ImA9WxBaFUg.&quot;"><id>tag:blogger.com,1999:blog-25528681162651304.post-1690288195232601204</id><published>2010-03-23T15:07:00.006+03:00</published><updated>2010-03-26T01:13:37.594+03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-03-26T01:13:37.594+03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Actionscript 3.0" /><category scheme="http://www.blogger.com/atom/ns#" term="Идеи" /><category scheme="http://www.blogger.com/atom/ns#" term="Справка" /><title>Как получить заголовки ответа сервера</title><content type="html">Сегодня столкнулся с проблемкой. Приложение посылает запрос на сервер, и сервер отвечает только заголовками (&lt;i&gt;header&lt;/i&gt;), в моем случае - &lt;i&gt;Location http://.....&lt;/i&gt;&lt;div&gt;Как мне получить данные, содержащиеся в заголовке? Функции AS3 такой возможности не предоставляют. То есть - при обычной загрузке, с использованием URLLoader/HTTPService мы получаем содержимое ресурса, указанного в &lt;i&gt;Location&lt;/i&gt;. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Однако, после непродолжительных поисков, я наткнулся на статью &lt;a href="http://www.abdulqabiz.com/blog/archives/2006/03/03/http-authentication-for-httpget-requests-using-actionscript-3/"&gt;HTTP Authentication for HTTP/GET requests using ActionScript 3&lt;/a&gt;, в которой &lt;a href="http://www.abdulqabiz.com/blog/"&gt;автор &lt;/a&gt;представляет свою библиотечку &lt;a href="http://www.abdulqabiz.com/files/HTTPURLLoader.zip"&gt;HTTPURLLoader&lt;/a&gt;, которая при помощи сокетов осуществляет загрузку и заголовков и данных ответа сервера.&lt;/div&gt;&lt;div&gt;Спасибо ему за это и низкий поклон.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25528681162651304-1690288195232601204?l=racer242.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/CXtcLJ30s-BhgBAROHhtev_5B60/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/CXtcLJ30s-BhgBAROHhtev_5B60/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/CXtcLJ30s-BhgBAROHhtev_5B60/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/CXtcLJ30s-BhgBAROHhtev_5B60/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/pabt/~4/DG1CeRBrT5A" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://racer242.blogspot.com/feeds/1690288195232601204/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=25528681162651304&amp;postID=1690288195232601204" title="Комментарии: 1" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/25528681162651304/posts/default/1690288195232601204?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/25528681162651304/posts/default/1690288195232601204?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/pabt/~3/DG1CeRBrT5A/blog-post_23.html" title="Как получить заголовки ответа сервера" /><author><name>Евгений Симонов</name><uri>https://profiles.google.com/103035028933726102028</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-O8I1h_klPKM/AAAAAAAAAAI/AAAAAAAAAAA/nXxr79r2scI/s512-c/photo.jpg" /></author><thr:total>1</thr:total><feedburner:origLink>http://racer242.blogspot.com/2010/03/blog-post_23.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEIHRHk4cCp7ImA9WxBbF0o.&quot;"><id>tag:blogger.com,1999:blog-25528681162651304.post-4049706563373083040</id><published>2010-03-16T23:07:00.003+03:00</published><updated>2010-03-16T23:48:55.738+03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-03-16T23:48:55.738+03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Обзоры" /><title>Растровый редактор</title><content type="html">Сегодня мне понадобился редактор растрового изображения.&lt;div&gt;Поиск готовых решений не дал большого изобилия результатов. Да и не надо. Всего одна библиотека, которая попалась в наши сети превосходно решает нашу задачу:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.nocircleno.com/graffiti/"&gt;The Graffiti AS3 Bitmap Drawing Library&lt;/a&gt; - отличный движок с открытым исходным кодом и примерами. Есть две версии - более старая 1.1 (для FP9+) и новая 2.5 (для FP10+). На странице проекта есть таблица сравнения возможностей версий.&lt;br /&gt;Я выбираю версию 1.1, поскольку мой проект для FP9. Кстати, примеры на сайте представлены для более свежей версии, но принцип использования аналогичный, поэтому первый пример легко интуитивно подстроить под свои нужды.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;Параллельно напал на интересные ресурсы:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://musprite.sourceforge.net/"&gt;µSprite AS3 Vector Editor&lt;/a&gt; - графический AIR-редактор с богатыми функциями, способный преобразовать нарисованное в код AS3/Haxe. &lt;/li&gt;&lt;li&gt;&lt;a href="http://www.pixlr.com/editor/"&gt;Pixlr photo editor&lt;/a&gt; - онлайновый графический редактор.&lt;/li&gt;&lt;li&gt;&lt;a href="http://blog.formatlos.de/2008/05/28/bitmapdataunlimited/"&gt;BitmapDataUnlimited&lt;/a&gt; - растр без ограничения геометрического размера.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25528681162651304-4049706563373083040?l=racer242.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/gxl4bOcY9JG9VEqZ3IqLIEvi-ms/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/gxl4bOcY9JG9VEqZ3IqLIEvi-ms/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/gxl4bOcY9JG9VEqZ3IqLIEvi-ms/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/gxl4bOcY9JG9VEqZ3IqLIEvi-ms/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/pabt/~4/O_c0776y1NY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://racer242.blogspot.com/feeds/4049706563373083040/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=25528681162651304&amp;postID=4049706563373083040" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/25528681162651304/posts/default/4049706563373083040?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/25528681162651304/posts/default/4049706563373083040?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/pabt/~3/O_c0776y1NY/blog-post_16.html" title="Растровый редактор" /><author><name>Евгений Симонов</name><uri>https://profiles.google.com/103035028933726102028</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-O8I1h_klPKM/AAAAAAAAAAI/AAAAAAAAAAA/nXxr79r2scI/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://racer242.blogspot.com/2010/03/blog-post_16.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DU4HQXsyeip7ImA9WxBbFUU.&quot;"><id>tag:blogger.com,1999:blog-25528681162651304.post-8177263254115364712</id><published>2010-03-14T19:07:00.010+03:00</published><updated>2010-03-14T20:32:10.592+03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-03-14T20:32:10.592+03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Обзоры" /><title>Графические трансформеры</title><content type="html">Сегодня займусь подбором хорошего инструмента для трансформации изображения. &lt;div&gt;Точнее говоря - при наличии на экране flash-приложения некоторого множества изображений, необходимо иметь возможность модифицировать их геометрические параметры - позицию, масштаб, поворот.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Посмотрим, чем сегодня пользуются наши братья для трансформирования визуальных объектов.&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Первым попадается нам вот такой пример: &lt;a href="http://talkxe.com/?p=63"&gt;AS3 Transform Tool for scaling, rotating components containing text controls in Flex&lt;/a&gt;. Всё весьма &lt;a href="http://talkxe.com/demo/transtool/Tool1.html"&gt;красиво&lt;/a&gt;, но без исходников. Зато, идет прямая наводка на прародителя этой демки, о котором и поговорим позже. &lt;/li&gt;&lt;li&gt;Замечательная старая &lt;a href="http://www.senocular.com/demo/TransformToolAS3/TransformTool.html"&gt;демка&lt;/a&gt;, от &lt;a href="http://www.senocular.com/"&gt;Senocular&lt;/a&gt;. Есть и &lt;a href="http://www.senocular.com/demo/TransformToolAS3/TransformHalloween.zip"&gt;исходный код&lt;/a&gt;. Удивительно, что такая старинная разработка дает начало целому семейству трансформеров.&lt;br /&gt;Скачиваем, запускаем. Пример под CS3 AS3 FP9. Всё работает прекрасно, поигрался с настройками трансформера - превосходно.&lt;br /&gt;Есть возможность таскать, масштабировать, наклонять, поворачивать, менять положение центра трансформаций. Всё удобно и отлажено.&lt;br /&gt;Однако, просматривая отзывы к &lt;a href="http://joelhooks.com/2008/04/20/using-the-senocular-as3-transformtool-in-flex/"&gt;постам относительно этого движка&lt;/a&gt;, многие пишут что недовольны тем, что он не подходит для использования во Flex-приложении.&lt;/li&gt;&lt;li&gt;И вот, Senocular TransformTool модифицируют под Flex2: &lt;a href="http://www.sephiroth.it/weblog/archives/2007/07/transformtool_modification.php"&gt;senocular.com TransformTool modification&lt;/a&gt;. Так же прикладываются &lt;a href="http://www.sephiroth.it/test/flex/2/transform_tool/srcview/index.html"&gt;исходники&lt;/a&gt;.&lt;br /&gt;В отличии от предыдущего примера, здесь трансформируются не Sprite-объекты, а UIComponent-объекты, то есть flex-компоненты.&lt;br /&gt;Создаем Flex-проект, копируем в него исходники, запускаем. Работает. Картинки модифицируются прекрасно, а вот компоненты, содержащие текст (например обычная кнопка) трансформируются не очень то корректно. Может быть это по причине того, что необходимо внедрить шрифт, а может быть нужно что-то доработать (ведь первый наш пример работает вполне себе нормально).&lt;/li&gt;&lt;li&gt;Продолжение работ над совершенствованием движка: &lt;a href="http://www.sephiroth.it/weblog/archives/2009/06/multiple_objects_using_senocular_tran.php"&gt;Multiple objects using Senocular TransformTool&lt;/a&gt;. Так же имеется исходный код. Однако, он уже написан под Flex SDK 4, поэтому я не стал продолжать его изучение.&lt;/li&gt;&lt;li&gt;Еще один мощный движок для трансформаций под Flex: &lt;a href="http://www.rogue-development.com/objectHandles.html"&gt;Object Handlers&lt;/a&gt;. Здесь множество ссылок относительно проекта - и документация &lt;a href="http://www.rogue-development.com/objecthandles/asdocs/"&gt;ASDoc&lt;/a&gt;, и &lt;a href="http://www.rogue-development.com/objectHandles/diagramTutorial/index.html"&gt;обучающее видео&lt;/a&gt;, и проект на &lt;a href="http://code.google.com/p/flex-object-handles/downloads/list"&gt;Google Code&lt;/a&gt;.&lt;br /&gt;Попробовал скачать 2ю версию движка, поставил и сразу получил множество ошибок. Во-первых, половина примеров просит Degrafa, во вторых лезут еще две ошибки, которые поправить интуитивно не получается.&lt;br /&gt;Поэтому задвигаю 2ю версию и качаю последний релиз 1й версии. Здесь всё стабильно, всё работает без проблем. За исключением косяка вращения. Почему-то в примере, в разделе Rotating трансформер не имеет вращающей точки. Это легко исправляется добавлением соответствующего параметра, однако, появление активной точки для поворота сильно не обрадовало, а точнее - ее неуместное размещение рядом с правой точкой горизонтального растягивания.&lt;br /&gt;Зато всё остальное в этом проекте обещает очень многое, особенно - работа с &lt;a href="http://rogue-development.com/objectHandles/degrafaExample/OH_Degrafa.html"&gt;Degrafa&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;Еще одна интересная разработка: &lt;a href="http://theflashblog.com/?p=218"&gt;Distort Image Transform Tool&lt;/a&gt;. Здесь изображение можно произвольно трансформировать таская его за углы. Кстати, еще и под Flash 8. &lt;/li&gt;&lt;li&gt;Упомяну так же и коммерческую версию трансформера: &lt;a href="http://www.greensock.com/transformmanageras3/"&gt;TransformManager&lt;/a&gt;. Выглядит вполне себе замечательно, не сильно лучше предыдущих претендентов, но, зато более причесано. И, что впечатляет - есть возможность объединять для трансформации сразу несколько объектов.&lt;/li&gt;&lt;/ul&gt;Итак, для своей задачи, я уже выбрал себе движок от Senocular, поскольку мне нет необходимости трансформировать flex-компоненты - я буду работать исключительно с графикой. Поэтому, область графических трансформаций лучше убрать в чистый AS3-модуль и уже его вставлять во Flex в виде компонента, получающего извне данные и команды, и отдающего результирующий графический образ в виде BitmapData или контейнера с набором данных о графических объектах и их трансформациях.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25528681162651304-8177263254115364712?l=racer242.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/sVrFeltob_oM1DHFMuR7F_T_6kQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/sVrFeltob_oM1DHFMuR7F_T_6kQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/sVrFeltob_oM1DHFMuR7F_T_6kQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/sVrFeltob_oM1DHFMuR7F_T_6kQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/pabt/~4/EPjcW6xar9c" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://racer242.blogspot.com/feeds/8177263254115364712/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=25528681162651304&amp;postID=8177263254115364712" title="Комментарии: 4" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/25528681162651304/posts/default/8177263254115364712?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/25528681162651304/posts/default/8177263254115364712?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/pabt/~3/EPjcW6xar9c/blog-post.html" title="Графические трансформеры" /><author><name>Евгений Симонов</name><uri>https://profiles.google.com/103035028933726102028</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-O8I1h_klPKM/AAAAAAAAAAI/AAAAAAAAAAA/nXxr79r2scI/s512-c/photo.jpg" /></author><thr:total>4</thr:total><feedburner:origLink>http://racer242.blogspot.com/2010/03/blog-post.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0QBSH8ycCp7ImA9WxBbE0k.&quot;"><id>tag:blogger.com,1999:blog-25528681162651304.post-6464371347181101052</id><published>2010-03-11T00:50:00.011+03:00</published><updated>2010-03-12T01:09:19.198+03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-03-12T01:09:19.198+03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Обзоры" /><title>Выбираем листалку страниц для Flex-проекта</title><content type="html">&lt;div&gt;&lt;div&gt;С тех пор, как впервые мы увидели этот культовый гаджет PageFlip, созданный еще для 6й версии (а может и еще ранней) FP, немало воды утекло. Кстати, &lt;a href="http://pageflip.hu/free.php"&gt;здесь&lt;/a&gt; есть &lt;a href="http://pageflip.hu/pageflip_v225_source.php"&gt;ссылка на исходник&lt;/a&gt; на одну из старых версий. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Сейчас открылось множество сервисов для онлайн-публикации книг и журналов, в которых книги листаются именно по принципу PageFlip. Тема действительно популярная и по ней существует приличное количество наработок. Причем, в подавляющем большинстве, это некие готовые flash-движки, при помощи которых можно создавать книги вообще без участия flash-разработчика - одним лишь конфигурированием.&lt;/div&gt;&lt;div&gt;Нас интересуют наработки с открытым исходным кодом и желательно для Flex. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Итак, начинаем поиски.&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Многие ссылки ведут сюда: &lt;a href="http://www.quietlyscheming.com/blog/components/flexbook/"&gt;http://www.quietlyscheming.com/blog/components/flexbook/&lt;/a&gt;.&lt;br /&gt;Движок &lt;b&gt;FlexBook&lt;/b&gt; явно не нов - март 2007, хотя последний коммент в блоге датируется 2009м годом.&lt;br /&gt;&lt;a href="http://demo.quietlyscheming.com/book/app.html"&gt;Демка&lt;/a&gt; показывает возможности движка, а в контекстном меню flash есть ссылка на архив с исходным кодом.&lt;br /&gt;Исходный код поставляется в виде Flex-проекта, однако при импорте, FlexBuilder предупреждает о том, что версия SDK в проекте указана старая, а так же о том, что есть устаревшие свойства flex-компонентов. Кроме того, в настройках есть ссылка на не существующую библиотеку, но это лечится путем удаления некорректной строки из свойств проекта.&lt;br /&gt;Код компилируется и работает превосходно. &lt;/li&gt;&lt;li&gt;Следующий претендент: &lt;a href="http://www.rubenswieringa.com/blog/flex-book-component-beta"&gt;http://www.rubenswieringa.com/blog/flex-book-component-beta&lt;/a&gt;.&lt;br /&gt;Называется так же - &lt;b&gt;FlexBook&lt;/b&gt;. И так же не свеж - июль 2007, зато комменты датируются мартом 2010, то есть актуальность на лицо.&lt;br /&gt;&lt;a href="http://www.rubenswieringa.com/code/as3/flex/Book/"&gt;Демка&lt;/a&gt; так же вполне адекватная и в контекстном меню тоже есть &lt;a href="http://www.rubenswieringa.com/code/as3/flex/Book/source/index.html"&gt;ссылка на исходный код&lt;/a&gt;.&lt;br /&gt;Создаем новый Flex-проект, копируем туда код, указываем что компилить и запускаем. Никаких проблем, получаем работающую книгу. Выглядит привлекательнее предыдущего решения.&lt;/li&gt;&lt;li&gt;Коммерческая разработка: &lt;b&gt;FlashPageFlip&lt;/b&gt;. Есть бесплатная версия - &lt;a href="http://www.flashpageflip.com/FreeFPF.asp"&gt;Free FlashPageFlip&lt;/a&gt;. Скачиваем &lt;a href="http://www.flashpageflip.com/downloads/DownloadFree.asp"&gt;бесплатную версию&lt;/a&gt;.&lt;br /&gt;Бесплатная версия  не предоставляет исходников. Зато здесь есть всё, чтобы сделать книгу из заготовок. Рассчитан на 8ю версию FP. &lt;/li&gt;&lt;li&gt;Расширение Flash CS -  &lt;b&gt;PageTurn3D CS&lt;/b&gt;: &lt;a href="http://www.adobe.com/cfusion/exchange/index.cfm?event=extensionDetail&amp;amp;extid=1730524"&gt;здесь&lt;/a&gt;&lt;b&gt;. &lt;/b&gt;Не стал ставить, хотя &lt;a href="http://www.digicrafts.com.hk/components/page-turn3d-cs"&gt;демка&lt;/a&gt; выглядит симпатично.&lt;/li&gt;&lt;li&gt;OpenSource движок &lt;b&gt;MegaZine3:&lt;/b&gt; &lt;a href="http://megazine.mightypirates.de/"&gt;http://megazine.mightypirates.de/&lt;/a&gt;. Судя по описаниям, и демке, достаточно мощный движок. Есть доступ к SVN, есть довольно обширный API.&lt;br /&gt;Общее впечатление от демки (которую можно только скачать как Zip) безусловно очень положительное. Сам по себе скачиваемый продукт не является библиотекой. Это готовое решение, глубоко конфигурируемое, способное отображать разнообразный контент пользователя.&lt;br /&gt;Предлагается скачать SWC, но ссылка некорректная. Исходники можно скачать с &lt;a href="http://svn.mightypirates.de/megazine/"&gt;SVN&lt;/a&gt;. Имеется форум с достаточно оживленными обсуждениями.&lt;br /&gt;В общем, при желании, можно разобраться с этой системой, хотя она, как большинство openSource-проектов, выглядит как темный лес. К тому же не предоставляется примеров использования API. Но это уже тема для отдельной статьи.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;Наткнулся на &lt;a href="http://flashspeaksactionscript.com/flip-a-page-with-these-flash-page-flippers/"&gt;пост&lt;/a&gt;, в котором есть небольшой обзор листалок. Ничего особенного, зато дает общее представление о коммерческих продуктах. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Итак, моя задача состоит в интеграции листалки во Flex-проект. Соответственно есть два пути:&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;Непосредственно использовать библиотеку классов&lt;/li&gt;&lt;li&gt;Интегрировать готовое решение путем внедрения главного SWF-файла во Flex-приложение и каким-то косвенным путем управлять контентом страниц.&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;Я рассматриваю первый вариант и выбираю движок FlexBook от Ruben Swieringa. Всё. Буду докладывать с места событий.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25528681162651304-6464371347181101052?l=racer242.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/fvoKRKGTqBaEWzbk2Ddi3IXF7Gs/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/fvoKRKGTqBaEWzbk2Ddi3IXF7Gs/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/fvoKRKGTqBaEWzbk2Ddi3IXF7Gs/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/fvoKRKGTqBaEWzbk2Ddi3IXF7Gs/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/pabt/~4/NRyhqW8uYaQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://racer242.blogspot.com/feeds/6464371347181101052/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=25528681162651304&amp;postID=6464371347181101052" title="Комментарии: 5" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/25528681162651304/posts/default/6464371347181101052?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/25528681162651304/posts/default/6464371347181101052?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/pabt/~3/NRyhqW8uYaQ/flash.html" title="Выбираем листалку страниц для Flex-проекта" /><author><name>Евгений Симонов</name><uri>https://profiles.google.com/103035028933726102028</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-O8I1h_klPKM/AAAAAAAAAAI/AAAAAAAAAAA/nXxr79r2scI/s512-c/photo.jpg" /></author><thr:total>5</thr:total><feedburner:origLink>http://racer242.blogspot.com/2010/03/flash.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0cARno8cSp7ImA9WxBVF0U.&quot;"><id>tag:blogger.com,1999:blog-25528681162651304.post-4627569341062896755</id><published>2010-01-30T15:55:00.027+03:00</published><updated>2010-02-21T23:44:07.479+03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-02-21T23:44:07.479+03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Обзоры" /><category scheme="http://www.blogger.com/atom/ns#" term="API ВКонтакте" /><title>Что нам дает API ВКонтакте</title><content type="html">Соцсети уже прочно вошли в наш быт и собрали миллионы пользователей. И нашему брату флэшеру открылись новые области для творчества. В частности - Flash-приложения сетевого проекта &lt;a href="http://vkontakte.ru/"&gt;ВКонтакте&lt;/a&gt;, для которых создан специальный API, позволяющий легко интегрировать приложение в систему ВКонтакте.&lt;div&gt;Итак, что же нам предлагает API ВКонтакте - давайте разберемся.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;Обзор&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;Как обычно, для начала почитаем, что об этом пишут наши коллеги. &lt;/div&gt;&lt;div&gt;Однако, никаких вразумительных статей, кроме материалов в рамках самого "ВКонтакте" найти не смог. Если кто-нибудь видел таковые - пожалуйста, киньте ссылочку в комменты. Итак:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Первый ресурс, важный для разработчика, это, собственно раздел "&lt;a href="http://vkontakte.ru/pages.php?act=developers"&gt;Разработчикам&lt;/a&gt;" на самом ВКонтакте.&lt;br /&gt;Здесь нам обещают миллионы долларов, основные ссылки по теме и небольшое описание, из которого мы уже можем почерпнуть, что:&lt;br /&gt;- Приложение может иметь границы до 827х4050.&lt;br /&gt;- Приложение может иметь доступ к пользовательскому левому меню, счетчикам, обычным и SMS-уведомлениям, профилю, фотографиям, друзьям, рейтингу, аудиозаписям пользователей – и многому другому.&lt;br /&gt;- Работа по совершенствованию API ведется непрерывно.&lt;/li&gt;&lt;li&gt;&lt;a href="http://vkontakte.ru/club1"&gt;Клуб Flash API&lt;/a&gt; &lt;/li&gt;&lt;li&gt;API ВКонтакте на flasher.ru: &lt;a href="http://www.flasher.ru/forum/forumdisplay.php?f=61"&gt;API приложений и сред&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;Возможности API ВКонтакте&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;Попробуем выявить возможности приложений ВКонтакте, проанализировав функции API.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;&lt;b&gt;Работа с пользовательскими данными&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;Приложение имеет доступ к следующим данным:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Установил ли пользователь, который просматривает приложение себе на страницу данное приложение&lt;/li&gt;&lt;li&gt;Данные по любому пользователю, на основании его ID:&lt;br /&gt;- имя,&lt;br /&gt;- фамилия,&lt;br /&gt;- псевдоним,&lt;br /&gt;- пол,&lt;br /&gt;- дата рождения,&lt;br /&gt;- город,&lt;br /&gt;- страна,&lt;br /&gt;- часовой пояс,&lt;br /&gt;- url-адреса фото малого, среднего и большого размеров,&lt;br /&gt;- известен ли его мобильный телефон,&lt;br /&gt;- рейтинг&lt;/li&gt;&lt;li&gt;Баланс &lt;span class="Apple-style-span"  style="color:#666666;"&gt;пользователя на счету приложения&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Доступ к данным пользователя, просматривающего приложение:&lt;br /&gt;- разрешить отправлять ему уведомления,&lt;br /&gt;- доступ к друзьям,&lt;br /&gt;- доступ к фотографиям,&lt;br /&gt;- доступ к аудиозаписям,&lt;br /&gt;- доступ к предложениям,&lt;br /&gt;- доступ к вопросам,&lt;br /&gt;- доступ к wiki-страницам,&lt;br /&gt;- доступ к меню слева,&lt;br /&gt;- публикация на стенах пользователей.&lt;/li&gt;&lt;li&gt;Список групп, в которых состоит пользователь с общей информацией о каждой группе.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;У каждого пользователя ВКонтакте есть друзья - другие пользователи ВКонтакте. Доступные данные друзей пользователя:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Список друзей текущего пользователя.&lt;/li&gt;&lt;li&gt;Список друзей текущего пользователя, которые уже установили данное приложение.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;Приложение может так же осуществлять следующие действия:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Поднять рейтинг пользователя от имени приложения&lt;/li&gt;&lt;li&gt;Если пользователь установил приложение в меню слева, приложение может задать краткое имя приложения, а так же вывести счетчик рядом с названием приложения - например, счетчик уведомлений.&lt;/li&gt;&lt;li&gt;Устанавливать и считывать строку статуса приложения.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;&lt;b&gt;Работа с фотографиями пользователя&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;Пользователь ВКонтакте может создавать множество альбомов с фотографиями в разделе "Мои Фотографии". API предоставляет широкий выбор возможностей по работе с альбомами и фотографиями.&lt;/div&gt;&lt;div&gt;Фотографии должны иметь формат JPG, PNG или GIF. &lt;/div&gt;&lt;div&gt;Приложение может получить:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Список фото-альбомов с общими данными о каждом альбоме.&lt;/li&gt;&lt;li&gt;Список фотографий из какого-либо альбома (или непосредственно по ID фотографии) с набором ссылок на изображения различных размеров и качества. &lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;Приложение может осуществлять следующие действия с альбомами и фотографиями:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Создавать альбом (с описанием и контролем доступа к нему).&lt;/li&gt;&lt;li&gt;Редактировать данные существующего альбома.&lt;/li&gt;&lt;li&gt;Изменять порядок в списке альбомов.&lt;/li&gt;&lt;li&gt;Изменять порядок фотографий в альбоме.&lt;/li&gt;&lt;li&gt;Переносить фотографии из альбома в альбом.&lt;/li&gt;&lt;li&gt;Делать фотографию обложкой альбома.&lt;/li&gt;&lt;li&gt;Загружать фотографии на сервер ВКонтакте, на стену пользователя, на страницу пользователя.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;b&gt;&lt;i&gt;Работа с аудиозаписями пользователя&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;Пользователь может загружать аудиозаписи и прослушивать их в разделе "Мои Аудиозаписи". &lt;/div&gt;&lt;div&gt;Аудиозапись должна быть в формате MP3, не превышать 10Мб и не нарушать авторских прав.&lt;/div&gt;&lt;div&gt;API предоставляет широкий выбор возможностей для работы с аудиозаписями:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Получать список аудиозаписей пользователя или группы с общей и подробной информацией о каждой записи.&lt;/li&gt;&lt;li&gt;Получать текст песен аудиозаписей.&lt;/li&gt;&lt;li&gt;Осуществлять поиск по аудиозаписям.&lt;/li&gt;&lt;li&gt;Загружать, удалять, восстанавливать удаленные аудиозаписи.&lt;/li&gt;&lt;li&gt;Редактировать данные аудиозаписи.&lt;/li&gt;&lt;li&gt;Добавлять аудиозапись на страницу пользователя или группы.&lt;/li&gt;&lt;li&gt;Менять порядок следования аудиозаписей.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;b&gt;&lt;i&gt;Работа с видеозаписями пользователя&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;API позволяет получать список видеозаписей пользователей, групп с общей информацией о каждой видеозаписи.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;i&gt;Стена пользователя&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;Приложение может выводить на стену пользователя запись, содержащую текст, а так же изображение из альбома пользователя или только что загруженное на сервер ВКонтакте изображение.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;i&gt;Голоса ВКонтакте&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;Собственная валюта проекта ВКонтакте - голоса. Каждый пользователь, а так же приложение имеет свой платежный баланс, на котором может находиться какое-то количество голосов.&lt;/div&gt;&lt;div&gt;API предоставляет приложению доступ к следующим функциям:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Получить платежный баланс (количество голосов) приложения.&lt;/li&gt;&lt;li&gt;Получить платежный баланс (количество голосов) пользователя.&lt;/li&gt;&lt;li&gt;Перевести голоса со счета приложения на счет пользователя.&lt;/li&gt;&lt;li&gt;Перевести голоса со счета пользователя на счет приложения.&lt;/li&gt;&lt;li&gt;Перевести голоса со счета пользователя на счет другого пользователя в рамках приложения.&lt;/li&gt;&lt;li&gt;Просмотр историй транзакций по переводу голосов между пользователями и приложением&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;b&gt;&lt;i&gt;Работа с SMS&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;Приложение ВКонтакте может задействовать столь мощные сервисы, как отправка и прием SMS:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Отправка SMS-уведомления. При этом со счета приложения списывается 0.1 голоса.&lt;/li&gt;&lt;li&gt;Просмотр списка SMS-сообщений, полученных от пользователей приложением. &lt;/li&gt;&lt;li&gt;Просмотр истории SMS-уведомлений, посланных приложением.&lt;/li&gt;&lt;/ul&gt;Отправка SMS-сообщения бесплатна (стоимость обычного SMS-сообщения). Отправка осуществляется на телефон +7 921 000 00 07, а чтобы приложение получило свое сообщение, API предоставляет возможность установить приложению префикс, который пользователь должен указать в начале своего SMS-сообщения.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;i&gt;Работа с сервисом "Предложения"&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;С помощью сервиса "Предложения", пользователь получает возможность создать свое уникальное предложение. Это предложение смогут увидеть все пользователи ВКонтакте -этот сервис независим от личной странички. Любое предложение начинается со слов "Хотели бы Вы", далее следует сам текст, а в конце уже стоит вопросительный знак. Пользователи могут посматривать предложения других пользователей, принимать чужое предложение нажатием варианта «Да, конечно» или отказываться нажатием варианта «Нет».&lt;/div&gt;&lt;div&gt;Итак, функции для работы с предложениями:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Редактировать, открыть для общего доступа, и закрыть предложение пользователя, просматривающего приложение.&lt;/li&gt;&lt;li&gt;Просматривать, искать предложения пользователей.&lt;/li&gt;&lt;li&gt;Принимать и отклонять предложения пользователей.&lt;/li&gt;&lt;li&gt;Просматривать ответы на предложение пользователя.&lt;/li&gt;&lt;li&gt;Получать список ответов на предложения, принятые пользователем.&lt;/li&gt;&lt;li&gt;Удаление и пометка о прочтении ответов пользователей.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;b&gt;&lt;i&gt;Работа с сервисом "Вопросы"&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;Аналогичный предыдущему сервис, позволяющий задавать вопросы и получать на них ответы от других пользователей. В API так же есть всё необходимое для управление этим сервисом из приложений.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;i&gt;Работа с Wiki-страницами&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;Пользователям предоставляется система редактирования страниц, которая позволяет участникам групп совместно создавать бесконечное количество страниц с перекрестными ссылками. Таким образом, пользователи могут создавать в группах библиотеки или мини-энциклопедии. Кроме того, пользователи могут использовать особую wiki-разметку для оформления страниц.&lt;/div&gt;&lt;div&gt;Приложения имеют возможность работать с Wiki-страницами:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Получать текст и полную информацию о wiki-странице.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Редактировать и сохранять текст и настройки wiki-страницы.&lt;/li&gt;&lt;li&gt;Получать список wiki-страниц в группе.&lt;/li&gt;&lt;li&gt;Транслировать wiki-разметку в html-разметку.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;i&gt;Организация чата&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;API позволяет создавать в приложении чат, используя очередь сообщений - 127 сообщений. Для этого предусмотрены функции добавления сообщения в очередь и просмотра всей очереди сообщений.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;i&gt;Сохранение игровых рекордов&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;API предусматривает специальные функции для сохранения результатов игры пользователя и получения списка результатов. &lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;i&gt;Показ рекламы&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;API предоставляет возможность показывать в приложениях рекламу:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Показ &lt;a href="http://vkontakte.ru/help.php?page=target"&gt;таргетированной рекламы&lt;/a&gt;. (Пользователи могут создавать рекламные сообщения, которые показываются на страницах ВКонтакте. Приложение, показывающее рекламу зарабатывает голоса).&lt;/li&gt;&lt;li&gt;Показ &lt;a href="http://vkontakte.ru/pages.php?o=-1&amp;amp;p=%CF%F0%FF%EC%FB%E5%20%EE%E1%FA%FF%E2%EB%E5%ED%E8%FF%20%EF%F0%E8%EB%EE%E6%E5%ED%E8%E9"&gt;прямых объявлений приложений&lt;/a&gt;. (Разработчики могут рекламировать свои приложения в других приложениях. При этом голоса так же начисляются на баланс приложения).&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;i&gt;Работа с переменными&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;Для хранения данных, API предоставляет каждому приложению 4096 уникальных переменных по 255 байт. &lt;/div&gt;&lt;div&gt;Причем, переменные распределяются по следующим диапазонам:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Глобальные переменные: могут использоваться для данных, которые общие для всех экземпляров данного приложения, например, это таблица рекордов игрового приложения.&lt;/li&gt;&lt;li&gt;Переменные пользователя: эти переменные уникальны для каждого пользователя данного приложения и могут служить, к примеру, для сохранения игры пользователя.&lt;br /&gt;Примерно к половине переменных предоставляется доступ другим пользователям. Часть переменных является зарезервированной для разных нужд.&lt;/li&gt;&lt;li&gt;Переменные сессии: при работе с переменными, в запросе можно задавать идентификатор сессии (сеанса или комнаты). Таким образом, переменные этого диапазона будут общими для всех пользователей, которые в данный момент просматривают приложение. Соответственно, приложения могут осуществлять многопользовательское общение в реальном времени - чаты, многопользовательские игры и прочее.&lt;/li&gt;&lt;li&gt;Переменные, содержащие временные данные, которые уникальны для текущего просматриваемого приложения, и при его закрытии пропадут.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;Однако, количество переменных не велико - всего по 1024 переменные на диапазон, и это без учета зарезервированных переменных.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;b&gt;&lt;i&gt;Работа с удаленным сервером разработчика&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;Приложение ВКонтакте является обычным Flash-приложением и обладает одним большим недостатком. Его нельзя считать защищенным от взлома. Точнее говоря, затраты на взлом flash-приложения не столь велики как, к примеру взлом сервера. Существует достаточное количество программ SWF-декомпиляторов, при помощи которых можно легко получить исходный программный код, выяснить логику приложения и подтасовать запросы к API.&lt;/div&gt;&lt;div&gt;Поэтому, некоторые функции, которые были перечислены выше, работают только с удаленного сервера разработчика, минуя flash-приложение, а именно:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Работа с рейтингом пользователя&lt;/li&gt;&lt;li&gt;Вывод короткого статуса пользователя в приложении на его главной странице&lt;/li&gt;&lt;li&gt;Отправка уведомлений пользователя (только пользователям, которые установили себе данное приложение)&lt;/li&gt;&lt;li&gt;Работа с голосами (платежные операции)&lt;/li&gt;&lt;li&gt;Установка счетчика на приложение и работа с строкой статуса приложения&lt;/li&gt;&lt;li&gt;Отправка и просмотр SMS-уведомлений&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;Таким образом, чтобы иметь возможность осуществлять эти операции, приложение должно не напрямую обращаться к API, а запрашивать свой специально предусмотренный сервер-прослойку, который в свою очередь будет общаться с API ВКонтакте и выдавать приложению полученные данные.&lt;/div&gt;&lt;div&gt;А вообще, конечно, для крупных проектов, работающих в формате приложений ВКонтакте, безусловно, именно этот специальный сервер и должен являться "мозгом", отрабатывающим всю логику приложения. Flash-приложение в этом случае всего лишь "тонкий клиент", который лишь красиво отображает результат работы сервера.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;i&gt;Локализация приложений&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;Разработчики приложений имеют возможность переводить свои приложения на более чем 50 языков, используя &lt;a href="http://vkontakte.ru/pages.php?o=-1&amp;amp;p=%CB%EE%EA%E0%EB%E8%E7%E0%F6%E8%FF%20%EF%F0%E8%EB%EE%E6%E5%ED%E8%E9"&gt;платформу переводов ВКонтакте&lt;/a&gt;. В данный момент платформа на этапе тестирования и применима только для приложений с большим количеством пользователей.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;i&gt;Использование Flash-контейнера приложения&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;Альтернативный способ внедрения flash-приложения в страницу ВКонтакте - через Flash-контейнер.&lt;/div&gt;&lt;div&gt;Flash-контейнер предоставляет следующие возможности для приложения:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Открытие окон установки приложения, настроек, приглашения друзей и ввода голосов для оплаты услуг.&lt;/li&gt;&lt;li&gt;Получение событий об успешной установке приложения пользователем, изменении настроек и баланса пользователя внутри приложения.&lt;/li&gt;&lt;li&gt;Динамическое изменение размера окна приложения.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;div&gt;&lt;b&gt;&lt;i&gt;Другие возможности&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Открытие приложения на весь экран.&lt;/li&gt;&lt;li&gt;Субдомены vkontakte.ru и короткие имена в url приложения.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;Особенности API ВКонтакте&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;Итак, мы ознакомились со всеми возможностями, которые предоставляет API ВКонтакте. Хочется выделить особенности (скорее недостатки) API, с которыми мне пришлось столкнуться:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Взаимодействие с API происходит путем HTTP-запроса к php-скрипту. При этом, частота запросов не должна превышать 3х запросов в секунду. Такой механизм накладывает серьезное ограничение на динамику приложений, особенно многопользовательских.&lt;br /&gt;Проблема частично решается использованием новой функции API "execute", которая позволяет выполнять последовательность функций за один запрос к API.&lt;/li&gt;&lt;li&gt;Объемы сохраняемых данных приложения довольно скромны. &lt;/li&gt;&lt;/ul&gt;&lt;div&gt;Стоит так же упомянуть о статье "&lt;a href="http://vkontakte.ru/pages.php?o=-1&amp;amp;p=%CF%E0%F0%F2%ED%E5%F0%F1%EA%E0%FF%20%EC%EE%E4%E5%EB%FC%20%EC%E5%E6%E4%F3%20%C2%CA%EE%ED%F2%E0%EA%F2%E5%20%E8%20%F0%E0%E7%F0%E0%E1%EE%F2%F7%E8%EA%E0%EC%E8%20%EF%F0%E8%EB%EE%E6%E5%ED%E8%E9"&gt;Партнерская модель между ВКонтакте и разработчиками приложений&lt;/a&gt;", в которой есть много чего интересного для разработчика приложения:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Информация о том как можно заработать и как потратить голоса.&lt;/li&gt;&lt;li&gt;О том, что при обнале голосов ВКонтакте забирает половину средств на свои благородные цели.&lt;/li&gt;&lt;li&gt;А так же об аренде серверов в дата-центре ВКонтакте (на самом деле у партнеров).&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;Итог&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;Flash-приложения ВКонтакте обладают достаточно мощным API, который решает основные задачи, и может полностью обеспечить проекты средней сложности. Все остальные потребности, разработчик может решить, используя свой веб-сервер.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Разработка таких приложений всё более актуализируется, поскольку помимо возможности заработать на монетизации за счет показов рекламы, приложения ВКонтакте сами по себе могут являться мощнейшим инструментом вирусной рекламы. &lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25528681162651304-4627569341062896755?l=racer242.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/W9z7c55APkRiFem7MRqP1IeGnmA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/W9z7c55APkRiFem7MRqP1IeGnmA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/W9z7c55APkRiFem7MRqP1IeGnmA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/W9z7c55APkRiFem7MRqP1IeGnmA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/pabt/~4/5_Bx3uH49VI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://racer242.blogspot.com/feeds/4627569341062896755/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=25528681162651304&amp;postID=4627569341062896755" title="Комментарии: 5" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/25528681162651304/posts/default/4627569341062896755?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/25528681162651304/posts/default/4627569341062896755?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/pabt/~3/5_Bx3uH49VI/api.html" title="Что нам дает API ВКонтакте" /><author><name>Евгений Симонов</name><uri>https://profiles.google.com/103035028933726102028</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-O8I1h_klPKM/AAAAAAAAAAI/AAAAAAAAAAA/nXxr79r2scI/s512-c/photo.jpg" /></author><thr:total>5</thr:total><feedburner:origLink>http://racer242.blogspot.com/2010/01/api.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Dk8MQnk4fCp7ImA9WxBRGE0.&quot;"><id>tag:blogger.com,1999:blog-25528681162651304.post-215939282624548615</id><published>2010-01-06T22:05:00.000+03:00</published><updated>2010-01-06T22:08:03.734+03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-01-06T22:08:03.734+03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Mate" /><category scheme="http://www.blogger.com/atom/ns#" term="Flex" /><title>Знакомство с Mate</title><content type="html">&lt;p&gt;&lt;i&gt;&lt;b&gt;Вступление.&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;&lt;p&gt;Этот пост начал свое существование 7 месяцев назад. Именно тогда я решил взять на вооружение &lt;a href="http://mate.asfusion.com/"&gt;Mate Flex Framework&lt;/a&gt;. Но злостный непрекращающийся дидлайн никак не давал мне закончить статью. Год выдался трудным и на работе и дома (в конце ноября у нас родился 3й ребятёнок). Сейчас, на праздниках (&lt;b&gt;Всех с Новым Годом и Рождеством!&lt;/b&gt;) появилась свободная минутка, чтобы оглянуться назад.&lt;/p&gt;&lt;p&gt;Начало этого поста писалось в режиме осваивания Mate, т.е. с распухающим мозгом, силящимся понять принципы фреймворка и пытающимся подстроиться под новый стиль программирования. Затем, втягиваясь, я понемногу добавлял небольшие комментарии (&lt;i&gt;курсивом&lt;/i&gt;) и заметки. Сейчас я просто всё это немного причешу, добавлю небольшие комментарии, подведу итоги, и увидим, что получится.&lt;/p&gt;&lt;p&gt;Забегая вперед, хочу с удовольствием отметить, что освоение прошло успешно и пол-десятка проектов были запущены на каркасе Mate.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;i&gt;Теоретическое знакомство с Mate&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Наконец-то у меня появилось время копнуть &lt;a href="http://mate.asfusion.com/"&gt;Mate&lt;/a&gt;.&lt;br /&gt;И начну я с того, чтобы удостовериться в правильности выбора.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Мне, как Flex-разработчику, Mate в первую очередь интересен тем, что это фреймворк, базирующийся на Flex.&lt;/li&gt;&lt;li&gt;Очень хочется меньше кодить, но иметь при этом наглядный и прозрачный код.&lt;/li&gt;&lt;li&gt;Понятная документация, обучение и примеры. Теперь посмотрим, какие фреймворки сравнивают и что о них думают:&lt;br /&gt;- Здесь - &lt;a href="http://myflex.org/presentations/ComparingFlexFrameworks.pdf" target="_blank"&gt;presentation&lt;/a&gt; сравниваются Cairngorm, Mate и PureMVC. Забавно, что количество доводов "против" для Mate меньше чем для остальных.&lt;br /&gt;- Довольно объемная статья: &lt;a href="http://www.insideria.com/2009/01/frameworkquest-2008-part-6-the.html"&gt;FrameworkQuest 2008&lt;/a&gt;, а точнее, заключительная часть исследования фреймворков. Почти во всех качествах, Mate выигрывает.&lt;/li&gt;&lt;li&gt;Последним аргументом будет личный опыт. Приступим к тестовому проекту.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Для начала посмотрим видео: &lt;a href="http://nwebb.co.uk/videotutorials/mate_helloworld/"&gt;Mate Helloworld&lt;/a&gt;. Впечатления позитивные. Всё довольно очевидно и изящно. Здесь рассказывают про Mate на примере работы с простейшим сервисом при использовании AMFPHP. Мне это дело так понравилось, что я решил немедленно себе поставить эту штуку - но об этом позже.&lt;/p&gt;&lt;p&gt;А пока - продолжаем изучать Mate. Читаем про Mate на &lt;a href="http://tearaway-tea.com/blog/ru/" rel="home"&gt;Go!Verla Flex Blog&lt;/a&gt;:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://tearaway-tea.com/blog/2008/09/5-%d0%ba%d0%be%d0%bf%d0%b5%d0%b5%d0%ba-%d0%be-mate-flex-framework/ru/" rel="bookmark"&gt;5 копеек о Mate Flex Framework&lt;/a&gt; - хвалебная речь.&lt;/li&gt;&lt;li&gt;&lt;a href="http://tearaway-tea.com/blog/2009/03/usage-example-of-mate-flex-framework/ru/" rel="bookmark"&gt;Пример использования Mate Flex Framework&lt;/a&gt; - очень глубокая статья, которая дает много полезного, даже не только о Mate.&lt;/li&gt;&lt;li&gt;Презентации Constantiner-а: "&lt;a href="http://www.slideshare.net/BugzHunter/mate-framework"&gt;Mate framework&lt;/a&gt;", "&lt;a href="http://www.slideshare.net/Constantiner/mate-flex-framework-presentation"&gt;Краткое введение в Mate Flex framework&lt;/a&gt;". Презентации хороши, но являются лишь подручным материалом докладчика. Без самого докладчика многое понять сложно.&lt;/li&gt;&lt;li&gt;"&lt;a href="http://www.flexdev.ru/2009/06/15/mate-framework-and-zend-amf/#more-1"&gt;Строим приложение на Mate framework + Zend_AMF&lt;/a&gt;".&lt;/li&gt;&lt;/ul&gt;Теперь, когда достаточно изучен хороший пример, почитаем &lt;a href="http://mate.asfusion.com/page/documentation"&gt;документацию&lt;/a&gt;, и особенно, раздел &lt;a href="http://mate.asfusion.com/page/documentation/tags"&gt;Tags&lt;/a&gt;.&lt;div&gt;&lt;br /&gt;&lt;i&gt;Все эти статьи действительно здорово помогли освоить Mate, и особенно наличием исходного кода. На сайте Mate также есть куча примеров с исходниками, которые здорово помогли понять основы и принципы.&lt;/i&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;Неудачно перехожу от теории к практике&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;&lt;p&gt;Пока изучал Mate, решил испробовать на реальном проекте (проект небольшой многослойной карты с маркерами и с подгрузкой данных). Подготовил все компоненты к виду Model/View и... всё получилось само собой, но только без Mate. На байндинге и событиях. Делаем вывод - Mate не для простых проектов. Точнее, не имеет смысла его использовать в простых проектах. Хотя, в примерах числятся очень простые приложения типа "&lt;a href="http://mate.asfusion.com/page/examples/weather-widget"&gt;Weather Widget&lt;/a&gt;".&lt;/p&gt;&lt;p&gt;&lt;i&gt;Сейчас, оглядываясь на этот проект, я понимаю, что сделать его на Mate было бы очень удобно и просто. Но принципы Mate требуют изменить свои устоявшиеся привычки разработки. На тот момент я еще не был готов к этому.&lt;/i&gt;&lt;/p&gt;&lt;p&gt;&lt;i&gt;Кстати, хочу отметить, что мое решение ничуть не проиграло бы Mate-решению. Чисто-Flex-разработка обладает богатым набором возможностей, и вовсе не обязательно всем сломя голову пересаживаться на Mate. Но попробовать, точно, стоит.&lt;/i&gt;&lt;/p&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;b&gt;&lt;i&gt;Создаю проект Mate&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;&lt;p&gt;Но меня просто переполняет желание освоить этот фреймворк. Попробую начать с нуля.&lt;br /&gt;Для начала, создаю проект (обычный). В папку libs &lt;a href="http://mate.asfusion.com/page/downloads"&gt;скачиваю&lt;/a&gt; свежий SWC.&lt;/p&gt;&lt;p&gt;Теперь хорошо бы создать структуру пакетов (проще говоря, папок) проекта. После обзора &lt;a href="http://mate.asfusion.com/page/examples"&gt;примеров&lt;/a&gt;, выявляется устоявшаяся структура:&lt;/p&gt;&lt;p&gt;Основной пакет проекта помещается в папку:&lt;br /&gt;src/[org, com, ru, ....]/[name, company-name, nick-name, ...]/[project name]&lt;/p&gt;&lt;p&gt;В проекте содержатся следующие пакеты: &lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;business&lt;/strong&gt;. Классы, которые определяют модель поведения приложения. Это классы, которые как правило наследуются от EventDispatcher или не наследуются совсем. Они выполняют различные действия по инициализации, обработке данных и пр. &lt;/li&gt;&lt;li&gt;&lt;strong&gt;events&lt;/strong&gt;. Классы событий. Назначение их понятно - передача команд и данных. &lt;/li&gt;&lt;li&gt;&lt;strong&gt;extensions&lt;/strong&gt;. Классы, представляющие собой расширения классов Mate. Собственно, расширяют функционал Mate для конкретных целей приложения. &lt;i&gt;Таковых, в средне-обычном проекте вообще не бывает&lt;/i&gt;.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;maps&lt;/strong&gt;. Здесь размещаются карты событий EventMap. Содержат обработчики событий EventHandlers, Injectors.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;views&lt;/strong&gt;. Классы и компоненты, представляющие UI и всё что с ним связано - в общем, занимаются вводом и отображением данных.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;vos&lt;/strong&gt;. Классы объектов данных (&lt;a href="http://en.wikipedia.org/wiki/Value_object"&gt;Value Object&lt;/a&gt;). Это классы, наследники EventDispatcher, с набором bindable-свойств, представлюящих данные объекта. VO не должны ничего делать кроме как получать и выдавать свои данные.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Само собой разумеется, что каждый волен пользоваться собственной структурой. Но по мне, так лучше присоединиться к общественности и следовать какому-то общему правилу. Хотя бы самому обобщенно общему. Для лучшего понимания собственного и чужого кода.&lt;/p&gt;&lt;i&gt;Такая структура хорошо подходит для относительно простого проекта. Однако, работая над крупным проектом, я убедился, что этого мало. Нужна также смысловая структуризация. То есть, в пакете проекта я располагаю пакеты функционально обособленных модулей, а уже каждый пакет модуля содержит обозначенную выше структуру. Общие для всех модулей сущности складируются в пакет "common". Такой способ особенно оправдан в проектах с использованием подгружаемых модулей.&lt;br /&gt;&lt;br /&gt;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;&lt;b&gt;&lt;i&gt;Первое Mate-приложение&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;А о чем будет наше приложение? После некоторых изысканий, я окончательно убедился, что фреймворк рассчитан на работу с данными. &lt;/p&gt;&lt;p&gt;&lt;i&gt;Позже я делал настраиваемый анимационный движок для виджета, где данные играли не самую первую роль, но, всё же, в приложениях без необходимости обработки данных Mate действительно не нужен.&lt;/i&gt;&lt;/p&gt;&lt;p&gt;И тут подвернулся как раз подходящий проект - еще одна интерактивная карта с подгружаемыми данными маркеров и списка объектов. Ну теперь нужно не облажаться и все-же применить новое учение.&lt;/p&gt;&lt;p&gt;Опишу приблизительный процесс создания приложения с использованием Mate. Все действующие лица не вымышлены, но и приводятся не в полном составе, без усложнений, связанных с особенностями проекта.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;1. Создаем все Views&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Их у меня получилось два: &lt;/p&gt;&lt;ul&gt;&lt;li&gt;первый - вывод карты с маркерами (LayerView.mxml), &lt;/li&gt;&lt;li&gt;второй - списки информации по объектам карты (InformationView.mxml).&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Экраны оформляю так, чтобы все детали ушли в компоненты, а полученные компоненты "плавали на поверхности". &lt;/p&gt;&lt;p&gt;Таким образом, InformationView содержит компоненты: &lt;/p&gt;&lt;ul&gt;&lt;li&gt;InformationPanel - панель списка объектов карты&lt;/li&gt;&lt;li&gt;RouteSelectionPanel - панель выбора варианта маршрута&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Каждый из них имеет dataProvider, в который передается список данных объектов карты informationDataProvider и список маршрутов routesDataProvider.&lt;/p&gt;&lt;p&gt;А LayerView содержит компоненты:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;LayerContent - графическое содержимое карты (имеет selectedRoute - текущий вариант маршрута - ID клипа, который выводится на карте в данный момент)&lt;/li&gt;&lt;li&gt;MarkerSet - слой с множеством маркеров (имеет dataProvider)&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Всё это лежит в папке views.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;2. Создаем VO&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Теперь создадим объекты данных, которые будут выводить наши views. Это обычные потомки EventDispatcher с Bindable-свойствами:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;InstitutionVO - объект, описывающий организацию (дом) на карте (id, название, координаты маркера)&lt;/li&gt;&lt;li&gt;RouteVO - объект, описывающий маршрут на карте (id клипа, название маршрута)&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Размещаем их в папке vos.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;3. Создаем файлы данных&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Имея представление о данных, которые мы выводим, можно создать XML-файл с данными. Данные будем получать по HTTP-запросу, и нам не важно, будет ли их кто-то генерировать или это будет простой XML файл. Сейчас главное, чтобы наше приложение их получало, обрабатывало и выводило. Создаю в src папку data, в которой размещаю XML-файл с данными. Структуру выбираю произвольно - так как мне удобно - тех-требований на формат обмена данными нет, поэтому их диктую я сам. URL файла данных приложение получает через переменные FlashVars (без подробностей).&lt;/p&gt;&lt;p&gt;&lt;strong&gt;4. Создаем поставщиков данных&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;InformationDataProvider - так я его назвал. Он получает загруженные данные, обрабатывает их и размещает у себя. Собственно, этим занимается его метод &lt;em&gt;aquire(data:XML), &lt;/em&gt;который помещает данные в полях:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;information:ArrayCollection - список объектов InstitutionVO,&lt;/li&gt;&lt;li&gt;routes:ArrayCollection - список объектов RouteVO.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;В случае ошибки при разборе данных, или сервер возвратил информацию об ошибке, поставщик генерирует событие, информирующее об ошибке - SettingsEvent.SETTINGS_ERROR. В случае успеха - событие успешного получения данных SettingsEvent.SETTINGS_SUCCESS.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;События из классов, не являющихся компонентами приложения, нужно генерировать через специальный, предусмотренный в Mate, класс Dispatcher. Тогда они будут отрабатываться в картах событий EventMap.&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal; "&gt;Размещаем его в папке business.&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold; "&gt;5. Создаем события и карты событий&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;В папке maps создаем InjectionMap.mxml, в котором размещаем теги &lt;i&gt;Injectors&lt;/i&gt;, связывающие information (из InformationDataProvider) и informationDataProvider (из InformationView и LayerView), и аналогично для routes - routesDataProvider. Как только InformationDataProvider получит данные и установит их в information и routes - они тут же попадут по средством связывания (&lt;i&gt;binding&lt;/i&gt;) в соответствующие поля InformationView и LayerView и будут отображены их компонентами в окне приложения.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Другая карта событий - MainEventMap.mxml - содержит обработчики событий. Такие инструменты как &lt;i&gt;HTTPServiceInvoker &lt;/i&gt;и т.п.  прекрасно заменяют рутинные классы отправки/получения данных. Обрабатываются все основные &lt;i&gt;FlexEvent&lt;/i&gt;-события, которые позволяют обрабатывать инициализацию приложения и его готовность к работе. Чтобы событие улавливалось картой событий, оно должно иметь параметр по умолчанию &lt;i&gt;bubbles:Boolean=true&lt;/i&gt;.&lt;/div&gt;&lt;div&gt;Итак, наша карта событий улавливает в контейнере EventHandlers событие FlexEvent.APPLICATION_COMPLETE и отправляет HTTP-запрос (&lt;i&gt;HTTPServiceInvoker&lt;/i&gt;) на получение конфигурации. Не забываем указать &lt;i&gt;resultFormat="e4x"&lt;/i&gt;, чтобы полученные данные были представлены в виде XML. В разделе обработчиков &lt;i&gt;resultHandlers&lt;/i&gt; помещаем &lt;i&gt;MethodInvoker&lt;/i&gt; с вызовом нашего метода aquire, у которого resultObject указан в аргументах. В раздел &lt;i&gt;faultHandlers&lt;/i&gt; помещаем обработчики ошибки запроса.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Теги с картами событий InjectionMap и MainEventMap обязательно помещаем в корне приложения.&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold; "&gt;&lt;i&gt;Заметки&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;В общих чертах - как-то так. К сожалению, у меня нет возможности оформить это приложение в туториал с исходниками (&lt;i&gt;эх, дидлайны-дидлайны&lt;/i&gt;), но надеюсь, идею Mate я немножко смог передать.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Столкнулся со следующими проблемами:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;1. &lt;b&gt;id в Request.&lt;/b&gt; Если я хочу передать в HTTPServiceInvoker, в Request переменную id - у меня проблема. В MXML id - это имя инстанцируемого объекта. В &lt;a href="http://mate.asfusion.com/page/documentation/tags/services/httpserviceinvoker"&gt;обсуждении&lt;/a&gt; предлагается использовать для этих целей параметр _id, но это не помогает - с запросом отправляется чепуха. Выход - не именовать так переменные (&lt;i&gt;даже &lt;/i&gt;&lt;i&gt;сильно поругался из-за этого с сервер-разработчиком&lt;/i&gt;).&lt;/div&gt;&lt;div&gt;2. &lt;b&gt;source в EventHandlers&lt;/b&gt;. Переменные с именем &lt;i&gt;source &lt;/i&gt;ведут как-то странно в обработчиках событий. Несколько раз ловил в них не действительное значение, а что-то вроде строки "Event". Непонятна причина такой особенности, поэтому, опять-таки, лучше избегать таких имен.&lt;/div&gt;&lt;div&gt;3. &lt;b&gt;События&lt;/b&gt;. Не сильно проблемная особенность, но все же - нельзя модифицировать параметры конструктора события - добавлять и менять порядок следования параметров.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;* * *&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Работая с flex-модулями (Module), убедился, что Mate следует использовать очень осторожно. Лично я так и не понял, как сделать так, чтобы модуль выгружался и убивался GC. &lt;/div&gt;&lt;div&gt;Взаимодействие модулей с главным приложением производится успешно, однако, выгруженные модули продолжают ловить события.&lt;/div&gt;&lt;div&gt;Следуя &lt;a href="http://mate.asfusion.com/page/documentation/best-practices/modules"&gt;инструкциям&lt;/a&gt; и собственным экспериментам, я постарался сделать модули как можно более автономными и создал следующую структуру:&lt;/div&gt;&lt;div&gt;1. Каждый модуль имеет свои карты событий. По возможности, я старался сделать их локальными (LocalEventMap). Однако, карты, которые работают с событиями главного приложения не могут являться таковыми, да и вообще - не очень то с ними всё сложилось.&lt;/div&gt;&lt;div&gt;2. События, которые используются и основным приложением и модулями выделены в отдельный пакет. Обработка и отправка событий в/из модуля вынесены в отдельные карты событий. &lt;/div&gt;&lt;div&gt;3. Перекрыл класс &lt;i&gt;Module -&lt;/i&gt; каждый модуль при удалении из Stage подчищает в своих картах событий все возможные связи.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;После таких действий, выгруженные модули теряют интерес к событиям приложения, однако, сомневаюсь, что они удаляются из памяти - есть угроза утечки памяти. Виновен ли в этом я, или Mate или вообще Flex - сказать трудно. Остается полагаться на то, что смена модуля не столь частая операция (я использую flex-модули в качестве "страниц" flash-сайта), чтобы съесть всю память во время просмотра сайта.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;* * *&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;i&gt;Общее впечатление&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Mate упрощает разработку, но усложняет логику. &lt;/div&gt;&lt;div&gt;Многие вещи лучше визуализируются, работа с событиями выносится в отдельные блоки, повышается наглядность, а связность кода уменьшается. Превосходно решается задача отделения представления от логики - задача любого фреймворка, особенно для flash.&lt;/div&gt;&lt;div&gt;Возможность легкого надстраивания приложения - огромный плюс Mate. Если работа с событиями в приложении изначально организована правильно, добавлять новые программные возможности легче простого. Я без труда добавил возможности дип-линкинга &lt;a href="http://www.asual.com/swfaddress/docs/"&gt;SWFAddress&lt;/a&gt;, или встроил приложение в &lt;a href="http://multidmedia.com/"&gt;Zinc&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Однако, есть и обратная сторона. Логически связанные сущности разрываются, когда выносятся в карты событий. Рабочий процесс приложения рассредоточивается по файлам разного формата, в картах событий методы вызываются непривычным способом, имена их указываются как строки, а аргументы - как массивы, что мешает автокомплиту и компилятору помогать и контролировать процесс разработки. Да и на читабельности и понятности кода это сильно сказывается, и не в лучшую сторону. Я вообще молчу об удобстве отладки такого приложения. Всё построено на связывании (binding) и событиях, а всем известно - это злые враги дебагера.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;При попытке как-то сохранить связность сущностей, я стараюсь группировать классы в обособленные пакеты, общающиеся друг с другом посредством общих событий. Это помогает сохранить логически стройное представление сущностей, но увеличивает количество файлов. Зачастую, файлы при этом просто дублируются, лишь с заменой имен событий и переменных. Особенно это касается бурного размножения классов событий. В итоге, простой проект выглядит красиво, но сложный - громоздко. С другой стороны, простое приложение легче сделать красивым чем сложное, которое в любом случае будет громоздким и потребует больших умственных затрат.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Итак, Mate - превосходный инструмент. Не скажу, что он сильно ускоряет разработку. Время, сэкономленное на рутине, легко тратится на вспухание мозга, пытающегося объять логику, заключенную в куче файлов, а так же на ловлю своих же багов (а иногда и багов Mate). Но, должен отметить, что всё зависит от опыта разработчика и правильного проектирования приложения. &lt;/div&gt;&lt;div&gt;И главное - как и любой другой фреймворк, Mate дает прочный каркас приложению, быстрый старт разработки, помогает больше сосредоточиться на логике приложения, не отвлекаясь на рутину.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25528681162651304-215939282624548615?l=racer242.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/bO2bD3rExaujYnNUB3738psUlTw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/bO2bD3rExaujYnNUB3738psUlTw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/bO2bD3rExaujYnNUB3738psUlTw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/bO2bD3rExaujYnNUB3738psUlTw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/pabt/~4/PHKmB84uefY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://racer242.blogspot.com/feeds/215939282624548615/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=25528681162651304&amp;postID=215939282624548615" title="Комментарии: 6" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/25528681162651304/posts/default/215939282624548615?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/25528681162651304/posts/default/215939282624548615?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/pabt/~3/PHKmB84uefY/mate.html" title="Знакомство с Mate" /><author><name>Евгений Симонов</name><uri>https://profiles.google.com/103035028933726102028</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-O8I1h_klPKM/AAAAAAAAAAI/AAAAAAAAAAA/nXxr79r2scI/s512-c/photo.jpg" /></author><thr:total>6</thr:total><feedburner:origLink>http://racer242.blogspot.com/2009/05/mate.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkMCQHo_cCp7ImA9WxNWFU8.&quot;"><id>tag:blogger.com,1999:blog-25528681162651304.post-5213805468234566408</id><published>2009-10-14T16:44:00.003+04:00</published><updated>2009-10-14T16:47:41.448+04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-14T16:47:41.448+04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="От автора" /><title>Новый подблог "Flash-разработка. Сотрудничество"</title><content type="html">Дублирую предисловие:&lt;div&gt;&lt;br /&gt;&lt;div&gt;"Каждый из нас рано или поздно сталкивается с ситуацией, когда работы завал, а нам ее всё подкидывают и подкидывают. Вроде бы и заманчиво, а с другой стороны - ну некуда уже - график забит. Поэтому, приглашаю к сотрудничеству всех желающих.&lt;div&gt;&lt;div&gt;&lt;div&gt;Итак, с этого момента, я буду выкладывать в этот блог всё, что уже не в силах взять на себя.&lt;/div&gt;&lt;div&gt;Надеюсь на понимание и, думаю, многим будет интересно найти здесь для себя занятие."&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Блог здесь: &lt;a href="http://racer242collab.blogspot.com/"&gt;http://racer242collab.blogspot.com/&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25528681162651304-5213805468234566408?l=racer242.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/nDsCnNbC5M5QPQjlkYnypakmXUw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/nDsCnNbC5M5QPQjlkYnypakmXUw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/nDsCnNbC5M5QPQjlkYnypakmXUw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/nDsCnNbC5M5QPQjlkYnypakmXUw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/pabt/~4/Yc2DHNlJa8Y" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://racer242.blogspot.com/feeds/5213805468234566408/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=25528681162651304&amp;postID=5213805468234566408" title="Комментарии: 5" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/25528681162651304/posts/default/5213805468234566408?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/25528681162651304/posts/default/5213805468234566408?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/pabt/~3/Yc2DHNlJa8Y/flash.html" title="Новый подблог &quot;Flash-разработка. Сотрудничество&quot;" /><author><name>Евгений Симонов</name><uri>https://profiles.google.com/103035028933726102028</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-O8I1h_klPKM/AAAAAAAAAAI/AAAAAAAAAAA/nXxr79r2scI/s512-c/photo.jpg" /></author><thr:total>5</thr:total><feedburner:origLink>http://racer242.blogspot.com/2009/10/flash.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUYHRXw-fyp7ImA9WxNWFE8.&quot;"><id>tag:blogger.com,1999:blog-25528681162651304.post-4159277461881108324</id><published>2009-10-13T12:22:00.004+04:00</published><updated>2009-10-13T12:38:54.257+04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-13T12:38:54.257+04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Actionscript 3.0" /><category scheme="http://www.blogger.com/atom/ns#" term="Грабли" /><title>Спасительный cacheAsBitmap и wmode=transparent</title><content type="html">Небольшая галерейка. На фотки/иконки наводится мышь и всплывает окошко с информацией. Окошко с указателем. Представляет собой Sprite, в котором находятся указатель и Sprite с плашкой информации. Плашка выравнивается с учетом положения на экране - подравнивается края - изменением координаты x. Плашка со скруглениями, с 9Slice и с фильтром-тенью.&lt;div&gt;В нормальных условиях, всё работает замечательно. При &lt;i&gt;wmode=transparent&lt;/i&gt;, когда флэшка выводится поверх HTML-контента, плашка выводится усеченной, не в том смещении. Протрейсил координаты - всё нормально. При запуске - ужос. &lt;/div&gt;&lt;div&gt;Нам известны проблемы wmode=transparent - они странны и непредсказуемы. Особенно когда на прозрачность попадают фильтры.&lt;/div&gt;&lt;div&gt;Интуиция срабатывает без промашки. В коде выравнивания плашки, в конце ставим строчку &lt;code&gt;this._infoContainer.cacheAsBitmap=true;&lt;/code&gt; (&lt;i&gt;_infoContainer &lt;/i&gt;- это окошко, контейнер для плашки и указателя, DisplayObjectContainer). Теперь всё выводится корректно.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25528681162651304-4159277461881108324?l=racer242.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/tjtOwmyAKDAKJ_FLW3pt-9D_MiM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/tjtOwmyAKDAKJ_FLW3pt-9D_MiM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/tjtOwmyAKDAKJ_FLW3pt-9D_MiM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/tjtOwmyAKDAKJ_FLW3pt-9D_MiM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/pabt/~4/5_n24mxhwXI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://racer242.blogspot.com/feeds/4159277461881108324/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=25528681162651304&amp;postID=4159277461881108324" title="Комментарии: 1" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/25528681162651304/posts/default/4159277461881108324?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/25528681162651304/posts/default/4159277461881108324?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/pabt/~3/5_n24mxhwXI/cacheasbitmap-wmodetransparent.html" title="Спасительный cacheAsBitmap и wmode=transparent" /><author><name>Евгений Симонов</name><uri>https://profiles.google.com/103035028933726102028</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-O8I1h_klPKM/AAAAAAAAAAI/AAAAAAAAAAA/nXxr79r2scI/s512-c/photo.jpg" /></author><thr:total>1</thr:total><feedburner:origLink>http://racer242.blogspot.com/2009/10/cacheasbitmap-wmodetransparent.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0EGSH86eSp7ImA9WxNXF08.&quot;"><id>tag:blogger.com,1999:blog-25528681162651304.post-1232328094681586123</id><published>2009-10-05T10:26:00.006+04:00</published><updated>2009-10-05T10:53:49.111+04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-05T10:53:49.111+04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Actionscript 3.0" /><category scheme="http://www.blogger.com/atom/ns#" term="Идеи" /><category scheme="http://www.blogger.com/atom/ns#" term="Flex" /><category scheme="http://www.blogger.com/atom/ns#" term="Flash IDE" /><title>Копипаст фильтров из CS во Flex</title><content type="html">Хорошая это штука - "Copy Motion to ActionScript 3" - в IDE CS3 (речь идет именно об этой версии). Наверняка, все уже давно смекнули, какие выгоды она несет для Flex. Главная выгода - сокращается объем ручной работы и отладки.&lt;div&gt;В частности, я успешно копирую настройки фильтров для компонентов. И делаю это следующим образом:&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;В тестовом файле создаем клип образца, визуально похожего на то что у нас должно быть во flex - например, текстовое поле или кнопку. Навешиваем на нее кучу фильтров, до получения нужной нам картинки.&lt;/li&gt;&lt;li&gt;На слое с клипом кликаем правой кнопкой и выбираем "Copy Motion to ActionScript 3".&lt;/li&gt;&lt;li&gt;Вставляем куда-нибудь то, что скопировалось в буфер - например, тут же в редактор Actions. &lt;/li&gt;&lt;li&gt;Находим там блок &lt;i&gt;&amp;lt;filters&amp;gt;...&amp;lt;/filters&amp;gt; &lt;/i&gt;&lt;/li&gt;&lt;li&gt;Копипастим его себе во Flex-код, в контейнер тега нужного нам визуального компонента.&lt;/li&gt;&lt;li&gt;Заменяем &lt;i&gt;filters&lt;/i&gt; на &lt;i&gt;mx:filters&lt;/i&gt; и &lt;i&gt;filters:BevelFilter&lt;/i&gt; на &lt;i&gt;mx:BevelFilter.&lt;/i&gt; (у &lt;i&gt;mx:filters&lt;/i&gt; может быть другой префикс - зависит от компонента)&lt;/li&gt;&lt;li&gt;Компилируем и получаем картину, аналогичную CS. Дотюниваем, если необходимо, параметры. &lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25528681162651304-1232328094681586123?l=racer242.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/RYmKK4iUmH99F7a_Ookrz7XRmnc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/RYmKK4iUmH99F7a_Ookrz7XRmnc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/RYmKK4iUmH99F7a_Ookrz7XRmnc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/RYmKK4iUmH99F7a_Ookrz7XRmnc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/pabt/~4/b6LWvG367Ss" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://racer242.blogspot.com/feeds/1232328094681586123/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=25528681162651304&amp;postID=1232328094681586123" title="Комментарии: 12" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/25528681162651304/posts/default/1232328094681586123?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/25528681162651304/posts/default/1232328094681586123?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/pabt/~3/b6LWvG367Ss/cs-flex.html" title="Копипаст фильтров из CS во Flex" /><author><name>Евгений Симонов</name><uri>https://profiles.google.com/103035028933726102028</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-O8I1h_klPKM/AAAAAAAAAAI/AAAAAAAAAAA/nXxr79r2scI/s512-c/photo.jpg" /></author><thr:total>12</thr:total><feedburner:origLink>http://racer242.blogspot.com/2009/10/cs-flex.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D04EQXg4cCp7ImA9WxNXFE0.&quot;"><id>tag:blogger.com,1999:blog-25528681162651304.post-6948894769379486307</id><published>2009-10-01T18:01:00.003+04:00</published><updated>2009-10-01T18:05:00.638+04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-01T18:05:00.638+04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="От автора" /><title>Мой дорогой блог...</title><content type="html">... скучаю, знаю что висят черновики, но плавный переход от летнего отдыха к жесточайшим дедлайнам вынуждают меня убрать тебя в самый дальний ящик моего рабочего стола...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25528681162651304-6948894769379486307?l=racer242.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/apaCiCSPlIRjBBU1Ar4kLUP1kwE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/apaCiCSPlIRjBBU1Ar4kLUP1kwE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/apaCiCSPlIRjBBU1Ar4kLUP1kwE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/apaCiCSPlIRjBBU1Ar4kLUP1kwE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/pabt/~4/Wg-yYg9Y7IE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://racer242.blogspot.com/feeds/6948894769379486307/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=25528681162651304&amp;postID=6948894769379486307" title="Комментарии: 4" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/25528681162651304/posts/default/6948894769379486307?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/25528681162651304/posts/default/6948894769379486307?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/pabt/~3/Wg-yYg9Y7IE/blog-post.html" title="Мой дорогой блог..." /><author><name>Евгений Симонов</name><uri>https://profiles.google.com/103035028933726102028</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-O8I1h_klPKM/AAAAAAAAAAI/AAAAAAAAAAA/nXxr79r2scI/s512-c/photo.jpg" /></author><thr:total>4</thr:total><feedburner:origLink>http://racer242.blogspot.com/2009/10/blog-post.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEAASXY8fyp7ImA9WxJbGEg.&quot;"><id>tag:blogger.com,1999:blog-25528681162651304.post-7190459852529747121</id><published>2009-07-28T13:28:00.013+04:00</published><updated>2009-07-29T11:32:28.877+04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-07-29T11:32:28.877+04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Обзоры" /><category scheme="http://www.blogger.com/atom/ns#" term="Эффекты" /><title>Генерим облака</title><content type="html">Вот понадобилось мне облака генерить. Изобретать велосипед не будем - прямиком в гугл.&lt;br /&gt;А тут красоты всякой - видимо-невидимо.&lt;br /&gt;&lt;br /&gt;Сразу хочу отметить полезный тул: &lt;a href="http://www.tarasnovak.com/lab/PerlinNoiseExplorer/PerlinNoiseExplorer.html"&gt;Perlin Noise Explorer&lt;/a&gt;. Собственно, кто еще недопонял, что такое perlin noise, может подробно изучить это явление.&lt;br /&gt;&lt;br /&gt;Замечательный пейзажик: &lt;a href="http://www.flepstudio.org/forum/tutorials/629-actionscript-3-0-perlinnoise-method.html"&gt;Actionscript 3.0 perlinNoise method&lt;/a&gt;.&lt;br /&gt;Облака с перспективой: &lt;a href="http://wonderfl.net/code/48d1d9d92261b26047b1548624627fdc94f52e17"&gt;Clouds&lt;/a&gt;.&lt;br /&gt;Целый движок: &lt;a href="http://nodename.com/blog/2008/07/11/perlin-clouds-and-frocessing-with-an-f/"&gt;Perlin Clouds and Frocessing (with an F)&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Без демки, но проверены:&lt;br /&gt;&lt;a href="http://www.andrewnprice.com/node/45"&gt;Generating Pseudo Realistic Clouds In Flash (AS3 + Perlin Noise)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.kirupa.com/forum/showthread.php?t=204877"&gt;Lets make some (perlin) noise!&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Не облака:&lt;br /&gt;Забавная пружинка: &lt;a href="http://nutsu.com/blog/2008/061100_as_frocessing.html"&gt;тут&lt;/a&gt;.&lt;br /&gt;Нереальные игры с электричеством: &lt;a href="http://blog.oaxoa.com/category/perlinnoise/"&gt;тут&lt;/a&gt;.&lt;br /&gt;Красивое облако: &lt;a href="http://webr3.org/blog/haxe/3d-perlin-particle-light-cloud-and-source-haxe-flash-10/"&gt;тут&lt;/a&gt;.&lt;br /&gt;Земля: &lt;a title="Permanent Link to Papervision3D clouded planet Earth tutorial and source" href="http://blog.projectnibble.org/2009/06/19/papervision3d-clouded-planet-earth-tutorial-and-source/" rel="bookmark"&gt;Papervision3D clouded planet Earth tutorial and source&lt;/a&gt;.&lt;br /&gt;Такие вот пузыри: &lt;a href="http://blog.oaxoa.com/2007/12/28/actionscript-3-blobs-lava-lamp-effect/"&gt;Actionscript 3 blobs / lava lamp effect&lt;/a&gt;&lt;br /&gt;Древесные кольца: &lt;a href="http://www.connectedpixel.com/blog/texture/wood"&gt;тут&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Да... Всё красиво, но мне, увы не подошло. Идея такова, что нужно генерировать небольшие клочки облаков, а для этого нужно на полученную текстуру наложить маску, плавно описывающую область. По всей видимости, времени не хватит. Вставлю картинками.&lt;br /&gt;&lt;br /&gt;* * *&lt;br /&gt;&lt;br /&gt;Решил поступить так. Берем пример &lt;a href="http://www.andrewnprice.com/node/45"&gt;Generating Pseudo Realistic Clouds In Flash (AS3 + Perlin Noise)&lt;/a&gt;. Подстраиваем параметры таким образом, чтобы облака были редкими.&lt;br /&gt;Для большой области, динамический рендер по производительности просто убийственный. Но мы генерируем крупный битмап один раз, не скупясь на качество, и затем, просто скроллим его циклически.&lt;br /&gt;&lt;br /&gt;* * *&lt;br /&gt;&lt;br /&gt;Сделал еще проще. Полученный битмап не скроллю, а циклически со смещением заливаю им нужную область. Это гораздо удобнее, т.к. метод заливки beginBitmapFill умеет склеивать текстуру самостоятельно при любом смещении. И по производительности это выигрышнее.&lt;br /&gt;&lt;br /&gt;* * *&lt;br /&gt;&lt;br /&gt;В примере, полученый клип с облаками накладывается с эффектом &lt;em&gt;blendMode = "screen"&lt;/em&gt;. Для производительности это не есть хорошо. Поэтому, в целях оптимизации, рабочий битмап делаем прозрачным, заливаем белым цветом и копируем в его альфа-канал любой из цветовых каналов сгенерированного битмапа с облаками. Точнее, для генерации perlinNoise используем один канал, который потом и копируем.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25528681162651304-7190459852529747121?l=racer242.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/fYvmOGG7Ppd61cNleCsvi7toW44/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/fYvmOGG7Ppd61cNleCsvi7toW44/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/fYvmOGG7Ppd61cNleCsvi7toW44/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/fYvmOGG7Ppd61cNleCsvi7toW44/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/pabt/~4/knJSA2fUs7E" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://racer242.blogspot.com/feeds/7190459852529747121/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=25528681162651304&amp;postID=7190459852529747121" title="Комментарии: 4" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/25528681162651304/posts/default/7190459852529747121?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/25528681162651304/posts/default/7190459852529747121?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/pabt/~3/knJSA2fUs7E/blog-post.html" title="Генерим облака" /><author><name>Евгений Симонов</name><uri>https://profiles.google.com/103035028933726102028</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-O8I1h_klPKM/AAAAAAAAAAI/AAAAAAAAAAA/nXxr79r2scI/s512-c/photo.jpg" /></author><thr:total>4</thr:total><feedburner:origLink>http://racer242.blogspot.com/2009/07/blog-post.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0IFR3g4eip7ImA9WxJbFko.&quot;"><id>tag:blogger.com,1999:blog-25528681162651304.post-6534463560095632656</id><published>2009-07-27T09:39:00.011+04:00</published><updated>2009-07-27T11:25:16.632+04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-07-27T11:25:16.632+04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="От автора" /><category scheme="http://www.blogger.com/atom/ns#" term="Обзоры" /><title>MPS, MIoC и утро испорчено</title><content type="html">Вот так бывает, что приезжаешь в понедельник утром на работу, погружаешь измученное летними выходными тело в кресло, включаешь позёвывая комп, лениво начинаешь кликать последние посты. За окном лето. Чего еще может быть такого нового... Все загорают и купаются.&lt;br /&gt;&lt;br /&gt;Но тут мозг натыкается на незнакомые сочетания букв. Таак. &lt;a href="http://groups.google.com/group/ruFlash/browse_thread/thread/a319f95badab69d9/8a7408965c55b69b?show_docid=8a7408965c55b69b#"&gt;Мифы MPS.&lt;/a&gt; Явно не про мазду. MPS... MPS, что-то википедия ерунду выдает. Ладно, читаем дальше. Ну пипец, ни одной ссылки, будто и правда все всё знают, а я в мазде. Ага, это редактор. Попался, голубчик. От оно чо - &lt;a href="http://blogs.jetbrains.com/mps/"&gt;Meta Programming System&lt;/a&gt;. Вот и википедия сразу &lt;a href="http://en.wikipedia.org/wiki/JetBrains_MPS"&gt;разродилась&lt;/a&gt;. Ну в общем всё ясно. Шагай в будущее с MPS первой версии. Для чего оно нужно? Для создания и работы с DSL (опять неоднозначные аббривиатуры - это не про модем, это &lt;a href="http://en.wikipedia.org/wiki/Domain-specific_programming_language"&gt;Domain-specific language&lt;/a&gt; - или лучше &lt;a href="http://ru.wikipedia.org/wiki/Предметно-ориентированный_язык_программирования"&gt;Предметно-ориентированный язык программирования&lt;/a&gt;). Теперь и пост про мифы можно почитать.&lt;br /&gt;&lt;br /&gt;Что еще у нас интересного на сегодня? Ага, &lt;a href="http://injun.ru/?p=822#comments"&gt;injun&lt;/a&gt; до Swiz добрался. Забавный принцип. Про паззлы понравилось, хоть никогда их и не любил - скучное занятие.&lt;br /&gt;Все похвалили &lt;a style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 5px; COLOR: rgb(0,102,204); PADDING-TOP: 0px; TEXT-DECORATION: underline" href="http://mioc.sourceforge.net/russian.html"&gt;MIoC&lt;/a&gt;. Вот, спасибо, для тех кто в мазде - разшифровка (Metadata-driven autowire IoC framework для ActionScript 3). Про IoC знают многие, а вот MIoC - не думаю.&lt;br /&gt;&lt;br /&gt;Напоследок. Случился бум Flash+Drupal. Мне так показалось, что пост &lt;a href="http://flash-ripper.com/book/flash-with-drupal-book-by-travis-tidwell#comments"&gt;Flash на Drupal&lt;/a&gt; произвел неизгладимое впечатление на &lt;a href="http://flexconstructor.blogspot.com/"&gt;Flex Constructor&lt;/a&gt;, и в течение последующих 3,5 часов он выдал &lt;a href="http://flexconstructor.blogspot.com/2009/07/flexdrupal_23.html"&gt;Flex+Drupal=...&lt;/a&gt; C интеграцией flash и CMS сталкивается почти каждый flash-разработчик. На моей практике, сводится она к тому, что либо сервер диктует формат обмена данными, либо это делаю я сам. Второе чаще. Здесь же этот процесс систематизируется и ставится на рельсы, по которым очень скоро покатятся составы, полные готовых drupal-модулей для flash-сайтов, flash-приложений, flash-виджетов и flash-т.п. Идея популяризации Drupal очевидна.&lt;br /&gt;&lt;br /&gt;Всё. Утро еще не кончилось, и мозги уже дымятся. А ведь еще завал работы...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25528681162651304-6534463560095632656?l=racer242.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/XRbGcHnD3G9Vpqg2qHAAkAlWmQA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/XRbGcHnD3G9Vpqg2qHAAkAlWmQA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/XRbGcHnD3G9Vpqg2qHAAkAlWmQA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/XRbGcHnD3G9Vpqg2qHAAkAlWmQA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/pabt/~4/lJAVtoKvTUc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://racer242.blogspot.com/feeds/6534463560095632656/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=25528681162651304&amp;postID=6534463560095632656" title="Комментарии: 2" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/25528681162651304/posts/default/6534463560095632656?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/25528681162651304/posts/default/6534463560095632656?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/pabt/~3/lJAVtoKvTUc/mps-mioc.html" title="MPS, MIoC и утро испорчено" /><author><name>Евгений Симонов</name><uri>https://profiles.google.com/103035028933726102028</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-O8I1h_klPKM/AAAAAAAAAAI/AAAAAAAAAAA/nXxr79r2scI/s512-c/photo.jpg" /></author><thr:total>2</thr:total><feedburner:origLink>http://racer242.blogspot.com/2009/07/mps-mioc.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0IBRHoyfyp7ImA9WxJXEU8.&quot;"><id>tag:blogger.com,1999:blog-25528681162651304.post-3053105977503072522</id><published>2009-06-04T19:26:00.005+04:00</published><updated>2009-06-04T19:32:35.497+04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-04T19:32:35.497+04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Справка" /><title>Ух ты! Binding</title><content type="html">Случайно столкнулся с таким вариантом байндинга:&lt;br /&gt;&lt;br /&gt;Вот к примеру, обычно мы делаем вот так:&lt;br /&gt;&amp;lt;someComponent someAttribute="{someValue1+'_splitter_'+someValue2}"/&amp;gt;&lt;br /&gt;&lt;br /&gt;А оказывается можно и так:&lt;br /&gt;&amp;lt;someComponent someAttribute="{someValue1}_splitter_{someValue2}"/&amp;gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25528681162651304-3053105977503072522?l=racer242.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/gYBFpTmLpBg5NwiJ07WgFbujoa8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/gYBFpTmLpBg5NwiJ07WgFbujoa8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/gYBFpTmLpBg5NwiJ07WgFbujoa8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/gYBFpTmLpBg5NwiJ07WgFbujoa8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/pabt/~4/mA5v0c-d_yM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://racer242.blogspot.com/feeds/3053105977503072522/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=25528681162651304&amp;postID=3053105977503072522" title="Комментарии: 2" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/25528681162651304/posts/default/3053105977503072522?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/25528681162651304/posts/default/3053105977503072522?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/pabt/~3/mA5v0c-d_yM/binding.html" title="Ух ты! Binding" /><author><name>Евгений Симонов</name><uri>https://profiles.google.com/103035028933726102028</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-O8I1h_klPKM/AAAAAAAAAAI/AAAAAAAAAAA/nXxr79r2scI/s512-c/photo.jpg" /></author><thr:total>2</thr:total><feedburner:origLink>http://racer242.blogspot.com/2009/06/binding.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C04HQn0zeip7ImA9WxJXEU0.&quot;"><id>tag:blogger.com,1999:blog-25528681162651304.post-311586725115120764</id><published>2009-06-04T11:02:00.006+04:00</published><updated>2009-06-04T11:52:13.382+04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-04T11:52:13.382+04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Обзоры" /><title>Выбираем движок для просмотра Flash-панорам</title><content type="html">Сегодня ищем движок для просмотра flash-панорам.&lt;br /&gt;&lt;br /&gt;Для начала - немного теории панорам: &lt;span class="big2"&gt;&lt;a href="http://ru.wikipedia.org/wiki/%D0%9F%D0%B0%D0%BD%D0%BE%D1%80%D0%B0%D0%BC%D0%B0"&gt;Панорамная фотография&lt;/a&gt;, &lt;a href="http://www.panoramas.dk/panorama/"&gt;BASICS&lt;/a&gt;&lt;/span&gt; (здесь же можно найти и другую информацию про панорамное фото, софт, вьюверы).&lt;br /&gt;&lt;br /&gt;По flash-вьюверам панорам, Гугл выдал следующих претендентов:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://flashpanoramas.com/player/"&gt;Flash Panorama Player&lt;/a&gt; - платный, недорогой вьювер кубических панорам. Принцип прост - имя swf-файл вьювера должно соответствовать имени jpg-файлов, которые имеют соответствующие сторонам куба суффиксы. &lt;/li&gt;&lt;li&gt;&lt;a href="http://www.ryubin.com/panolab/panoflash/index.shtml"&gt;Ryubin's Flash Panorama Laboratory&lt;/a&gt; - Отличный движок, без исходников, но настраиваемый через XML.&lt;/li&gt;&lt;li&gt;&lt;a href="http://krpano.com/"&gt;krpano&lt;/a&gt; - платный, недорогой вьювер с кучей дополнительных фич, типа эффект линз и тп.&lt;/li&gt;&lt;li&gt;&lt;a href="http://panosalado.com/"&gt;PanoSalado&lt;/a&gt;, &lt;a href="http://panosalado.com/spincontrol"&gt;Spincontrol&lt;/a&gt; - опенсорсный движок на базе PV3 и AIR-утилита для сборки виртуальных туров. Есть и исходники и документация. &lt;/li&gt;&lt;/ul&gt;Ну пока хватит. Наверняка есть другие, более удобные и популярные движки и программы - будем искать.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25528681162651304-311586725115120764?l=racer242.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/o9kRGL9GlzgoJbmNp54OQIvfuKM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/o9kRGL9GlzgoJbmNp54OQIvfuKM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/o9kRGL9GlzgoJbmNp54OQIvfuKM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/o9kRGL9GlzgoJbmNp54OQIvfuKM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/pabt/~4/dZe_fBB6NfM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://racer242.blogspot.com/feeds/311586725115120764/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=25528681162651304&amp;postID=311586725115120764" title="Комментарии: 2" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/25528681162651304/posts/default/311586725115120764?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/25528681162651304/posts/default/311586725115120764?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/pabt/~3/dZe_fBB6NfM/flash.html" title="Выбираем движок для просмотра Flash-панорам" /><author><name>Евгений Симонов</name><uri>https://profiles.google.com/103035028933726102028</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-O8I1h_klPKM/AAAAAAAAAAI/AAAAAAAAAAA/nXxr79r2scI/s512-c/photo.jpg" /></author><thr:total>2</thr:total><feedburner:origLink>http://racer242.blogspot.com/2009/06/flash.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0IESH08eSp7ImA9WxJXEEw.&quot;"><id>tag:blogger.com,1999:blog-25528681162651304.post-3994929431426345061</id><published>2009-06-03T11:45:00.012+04:00</published><updated>2009-06-03T12:58:29.371+04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-03T12:58:29.371+04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Flex Builder" /><category scheme="http://www.blogger.com/atom/ns#" term="Обзоры" /><category scheme="http://www.blogger.com/atom/ns#" term="Справка" /><title>Code-behind или mx:Script?</title><content type="html">До некоторого времени, я выносил объемный AS-ккод из MXML-компонентов, используя тег &amp;lt;mx:Script/&amp;gt;:&lt;br /&gt;&lt;code&gt;&amp;lt;mx:Script source="includes/ComponentName.as"/&amp;gt;&lt;/code&gt;&lt;br /&gt;Каких-либо логических недостатков такого метода я не наблюдал, однако столкнулся с постоянной глючностью автокомплита AS-редактора FlexBuilder. И вот, когда меня в конец это достало, решил взять на вооружение способ Code-behind.&lt;br /&gt;&lt;br /&gt;Про Code-behind пишут следующее:&lt;br /&gt;&lt;a href="http://learn.adobe.com/wiki/display/Flex/Code+Behind"&gt;Code Behind&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.adobe.com/devnet/flex/quickstart/building_components_using_code_behind/"&gt;Building components by using code behind&lt;/a&gt;&lt;br /&gt;&lt;a title="'Permanent" href="http://onflash.org/ted/2007/02/code-behind-in-flex-2.php" rel="bookmark"&gt;Code-Behind in Flex 2 &lt;/a&gt;&lt;br /&gt;&lt;a href="http://aralbalkan.com/1958"&gt;Code-behind gotcha in Flex Builder for AIR apps&lt;/a&gt;&lt;br /&gt;&lt;a href="http://tearaway-tea.com/blog/2008/12/%d1%81%d0%be%d0%b2%d0%b5%d1%82%d1%8b-%d0%bd%d0%be%d0%b2%d0%b8%d1%87%d0%ba%d0%b0%d0%bc/ru/" rel="bookmark"&gt;Советы новичкам&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;В кратце, суть проста - наш MXML компонент &lt;em&gt;ComponentName&lt;/em&gt; не базируется напрямую на основном компоненте, например, &lt;em&gt;Canvas&lt;/em&gt;, а на компоненте-"прослойке" &lt;em&gt;ComponentNameClass&lt;/em&gt; (также используется суффикс &lt;em&gt;-Base&lt;/em&gt;). Код этого компонента размещается в &lt;em&gt;ComponentNameClass.as.&lt;/em&gt; Его класс является потомком класса того самого основного компонента (&lt;em&gt;Canvas&lt;/em&gt;) и содержит весь необходимый AS-код.&lt;br /&gt;&lt;br /&gt;Все компоненты, которые имеются в &lt;em&gt;ComponentName.mxml&lt;/em&gt; и к которым нужен доступ, должны быть объявлены в &lt;em&gt;ComponentNameClass.as&lt;/em&gt; как &lt;strong&gt;public&lt;/strong&gt;. Методы и обработчики событий - &lt;strong&gt;public&lt;/strong&gt; или &lt;strong&gt;protected&lt;/strong&gt;.&lt;br /&gt;&lt;br /&gt;Вообще, конечно, это очень правильный подход. Только напрягает пара фактов - нужно возиться с объявлением класса и объявлять все компоненты, с которыми необходимо иметь дело в as-файле. Если, к примеру, я вдруг передумаю использовать в MXML вместо &lt;em&gt;LinkButton&lt;/em&gt; (а он уже объявлен так в AS-компоненте) простой &lt;em&gt;Button&lt;/em&gt;, получу ошибку - необходимо везде сделать замену. Выход - объявлять их дальних предков или вообще интерфейсы.&lt;br /&gt;&lt;br /&gt;А вот интересно - есть ли средства автоматизации этого процесса? Что-то типа команды "Create Code-behind Class" или при создании MXML-компонента подобная галочка. Я не нашел...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25528681162651304-3994929431426345061?l=racer242.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/n5wgm3N9xABLeTnwJGygiiQZZXw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/n5wgm3N9xABLeTnwJGygiiQZZXw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/n5wgm3N9xABLeTnwJGygiiQZZXw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/n5wgm3N9xABLeTnwJGygiiQZZXw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/pabt/~4/zIp21M4mCkg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://racer242.blogspot.com/feeds/3994929431426345061/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=25528681162651304&amp;postID=3994929431426345061" title="Комментарии: 4" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/25528681162651304/posts/default/3994929431426345061?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/25528681162651304/posts/default/3994929431426345061?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/pabt/~3/zIp21M4mCkg/code-behind-mxscript.html" title="Code-behind или mx:Script?" /><author><name>Евгений Симонов</name><uri>https://profiles.google.com/103035028933726102028</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-O8I1h_klPKM/AAAAAAAAAAI/AAAAAAAAAAA/nXxr79r2scI/s512-c/photo.jpg" /></author><thr:total>4</thr:total><feedburner:origLink>http://racer242.blogspot.com/2009/06/code-behind-mxscript.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEEHSX47fSp7ImA9WxJRFE8.&quot;"><id>tag:blogger.com,1999:blog-25528681162651304.post-8597286746933107559</id><published>2009-05-16T01:02:00.004+04:00</published><updated>2009-05-16T01:23:58.005+04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-05-16T01:23:58.005+04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Грабли" /><category scheme="http://www.blogger.com/atom/ns#" term="Flex" /><title>Модули, синглтоны, Type Coercion Failed и спасение</title><content type="html">&lt;p&gt;Сегодня столкнулся с такой проблемой:&lt;/p&gt;&lt;p&gt;Приложение использует модули. Один из модулей содержит ComboBox.&lt;br /&gt;Во время работы, подгружается то один модуль, то другой. Так вот.&lt;br /&gt;При первой активации, модуль с ComboBox работает корректно. Однако, при повторной активации модуля, начинаются проблемы - при нажатии на ComboBox вылетает ошибка:&lt;br /&gt;&lt;em&gt;TypeError: Error #1034: Ошибка типа Coercion: невозможно преобразовать mx.managers::PopUpManagerImpl@6c0ce41 в mx.managers.IPopUpManager.&lt;/em&gt;&lt;/p&gt;&lt;p&gt;Аналогичная ошибка с компонентом List, правда немного с другими классами:&lt;br /&gt;&lt;em&gt;TypeError: Error #1034: Ошибка типа Coercion: невозможно преобразовать mx.managers::DragManagerImpl@6b7ec11 в mx.managers.IDragManager.&lt;/em&gt;&lt;/p&gt;&lt;p&gt;Ужасаясь перспективе просидеть в дебаге всю ночь, полез в Гугл. И тут же нашел спасение - не один я столкнулся с таким казусом:&lt;br /&gt;&lt;a href="http://www.trap17.com/forums/Flex-Error-1034-Type-Coercion-Failed-Convert-Mxmanagers-t61175.html"&gt;Flex Error #1034: Type Coercion Failed: Cannot Convert Mx.managers&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Вот решение (я его оформил немного поизящнее):&lt;br /&gt;Нужно в коде основного приложения указать следующую строку:&lt;br /&gt;&lt;code&gt;import mx.managers.*;DragManager;HistoryManager;PopUpManager;&lt;/code&gt;&lt;/p&gt;&lt;p&gt;Одним индусам известно, что случается с этими синглтонами после выгрузки модуля, могу предположить, что таким образом, мы принуждаем компилятор внедрять эти классы в основное приложение а не в модули. В ином случае, они внедряются в модуль, и, скорее всего, в какой-то момент теряются.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25528681162651304-8597286746933107559?l=racer242.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/A_GEKm70Ylv6vN78FVyKMqswUPY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/A_GEKm70Ylv6vN78FVyKMqswUPY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/A_GEKm70Ylv6vN78FVyKMqswUPY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/A_GEKm70Ylv6vN78FVyKMqswUPY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/pabt/~4/xl4HY8hyvcs" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://racer242.blogspot.com/feeds/8597286746933107559/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=25528681162651304&amp;postID=8597286746933107559" title="Комментарии: 23" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/25528681162651304/posts/default/8597286746933107559?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/25528681162651304/posts/default/8597286746933107559?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/pabt/~3/xl4HY8hyvcs/type-coercion-failed.html" title="Модули, синглтоны, Type Coercion Failed и спасение" /><author><name>Евгений Симонов</name><uri>https://profiles.google.com/103035028933726102028</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-O8I1h_klPKM/AAAAAAAAAAI/AAAAAAAAAAA/nXxr79r2scI/s512-c/photo.jpg" /></author><thr:total>23</thr:total><feedburner:origLink>http://racer242.blogspot.com/2009/05/type-coercion-failed.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CE4BQns7fSp7ImA9WxJSEkw.&quot;"><id>tag:blogger.com,1999:blog-25528681162651304.post-3802679545971666056</id><published>2009-04-05T18:41:00.011+04:00</published><updated>2009-05-02T01:22:33.505+04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-05-02T01:22:33.505+04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Впечатления" /><category scheme="http://www.blogger.com/atom/ns#" term="Microphone" /><category scheme="http://www.blogger.com/atom/ns#" term="Red5" /><category scheme="http://www.blogger.com/atom/ns#" term="Обзоры" /><title>Записываем звук с помощью Red5</title><content type="html">Этот пост - итог исследования "&lt;a href="http://racer242.blogspot.com/2009/01/blog-post.html"&gt;Сохраняем звук с микрофона на сервер&lt;/a&gt;" проведенного еще в январе. Суть проекта - &lt;a href="http://www.baushki.ru/"&gt;конкурс колыбельных&lt;/a&gt; - любой желающий может зарегистрироваться и записать песню в собственном исполнении.&lt;br /&gt;&lt;br /&gt;Как обычно бывает, с момента зарождения проекта, уходят месяцы на процесс впаривания, продажи, рисования и утверждения дизайна. И вот, наступает очередь разработчиков, и, как обычно, на flash выделяется неделя, в лучшем случае - две (какая несправедливость).&lt;br /&gt;В этот раз, правда, всё было несколько иначе - разработка началась как раз примерно за неделю до моего отлета в Египет. Поэтому, пришлось сделать максимум, чтобы без меня две недели люди всё это ставили на свои рельсы. Принцип вынесения всех настроек в FlashVars решает эту проблему на раз. Главное не забыть составить подробный мануал.&lt;br /&gt;&lt;br /&gt;Итак, мы пришли к решению, что лучше в качестве медиа-сервера использовать Red5. Процесс установки под Windows и тестирования Red5 для локальной разработки я описал здесь: &lt;a href="http://racer242install.blogspot.com/2009/04/red5-red5.html"&gt;Установка Red5 и всё что нужно для Red5-разработки&lt;/a&gt;. По сути, в этом посте изложено всё необходимое для создания минимального приложения для записи звука/видео. В качестве формата хранения звуковых данных, решили оставить FLV. Сначала планировали конвертацию FLV в MP3 на сервере, и даже были идеи как это реализовать. Но позже решили, что для нужд проекта это излишество и лишняя нагрузка на сервер. Все записи сохраняются как есть, в формате FLV, и воспроизводятся проигрывателем, который, кстати, по виду и функционалу совсем не отличается от того, что воспроизводит MP3.&lt;br /&gt;&lt;br /&gt;С flash-частью оказалось всё слишком просто. Достаточно было использовать версию Flash 8 и AS2. За основу я взял пример из ...&lt;em&gt;\Red5\swf\samples\SimpleRecorder.fla&lt;/em&gt;. С момента окончания разработки прошло уже около месяц и многое забылось, но вот пара важных заметок:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Для записи, уровень тишины необходимо ставить в 0 (setSilenceLevel). Если для голосового общения, функция активности микрофона важна для экономии трафика, то при записи речи или песни это может навредить - запись будет не идентична выступлению.&lt;/li&gt;&lt;li&gt;Необходимо ограничить время записи (например, по таймауту), иначе найдутся охотники заполнить дисковое пространство сервера бесполезным мусором. Хотя, конечно, правильнее это ограничение сделать на сервере.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;В итоге, на выходе у меня получились две версии проигрывателей звука в форматах MP3 и FLV (можно было сделать универсальный, но времени не хватило) и рекордер звука.&lt;br /&gt;На локальном Red5, под Windows, это хозяйство работало на ура. Однако, когда потребовалось поставить Red5 под FreeBSD (если не ошибаюсь), у админов возникли серьезные проблемы с настройкой нашего приложения. Подробности мне не известны, знаю только, что у них всё заработало за день до моего прилета (т.е. возились 2 недели :) ).&lt;br /&gt;Такова уж особенность Open Source - конфигурация представляет собой темный лес xml-файлов, а нормальные инструменты по настройке, так чтобы галочку поставил и всё заработало - отсутствуют. Вот и выбирайте - платить за софт, или платить специалистам за настройку бесплатного софта. Но, слава Богу, всё это уже не моя забота.&lt;/p&gt;&lt;p&gt;* * * &lt;/p&gt;&lt;p&gt;Неплохая статья в тему:&lt;br /&gt;&lt;a href="http://forum.33b.ru/viewtopic.php?p=266906606"&gt;Урок. Вебкамеры с Flex 3. Часть 2&lt;/a&gt; &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25528681162651304-3802679545971666056?l=racer242.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/h7Y-PCGDTOwnngz-uSHsaXlkyzA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/h7Y-PCGDTOwnngz-uSHsaXlkyzA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/h7Y-PCGDTOwnngz-uSHsaXlkyzA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/h7Y-PCGDTOwnngz-uSHsaXlkyzA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/pabt/~4/1hza5gOYNPc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://racer242.blogspot.com/feeds/3802679545971666056/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=25528681162651304&amp;postID=3802679545971666056" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/25528681162651304/posts/default/3802679545971666056?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/25528681162651304/posts/default/3802679545971666056?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/pabt/~3/1hza5gOYNPc/red5.html" title="Записываем звук с помощью Red5" /><author><name>Евгений Симонов</name><uri>https://profiles.google.com/103035028933726102028</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-O8I1h_klPKM/AAAAAAAAAAI/AAAAAAAAAAA/nXxr79r2scI/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://racer242.blogspot.com/2009/04/red5.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEIMSHg_fCp7ImA9WxVUF04.&quot;"><id>tag:blogger.com,1999:blog-25528681162651304.post-1862035767771353751</id><published>2009-03-22T17:55:00.006+03:00</published><updated>2009-03-22T18:43:09.644+03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-03-22T18:43:09.644+03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Код" /><category scheme="http://www.blogger.com/atom/ns#" term="MXML" /><category scheme="http://www.blogger.com/atom/ns#" term="Идеи" /><category scheme="http://www.blogger.com/atom/ns#" term="Flex" /><title>mx:Pause vs flash.utils.Timer. Flex</title><content type="html">Декларативность MXML - огромное достоинство Flex.&lt;br /&gt;Легкое определение переменных в MXML значительно упрощает разработку:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;позволяет легко и наглядно определять их свойства и обработчики событий&lt;/li&gt;&lt;li&gt;автоматически делает переменные Bindable&lt;/li&gt;&lt;li&gt;позволяет их связать с другими переменными и выражениями&lt;/li&gt;&lt;li&gt;делает наглядным код&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Но, на сколько я понял, не все классы можно представить в декларативном виде. &lt;/p&gt;&lt;p&gt;Например, класс &lt;em&gt;flash.utils.Timer&lt;/em&gt; невозможно представить в виде MXML. Компилятор выдает ошибку "Неправильное количество аргументов". Всё от того, что конструктор этого класса содержит один обязательный параметр. Как его указать, и возможно ли это, увы, я не понял. &lt;/p&gt;&lt;p&gt;Но есть простое решение - использовать другой класс, хорошо подходящий по своему функционалу - &lt;em&gt;mx.effects.Pause&lt;/em&gt;: &lt;div id="code" rows="5"&gt;&amp;lt;mx:Pause&lt;br /&gt;id="somePause"&lt;br /&gt;duration="2000"&lt;br /&gt;effectEnd="somePause_effectEndHandler(event)"&lt;br /&gt;/&amp;gt;&lt;br /&gt;&lt;br /&gt;. . .&lt;br /&gt;&lt;br /&gt;//Стартовать задержку&lt;br /&gt;this.somePause.play();&lt;br /&gt;&lt;br /&gt;. . .&lt;br /&gt;&lt;br /&gt;private function somePause_effectEndHandler(event:EffectEvent):void {&lt;br /&gt;//Обработать окончание задержки&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25528681162651304-1862035767771353751?l=racer242.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/T5FLNjPHNqkhLfUmWTruqBB9Qec/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/T5FLNjPHNqkhLfUmWTruqBB9Qec/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/T5FLNjPHNqkhLfUmWTruqBB9Qec/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/T5FLNjPHNqkhLfUmWTruqBB9Qec/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/pabt/~4/IUz7E8vK3Ko" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://racer242.blogspot.com/feeds/1862035767771353751/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=25528681162651304&amp;postID=1862035767771353751" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/25528681162651304/posts/default/1862035767771353751?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/25528681162651304/posts/default/1862035767771353751?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/pabt/~3/IUz7E8vK3Ko/mxpause-vs-flashutilstimer-flex.html" title="mx:Pause vs flash.utils.Timer. Flex" /><author><name>Евгений Симонов</name><uri>https://profiles.google.com/103035028933726102028</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-O8I1h_klPKM/AAAAAAAAAAI/AAAAAAAAAAA/nXxr79r2scI/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://racer242.blogspot.com/2009/03/mxpause-vs-flashutilstimer-flex.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0INQ3s7cSp7ImA9WxVUFEU.&quot;"><id>tag:blogger.com,1999:blog-25528681162651304.post-4362576478928151020</id><published>2009-03-19T18:48:00.007+03:00</published><updated>2009-03-19T19:53:12.509+03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-03-19T19:53:12.509+03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="MXML" /><category scheme="http://www.blogger.com/atom/ns#" term="ASDoc" /><category scheme="http://www.blogger.com/atom/ns#" term="Flex" /><category scheme="http://www.blogger.com/atom/ns#" term="Справка" /><title>ASDoc in MXML. Правильно комментируем MXML.</title><content type="html">MXML для Flex-разработки имеет первостепенное значение. Однако, воспринимая его как порождение XML, до некоторых пор, я не считал его языком программирования или чем-то в этом духе.&lt;br /&gt;Теперь, уже достаточно сроднившись с MXML, понимаю, что есть необходимость правильно его комментировать. Просматривая листинги MXML, глаз так же нуждается в разделении блоков, как и при чтении AS-кода.&lt;br /&gt;Если с AS-кодом всё давно ясно (я его использую везде где надо и где необязательно), то вот с MXML хотелось бы разобраться. И поможет нам в этом статейка "&lt;a href="http://opensource.adobe.com/wiki/display/flexsdk/ASDoc+in+MXML"&gt;ASDoc in MXML - Functional and Design Specification&lt;/a&gt;". Выделим основные мысли из нее.&lt;br /&gt;&lt;p&gt;&lt;strong&gt;Основные положения&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;В настоящее время не существует способа документировать MXML-компоненты. (Кстати, в лайфдоках про это вот что сказано: &lt;a href="http://livedocs.adobe.com/flex/3/html/help.html?content=asdoc_5.html"&gt;Documenting MXML files&lt;/a&gt;). Компилятор asdoc не обрабатывает комментарии в MXML-файлах. Но число компонентов, разрабатываемых на базе MXML неуклонно растет, поэтому поддержка в asdoc файлов MXML очень бы помогла разработчикам при создании документации.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;ASDoc комментарий&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Для того, чтобы ASDoc-комментарий был обработан asdoc-компилятором, необходимо указать 3 тире после &amp;lt;!:&lt;br /&gt;&lt;code&gt;&amp;lt;!--- asdoc comment --&amp;gt;&lt;/code&gt;&lt;br /&gt;Для сравнения - обычный комментарий начинается с 2-х тире.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Комментирование MXML-компонентов и компонента уровня класса&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Комментарии для компонентов внутри MXML должны располагаться перед компонентами.&lt;br /&gt;Комментарий компонента уровня класса должен располагаться перед корневым тегом MXML:&lt;/p&gt;&lt;p&gt;&lt;div id="code" rows="10"&gt;&amp;lt;?xml version="1.0"?&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;!-- Standard MXML comment: events\myComponents\MyButton.mxml --&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;!---&lt;br /&gt;The class level comment for the component.&lt;br /&gt;This tag supports all ASDoc tags, and does not require a CDATA block.&lt;br /&gt;&lt;br /&gt;@see mx.container.VBox&lt;br /&gt;--&amp;gt;&lt;br /&gt;&amp;lt;mx:VBox xmlns="http://ns.adobe.com/mxml/2009" xmlns:mx="library:adobe/flex/halo" &amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;!--- Comment for button --&amp;gt;&lt;br /&gt;&amp;lt;mx:Button id="myButton" label="This button has comment"/&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;!--- This comment doesn't belong to any component and will be ignored --&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/mx:VBox&amp;gt;&lt;/div&gt;&lt;p&gt;Комментарии перед тегами Script, Metadata будут игнорироваться. Перед тегами Definition, Library, Private и внутри их, комментарии так же будут игнорироваться. &lt;/p&gt;&lt;p&gt;&lt;strong&gt;Итог&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;В статье приводятся примеры использования ASDoc комментирования в различных его применениях. Рассматривать их подробно я не буду - всё достаточно прозрачно.&lt;/p&gt;&lt;p&gt;Вывод таков - MXML комментировать надо. И для этого уже существует прототип (если я правильно понял) стандарта, которого и следует придерживаться.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25528681162651304-4362576478928151020?l=racer242.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/oGNAZl7zRnmcZJqlFQB1xlZfmGk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/oGNAZl7zRnmcZJqlFQB1xlZfmGk/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/oGNAZl7zRnmcZJqlFQB1xlZfmGk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/oGNAZl7zRnmcZJqlFQB1xlZfmGk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/pabt/~4/4muixFSwSUg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://racer242.blogspot.com/feeds/4362576478928151020/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=25528681162651304&amp;postID=4362576478928151020" title="Комментарии: 4" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/25528681162651304/posts/default/4362576478928151020?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/25528681162651304/posts/default/4362576478928151020?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/pabt/~3/4muixFSwSUg/asdoc-in-mxml-mxml.html" title="ASDoc in MXML. Правильно комментируем MXML." /><author><name>Евгений Симонов</name><uri>https://profiles.google.com/103035028933726102028</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-O8I1h_klPKM/AAAAAAAAAAI/AAAAAAAAAAA/nXxr79r2scI/s512-c/photo.jpg" /></author><thr:total>4</thr:total><feedburner:origLink>http://racer242.blogspot.com/2009/03/asdoc-in-mxml-mxml.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0YBRnY9eip7ImA9WxVVE0U.&quot;"><id>tag:blogger.com,1999:blog-25528681162651304.post-4032843507574954493</id><published>2009-03-05T16:17:00.022+03:00</published><updated>2009-03-07T02:12:37.862+03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-03-07T02:12:37.862+03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="MXML" /><category scheme="http://www.blogger.com/atom/ns#" term="Actionscript 3.0" /><category scheme="http://www.blogger.com/atom/ns#" term="Идеи" /><category scheme="http://www.blogger.com/atom/ns#" term="Грабли" /><category scheme="http://www.blogger.com/atom/ns#" term="Flex" /><title>Дружим Flex с Flash. Заметки: загрузка, внедрение, шрифт. Flex</title><content type="html">Закончился очередной дидлайн. После крупных проектов, которые делаются за 3-4 дня практически с нуля, остаются ощущения, схожие с состоянием после автобусного тура: в голове каша, мельком что-то увидел, урывками что-то запомнил, надо разобрать фотки. Теперь настало время немного отдышаться и закрепить полученный опыт.&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Для начала, несколько заметок: &lt;/p&gt;&lt;ul&gt;&lt;li&gt;Перенос строки в строках MXML: символ &amp;amp;#xd; - мелочь, а приятно.&lt;/li&gt;&lt;li&gt;Загрузка сложных Flash-приложений в SWFLoader должна производиться в выделенный домен приложения, т.к. могут быть конфликты классов: &lt;/li&gt;&lt;/ul&gt;&lt;div id="code" rows="5"&gt;&amp;lt;mx:SWFLoader autoLoad="false" id="swfLoader" source="application.swf" /&amp;gt;&lt;br /&gt;&lt;br /&gt;. . .&lt;br /&gt;&lt;br /&gt;private function creationCompleteHandler(event:Event):void {&lt;br /&gt;swfLoader.loaderContext=new LoaderContext(false,new ApplicationDomain());&lt;br /&gt;swfLoader.load();&lt;br /&gt;}&lt;br /&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;Если внешнее приложение подгружается в SWFLoader, есть вероятность, что в какой-то момент SWFLoader потеряет stage, что может пагубно отразиться на функциональности этого приложения. Если приложение где-то внутри обращается к stage и не обрабатывает его недоступность, то будут генерироваться ошибки. Побороть этот недостаток я не смог - только устранив все "не защищенные" stage из внешнего приложения. &lt;/li&gt;&lt;li&gt;Внедрение шрифтов. Гораздо надежнее внедрять шрифт непосредственно из TTF файла. Внедрение из файла SWF, в котором, в свою очередь, внедрен необходимый шрифт лучше оставить для тяжелых случаев несовместимостей с Flex. Дело в том, что почему-то, внедренные в SWF разные стили (normal, bold) шрифта не корректно "извлекаются" Flex-ом. Он не дает назвать разные стили разными именами (как это можно сделать в первом случае), теряет одно из начертаний (жирный шрифт просто не выводится). Возможно, это из-за особенностей конкретных шрифтов, но первый метод срабатывает гораздо стабильнее.&lt;/li&gt;&lt;/ul&gt;&lt;div id="code" rows="20"&gt;@font-face&lt;br /&gt;{&lt;br /&gt;fontFamily: "Century Schoolbook";&lt;br /&gt;fontWeight: normal;&lt;br /&gt;fontStyle: normal;&lt;br /&gt;src: url("file://./assets/fonts/CENSCBK.TTF");&lt;br /&gt;unicodeRange:&lt;br /&gt;U+0020-U+0040, /* Punctuation, Numbers */&lt;br /&gt;U+0041-U+005A, /* Upper-Case A-Z */&lt;br /&gt;U+005B-U+0060, /* Punctuation and Symbols */&lt;br /&gt;U+0061-U+007A, /* Lower-Case a-z */&lt;br /&gt;U+007B-U+007E, /* Punctuation and Symbols */&lt;br /&gt;U+00FC-U+00FD,&lt;br /&gt;U+0410-U+042F, /* Cyrillic Upper-Case A-Z */&lt;br /&gt;U+0430-U+0451; /* Cyrillic Lower-Case a-z */&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;@font-face&lt;br /&gt;{&lt;br /&gt;fontFamily: "Century Schoolbook Bold";&lt;br /&gt;fontWeight: bold;&lt;br /&gt;fontStyle: normal;&lt;br /&gt;src: url("file://./assets/fonts/SCHLBKB.TTF");&lt;br /&gt;unicodeRange:&lt;br /&gt;U+0020-U+0040, /* Punctuation, Numbers */&lt;br /&gt;U+0041-U+005A, /* Upper-Case A-Z */&lt;br /&gt;U+005B-U+0060, /* Punctuation and Symbols */&lt;br /&gt;U+0061-U+007A, /* Lower-Case a-z */&lt;br /&gt;U+007B-U+007E, /* Punctuation and Symbols */&lt;br /&gt;U+00FC-U+00FD,&lt;br /&gt;U+0410-U+042F, /* Cyrillic Upper-Case A-Z */&lt;br /&gt;U+0430-U+0451; /* Cyrillic Lower-Case a-z */&lt;br /&gt;}&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Внедрять клип из внешней SWF так, чтобы работали его фреймовые скрипты можно следующим образом:&lt;br /&gt;&lt;code&gt;source="@Embed(source='assets/Index.swf')" &lt;/code&gt;&lt;br /&gt;При внедрении отдельного символа, его фреймовые скрипты и скрипты всех вложенных объектов теряются:&lt;br /&gt;&lt;code&gt;source="@Embed(source='assets/Index.swf'#Index)" &lt;/code&gt;&lt;br /&gt;Игра с параметром mimeType не помогает.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;На управлении внедренным контентом я бы хотел остановиться подробнее. Если у нас много однотипного материала для внедрения вышеописанным способом, то плодить SWF-файлы не удобно, плюс, внедряя каждый файл, мы не можем обобщать графику - она будет внедряться для каждого файла заново (не проверял, но догадываюсь). &lt;/p&gt;&lt;p&gt;Куда удобнее создать одну большую библиотеку и из нее внедрять символы. Но, к сожалению, их скрипты уже будут не доступны.&lt;br /&gt;Но у нас есть в распоряжении метки фреймов и имена клипов. Совмещая возможности&lt;br /&gt;MovieClip.currentLabels и MovieClip.addFrameScript можно получить контроль над внедренным клипом и заставлять его в нужный момент выполнять необходимые нам действия: останавливать клип на нужном фрейме, генерировать события и даже передавать данные в текстовые поля клипа.&lt;/p&gt;&lt;p&gt;Создаем компонент - наследник SWFLoader. После инстанцирования класса внедренного клипа (конец метода load(), можно так же добавить и в обработчик события загрузки), считываются все его метки и в их фреймы добавляются необходимые скрипты. Имя каждой метки имеет ключевую составляющую, которая и определяет тип действия добавляемого скрипта.&lt;br /&gt;В нужный момент можно заставить клип остановиться, перейти на другую метку, генерировать событие (с идентификатором, так же зашитым в имя метки), просканировать клип и получить срез всех визуальных объектов, чтобы делать с ними всё что угодно. Главное - этот момент устанавливается прямо в таймлайне клипа, а не путем каких-либо расчетов количества фреймов или подобных методов.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Прекрасный момент - праздник еще не настал, а дидлайны уже позади! Отдыхать и набираться сил.&lt;/p&gt;&lt;p&gt;И конечно, наших прекрасных женщин поздравляю с праздником 8 марта! &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/25528681162651304-4032843507574954493?l=racer242.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/xrmbvqQySsygxM5r991Y2tjyZSI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/xrmbvqQySsygxM5r991Y2tjyZSI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/xrmbvqQySsygxM5r991Y2tjyZSI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/xrmbvqQySsygxM5r991Y2tjyZSI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/pabt/~4/MtZvo4uKHjM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://racer242.blogspot.com/feeds/4032843507574954493/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=25528681162651304&amp;postID=4032843507574954493" title="Комментарии: 1" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/25528681162651304/posts/default/4032843507574954493?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/25528681162651304/posts/default/4032843507574954493?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/pabt/~3/MtZvo4uKHjM/flex-flash-flex.html" title="Дружим Flex с Flash. Заметки: загрузка, внедрение, шрифт. Flex" /><author><name>Евгений Симонов</name><uri>https://profiles.google.com/103035028933726102028</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-O8I1h_klPKM/AAAAAAAAAAI/AAAAAAAAAAA/nXxr79r2scI/s512-c/photo.jpg" /></author><thr:total>1</thr:total><feedburner:origLink>http://racer242.blogspot.com/2009/03/flex-flash-flex.html</feedburner:origLink></entry></feed>

