<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-6693166578228563876</id><updated>2011-10-06T10:46:20.683-07:00</updated><category term='linux'/><category term='flash'/><category term='pydev'/><category term='directx'/><category term='ogre'/><category term='java'/><category term='as3ide'/><category term='codeblocks'/><category term='Аква-кнопка'/><category term='ниочем'/><category term='Тень'/><category term='Отражение'/><category term='django'/><category term='flex'/><category term='кнопки'/><category term='intellij idea'/><category term='mingw'/><category term='векторная графика'/><category term='opengl'/><category term='python'/><category term='wxwidgets'/><category term='gcc'/><category term='Inkscape'/><category term='eclipse'/><category term='actionscript'/><category term='ubuntu'/><category term='3D кнопка'/><category term='jython'/><category term='c++'/><category term='embed'/><category term='Кристальная кнопка'/><title type='text'>Космодром на коленке</title><subtitle type='html'>Заметки о разном.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://breeze-cosmodrome.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6693166578228563876/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://breeze-cosmodrome.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Breeze</name><uri>http://www.blogger.com/profile/05690030585062180386</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>11</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6693166578228563876.post-2089432918426382479</id><published>2010-02-23T05:18:00.000-08:00</published><updated>2010-03-06T21:07:58.139-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='intellij idea'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='actionscript'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>IntelliJ IDEA 9 лучшая IDE для ActionScript разработки под Linux</title><content type='html'>Не так давно у меня возникла потребность в IDE для ActionScript в Linux, т.к. на моей работе имеется ориентировка на использование Ubuntu и свободного ПО в рабочем процессе, что я всецело одобряю. :) Но, к сожалению, если под Windows выбор как коммерческих, так и бесплатных инструментов для ActionScript достаточно большой, то под Linux выбор не очень..&lt;br /&gt;&lt;br /&gt;В &lt;a href="http://breeze-cosmodrome.blogspot.com/2010/02/as3ide-actionscript-30flash-linux.html"&gt;предыдущем посте&lt;/a&gt; я уже перечислил известные мне доступные бесплатные IDE для ActionScript 3.0 в Linux и рассказал об основных возможностях AS3IDE.&lt;br /&gt;&lt;br /&gt;К сожалению, возможностей текущей версии AS3IDE (на январь 2010) для нормальной работы, на мой взгляд, недостаточно. А множество багов и недоработок отбивают всяческое желание к ее повседневному использованию. Статус Альфа-версии сказывается.. &lt;br /&gt;&lt;br /&gt;После нескольких дней общения с AS3IDE, я решил посмотреть коммерческие решения. В итоге остановился на IntelliJ IDEA 9..&lt;br /&gt;&lt;br /&gt;&lt;span id="fullpost"&gt;&lt;br /&gt;&lt;br /&gt;Поиски коммерческих IDE для ActionScript привели меня к трем продуктам: &lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.fdt.powerflasher.com/"&gt;FDT &lt;/a&gt; на базе Eclipse (129$,529$,780$)- на данный момент не имеет поддержки Linux, но разработчики обещают в скором времени. Отладчик только в Enterprise версии (780$);&lt;/li&gt;&lt;li&gt;&lt;a href="http://labs.adobe.com/technologies/flex/flexbuilder_linux/"&gt;Adobe Flex Builder 3 for Linux&lt;/a&gt; на базе Eclipse (250$-700$)- для Linux есть только Альфа версия без официальной коммерческой поддержки;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.jetbrains.com/idea/"&gt;IntelliJ IDEA 9&lt;/a&gt; - лучшая IDE для Java с поддержкой ActionScript из коробки (250$-600$).&lt;/li&gt;&lt;/ul&gt;Полной поддержки Linux ни в Flex Builder 3, ни в FDT не имеется, хотя работы в этом направлении ведутся. Цены на них, на мой субъективный взгляд не особо привлекательные. FDT поддерживает отладчик только в самой дорогой версии Enterprise, для меня этого достаточно чтобы поставить на нем крест, т.к. какой никакой отладчик есть даже в AS3IDE. В общем, желания их пробовать под Linux у меня не возникло. :) &lt;br /&gt;А вот IntelliJ IDEA от Jetbrains показалась привлекательной по цене и функциональным возможностям, плюс это продукт отечественного производителя :). Для индивидуального разработчика получить за 250$ отличную кросс-платформенную Java EE IDE с прекрасной поддержкой ActionScript в довесок, намного интереснее чем один лишь плагин для ActionScript за 250$ (в случае Flex Builder 3) или 780$ (в случае FDT). И хотя инструменты JavaEE разработки для Eclipse тоже достаточно продвинутые, IntelliJ IDEA славится своей интеллектуальностью. Вообще, на мой взгляд, Flex Builder 3 и FDT должны стоить в 2 раза дешевле IntelliJ IDEA, учитывая ее возможности из коробки. :)&lt;br /&gt;&lt;br /&gt;Поставив триальную версию и познакомившись с IntelliJ IDEA поближе, я понял, что это как раз то, что нужно:&lt;br /&gt;прекрасно работает в ubuntu;&lt;br /&gt;поддерживает ActionScript 3.0 на высоком уровне;&lt;br /&gt;имеется интеграция с Git;&lt;br /&gt;просто восхитительные возможности рефакторинга и инспектора кода;&lt;br /&gt;возможность просмотра классов из swf.&lt;br /&gt;&lt;br /&gt;Короче разработка на ActionScript в IntelliJ IDEA сплошное удовольствие. :)&lt;br /&gt;Незамедлительно обратил внимание начальства на этот продукт и необходимость его приобретения. :) &lt;br /&gt;&lt;br /&gt;Ну а дальше будет об установке, много скриншотов и немного комментариев к ним.&lt;br /&gt;&lt;br /&gt;Пара слов о запуске IntelliJ IDEA 9 в Ubuntu. &lt;br /&gt;&lt;br /&gt;На официальном сайте нужно скачать архив с Intellij IDEA 9. Без регистрации IDEA можно использовать 30 дней в режиме триала (достаточное время чтобы решить нужна ли она вам или нет):&lt;br /&gt;&lt;a href="http://www.jetbrains.com/idea/download/index.html#linux"&gt;Intellij Idea 9 Ultimate Edition&lt;/a&gt;(стабильная версия) или &lt;a href="http://confluence.jetbrains.net/display/IDEADEV/Maia+EAP"&gt;EAP сборки последних версии&lt;/a&gt; (за новые фичи платим стабильностью работы, сижу на этой версии проблем пока не возникало :) &lt;br /&gt;&lt;br /&gt;Нам так же потребуется Adobe Flex SDK &lt;a href="http://www.adobe.com/products/flex/flexdownloads/"&gt;http://www.adobe.com/products/flex/flexdownloads/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Для отладки и просмотра вывода trace в Intelliaj IDEA требуется установка в систему debug flash player plugin для браузера &lt;a href="http://www.adobe.com/support/flashplayer/downloads.html#fp10"&gt;http://www.adobe.com/support/flashplayer/downloads.html#fp10&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Установим JDK от sun и flash plugin:&lt;br /&gt;sudo aptitude install sun-java6-jdk flashplugin-nonfree&lt;br /&gt;&lt;br /&gt;Заменим файл Flash плагина "/usr/lib/flashplugin-installer/libflashplayer.so" на отладочную версию из архива &lt;a href="http://download.macromedia.com/pub/flashplayer/updaters/10/flash_player_10_linux_dev.tar.gz"&gt;http://download.macromedia.com/pub/flashplayer/updaters/10/flash_player_10_linux_dev.tar.gz&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_hgR5SO9hub4/S4K6RLNPqZI/AAAAAAAAAPo/tPqzJfKksr0/s1600-h/img17.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="268" src="http://4.bp.blogspot.com/_hgR5SO9hub4/S4K6RLNPqZI/AAAAAAAAAPo/tPqzJfKksr0/s320/img17.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Подробнее о установке Flash Debug Plugin в Ubuntu тут: &lt;a href="http://ubuntuforums.org/showthread.php?t=1300563"&gt;http://ubuntuforums.org/showthread.php?t=1300563&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Распакуем архивы с IDE и Flex SDK куда-нибудь. Я распаковывал просто в домашний каталог.&lt;br /&gt;Добавим в начало файла "ideaIU-94.273/bin/idea.sh" во вторую строчку путь к JDK:&lt;br /&gt;&lt;br /&gt;#!/bin/sh&lt;br /&gt;JDK_HOME="/usr/lib/jvm/java-6-sun/"&lt;br /&gt;# ...&lt;br /&gt;&lt;br /&gt;Подробнее о настройке Intellij Idea 9 в ubuntu описано тут: &lt;a href="http://techbrew.net/articles/200711/how-to-put-intellij-idea-on-ubuntu/"&gt;http://techbrew.net/articles/200711/how-to-put-intellij-idea-on-ubuntu/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;После этого запустим idea.sh (возможно потребуется сделать этот файл исполняемым в его свойствах) для запуска IDEA.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_hgR5SO9hub4/S4K5r4UVD5I/AAAAAAAAANQ/y1tJMHSLJW0/s1600-h/post-01.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="266" src="http://1.bp.blogspot.com/_hgR5SO9hub4/S4K5r4UVD5I/AAAAAAAAANQ/y1tJMHSLJW0/s320/post-01.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_hgR5SO9hub4/S4K5tU5Y79I/AAAAAAAAANY/c-6kmo39j0k/s1600-h/post-02.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="268" src="http://2.bp.blogspot.com/_hgR5SO9hub4/S4K5tU5Y79I/AAAAAAAAANY/c-6kmo39j0k/s320/post-02.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_hgR5SO9hub4/S4K5Uvkb0BI/AAAAAAAAANI/09TRsOJ83ps/s1600-h/post-00.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="268" src="http://2.bp.blogspot.com/_hgR5SO9hub4/S4K5Uvkb0BI/AAAAAAAAANI/09TRsOJ83ps/s320/post-00.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_hgR5SO9hub4/S4K5waZUdgI/AAAAAAAAANg/qVPvg8OOc3A/s1600-h/img00.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_hgR5SO9hub4/S4K5waZUdgI/AAAAAAAAANg/qVPvg8OOc3A/s320/img00.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_hgR5SO9hub4/S4K5xgTWvxI/AAAAAAAAANo/PEK4PHCexBU/s1600-h/img01.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_hgR5SO9hub4/S4K5xgTWvxI/AAAAAAAAANo/PEK4PHCexBU/s320/img01.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_hgR5SO9hub4/S4K5yT-zCDI/AAAAAAAAANw/xU5EnYLsIag/s1600-h/img02.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_hgR5SO9hub4/S4K5yT-zCDI/AAAAAAAAANw/xU5EnYLsIag/s320/img02.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: left;"&gt;Во время первого запуска IDEA попросит выбрать требуемые плагины. Мне пока нужен только Git, а JavaEE не нужно совсем.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_hgR5SO9hub4/S4K50XYmDDI/AAAAAAAAAN4/QxOeAilP9Ro/s1600-h/img03.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_hgR5SO9hub4/S4K50XYmDDI/AAAAAAAAAN4/QxOeAilP9Ro/s320/img03.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;a href="http://1.bp.blogspot.com/_hgR5SO9hub4/S4K5yT-zCDI/AAAAAAAAANw/xU5EnYLsIag/s1600-h/img02.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_hgR5SO9hub4/S4K54So712I/AAAAAAAAAOA/kdV_fHqCENI/s1600-h/img04.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_hgR5SO9hub4/S4K54So712I/AAAAAAAAAOA/kdV_fHqCENI/s320/img04.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;a href="http://4.bp.blogspot.com/_hgR5SO9hub4/S4K50XYmDDI/AAAAAAAAAN4/QxOeAilP9Ro/s1600-h/img03.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_hgR5SO9hub4/S4K55HAWeNI/AAAAAAAAAOI/uPGOGoUiRkU/s1600-h/img05.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_hgR5SO9hub4/S4K55HAWeNI/AAAAAAAAAOI/uPGOGoUiRkU/s320/img05.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;a href="http://1.bp.blogspot.com/_hgR5SO9hub4/S4K54So712I/AAAAAAAAAOA/kdV_fHqCENI/s1600-h/img04.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_hgR5SO9hub4/S4K55y2qySI/AAAAAAAAAOQ/1Wt6qIZmkbw/s1600-h/img06.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_hgR5SO9hub4/S4K55y2qySI/AAAAAAAAAOQ/1Wt6qIZmkbw/s320/img06.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;a href="http://3.bp.blogspot.com/_hgR5SO9hub4/S4K55HAWeNI/AAAAAAAAAOI/uPGOGoUiRkU/s1600-h/img05.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Создание "HeloWorld" ActionScript&amp;nbsp;проекта.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_hgR5SO9hub4/S4K5_mBBN3I/AAAAAAAAAOY/C3CZs9PoXxg/s1600-h/img07.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="335" src="http://4.bp.blogspot.com/_hgR5SO9hub4/S4K5_mBBN3I/AAAAAAAAAOY/C3CZs9PoXxg/s400/img07.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;a href="http://2.bp.blogspot.com/_hgR5SO9hub4/S4K55y2qySI/AAAAAAAAAOQ/1Wt6qIZmkbw/s1600-h/img06.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_hgR5SO9hub4/S4K6APNaboI/AAAAAAAAAOg/gAYLbaeLug4/s1600-h/img08.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="335" src="http://3.bp.blogspot.com/_hgR5SO9hub4/S4K6APNaboI/AAAAAAAAAOg/gAYLbaeLug4/s400/img08.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;a href="http://4.bp.blogspot.com/_hgR5SO9hub4/S4K5_mBBN3I/AAAAAAAAAOY/C3CZs9PoXxg/s1600-h/img07.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_hgR5SO9hub4/S4K6BRX8ICI/AAAAAAAAAOo/86zzgvJjFkU/s1600-h/img09.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="335" src="http://2.bp.blogspot.com/_hgR5SO9hub4/S4K6BRX8ICI/AAAAAAAAAOo/86zzgvJjFkU/s400/img09.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_hgR5SO9hub4/S4K6CNW_xQI/AAAAAAAAAOw/mELhXEblh3Y/s1600-h/img10.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="335" src="http://4.bp.blogspot.com/_hgR5SO9hub4/S4K6CNW_xQI/AAAAAAAAAOw/mELhXEblh3Y/s400/img10.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;a href="http://2.bp.blogspot.com/_hgR5SO9hub4/S4K6BRX8ICI/AAAAAAAAAOo/86zzgvJjFkU/s1600-h/img09.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Нужно добавить на Flex SDK.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_hgR5SO9hub4/S4K6HfCdLBI/AAAAAAAAAO4/XAZQHfg-YNw/s1600-h/img11.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="335" src="http://3.bp.blogspot.com/_hgR5SO9hub4/S4K6HfCdLBI/AAAAAAAAAO4/XAZQHfg-YNw/s400/img11.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;a href="http://4.bp.blogspot.com/_hgR5SO9hub4/S4K6CNW_xQI/AAAAAAAAAOw/mELhXEblh3Y/s1600-h/img10.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_hgR5SO9hub4/S4K6IpYsrTI/AAAAAAAAAPA/LPlzikn7Ufc/s1600-h/img12.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="335" src="http://3.bp.blogspot.com/_hgR5SO9hub4/S4K6IpYsrTI/AAAAAAAAAPA/LPlzikn7Ufc/s400/img12.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;a href="http://3.bp.blogspot.com/_hgR5SO9hub4/S4K6HfCdLBI/AAAAAAAAAO4/XAZQHfg-YNw/s1600-h/img11.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_hgR5SO9hub4/S4K6Nyt4ecI/AAAAAAAAAPI/-0lLB9wLxCw/s1600-h/img13.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="335" src="http://4.bp.blogspot.com/_hgR5SO9hub4/S4K6Nyt4ecI/AAAAAAAAAPI/-0lLB9wLxCw/s400/img13.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;a href="http://3.bp.blogspot.com/_hgR5SO9hub4/S4K6IpYsrTI/AAAAAAAAAPA/LPlzikn7Ufc/s1600-h/img12.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_hgR5SO9hub4/S4K6PXciPMI/AAAAAAAAAPQ/37M0pWZbKlA/s1600-h/img14.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="335" src="http://4.bp.blogspot.com/_hgR5SO9hub4/S4K6PXciPMI/AAAAAAAAAPQ/37M0pWZbKlA/s400/img14.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;a href="http://4.bp.blogspot.com/_hgR5SO9hub4/S4K6Nyt4ecI/AAAAAAAAAPI/-0lLB9wLxCw/s1600-h/img13.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_hgR5SO9hub4/S4K6QAyRn3I/AAAAAAAAAPY/VC6-g5-QirM/s1600-h/img15.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="335" src="http://2.bp.blogspot.com/_hgR5SO9hub4/S4K6QAyRn3I/AAAAAAAAAPY/VC6-g5-QirM/s400/img15.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;a href="http://4.bp.blogspot.com/_hgR5SO9hub4/S4K6PXciPMI/AAAAAAAAAPQ/37M0pWZbKlA/s1600-h/img14.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Теперь Flex SDK можно выбрать.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_hgR5SO9hub4/S4K6QnE-rnI/AAAAAAAAAPg/DoAnqnzdg_8/s1600-h/img16.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="335" src="http://1.bp.blogspot.com/_hgR5SO9hub4/S4K6QnE-rnI/AAAAAAAAAPg/DoAnqnzdg_8/s400/img16.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;a href="http://2.bp.blogspot.com/_hgR5SO9hub4/S4K6QAyRn3I/AAAAAAAAAPY/VC6-g5-QirM/s1600-h/img15.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;Компиляция, запуск и отладка проекта.&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_hgR5SO9hub4/S4K6RgkvlAI/AAAAAAAAAPw/T4fPiXgEDpY/s1600-h/img18.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="335" src="http://2.bp.blogspot.com/_hgR5SO9hub4/S4K6RgkvlAI/AAAAAAAAAPw/T4fPiXgEDpY/s400/img18.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;a href="http://4.bp.blogspot.com/_hgR5SO9hub4/S4K6RLNPqZI/AAAAAAAAAPo/tPqzJfKksr0/s1600-h/img17.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Создадим конфигурацию запуска.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_hgR5SO9hub4/S4K6Sc7mBiI/AAAAAAAAAP4/iT5kwCOhsKY/s1600-h/img19.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="335" src="http://4.bp.blogspot.com/_hgR5SO9hub4/S4K6Sc7mBiI/AAAAAAAAAP4/iT5kwCOhsKY/s400/img19.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_hgR5SO9hub4/S4K6TCpUU1I/AAAAAAAAAQA/gRhc-6MwzTc/s1600-h/img20.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="335" src="http://1.bp.blogspot.com/_hgR5SO9hub4/S4K6TCpUU1I/AAAAAAAAAQA/gRhc-6MwzTc/s400/img20.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;a href="http://2.bp.blogspot.com/_hgR5SO9hub4/S4K6RgkvlAI/AAAAAAAAAPw/T4fPiXgEDpY/s1600-h/img18.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Выберем главный класс.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_hgR5SO9hub4/S4K6ThHrc9I/AAAAAAAAAQI/g69H6jZ1j2c/s1600-h/img21.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="335" src="http://2.bp.blogspot.com/_hgR5SO9hub4/S4K6ThHrc9I/AAAAAAAAAQI/g69H6jZ1j2c/s400/img21.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;a href="http://1.bp.blogspot.com/_hgR5SO9hub4/S4K6TCpUU1I/AAAAAAAAAQA/gRhc-6MwzTc/s1600-h/img20.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_hgR5SO9hub4/S4K6UmiTl4I/AAAAAAAAAQQ/GJbM4oRQZ5A/s1600-h/img22.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="335" src="http://2.bp.blogspot.com/_hgR5SO9hub4/S4K6UmiTl4I/AAAAAAAAAQQ/GJbM4oRQZ5A/s400/img22.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;a href="http://2.bp.blogspot.com/_hgR5SO9hub4/S4K6ThHrc9I/AAAAAAAAAQI/g69H6jZ1j2c/s1600-h/img21.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_hgR5SO9hub4/S4K6VAHvABI/AAAAAAAAAQY/m1ZTWo7zkko/s1600-h/img23.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="335" src="http://4.bp.blogspot.com/_hgR5SO9hub4/S4K6VAHvABI/AAAAAAAAAQY/m1ZTWo7zkko/s400/img23.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;a href="http://2.bp.blogspot.com/_hgR5SO9hub4/S4K6UmiTl4I/AAAAAAAAAQQ/GJbM4oRQZ5A/s1600-h/img22.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Добавим точку останова щелчком мыши напротив строки и запустим отладку.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_hgR5SO9hub4/S4K6VwHVljI/AAAAAAAAAQg/ivVOhB-dj6Y/s1600-h/img24.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="335" src="http://1.bp.blogspot.com/_hgR5SO9hub4/S4K6VwHVljI/AAAAAAAAAQg/ivVOhB-dj6Y/s400/img24.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;Но для запуска нужно сначала указать браузер.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_hgR5SO9hub4/S4K6WXQ5JRI/AAAAAAAAAQo/iYCuyw2hsl4/s1600-h/img25.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="335" src="http://3.bp.blogspot.com/_hgR5SO9hub4/S4K6WXQ5JRI/AAAAAAAAAQo/iYCuyw2hsl4/s400/img25.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Идем в&amp;nbsp;настройки&amp;nbsp;среды.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_hgR5SO9hub4/S4K6XRiJIrI/AAAAAAAAAQw/HBzq98MhJws/s1600-h/img26.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="335" src="http://3.bp.blogspot.com/_hgR5SO9hub4/S4K6XRiJIrI/AAAAAAAAAQw/HBzq98MhJws/s400/img26.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: center;"&gt;&lt;span class="Apple-style-span" style="-webkit-text-decorations-in-effect: underline; color: #0000ee;"&gt;&lt;img border="0" height="335" src="http://2.bp.blogspot.com/_hgR5SO9hub4/S4K6XxnyLbI/AAAAAAAAAQ4/iWbedZtQfZs/s400/img27.png" width="400" /&gt;&lt;/span&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;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_hgR5SO9hub4/S4K6YzjTK2I/AAAAAAAAARA/5TImT5j5gbE/s1600-h/img28.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="335" src="http://3.bp.blogspot.com/_hgR5SO9hub4/S4K6YzjTK2I/AAAAAAAAARA/5TImT5j5gbE/s400/img28.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Отладчик просто шикарный.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_hgR5SO9hub4/S4K6Zm3tkgI/AAAAAAAAARI/5imRNadrp3Q/s1600-h/img29.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="335" src="http://4.bp.blogspot.com/_hgR5SO9hub4/S4K6Zm3tkgI/AAAAAAAAARI/5imRNadrp3Q/s400/img29.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Отлов trace&amp;nbsp;присутствует.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_hgR5SO9hub4/S4K6aLFqAcI/AAAAAAAAARQ/WblaFTm9f_k/s1600-h/img30.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="335" src="http://3.bp.blogspot.com/_hgR5SO9hub4/S4K6aLFqAcI/AAAAAAAAARQ/WblaFTm9f_k/s400/img30.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Запущенный&amp;nbsp;в браузере&amp;nbsp;HelloWorld.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_hgR5SO9hub4/S4K6aqsQEiI/AAAAAAAAARY/yGkqXu8SFDQ/s1600-h/img31.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_hgR5SO9hub4/S4K6aqsQEiI/AAAAAAAAARY/yGkqXu8SFDQ/s320/img31.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6693166578228563876-2089432918426382479?l=breeze-cosmodrome.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://breeze-cosmodrome.blogspot.com/feeds/2089432918426382479/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://breeze-cosmodrome.blogspot.com/2010/02/intellij-idea-9-ide-actionscript-linux.html#comment-form' title='Комментарии: 3'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6693166578228563876/posts/default/2089432918426382479'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6693166578228563876/posts/default/2089432918426382479'/><link rel='alternate' type='text/html' href='http://breeze-cosmodrome.blogspot.com/2010/02/intellij-idea-9-ide-actionscript-linux.html' title='IntelliJ IDEA 9 лучшая IDE для ActionScript разработки под Linux'/><author><name>Breeze</name><uri>http://www.blogger.com/profile/05690030585062180386</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_hgR5SO9hub4/S4K6RLNPqZI/AAAAAAAAAPo/tPqzJfKksr0/s72-c/img17.png' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6693166578228563876.post-5860476759416422398</id><published>2010-02-20T22:47:00.000-08:00</published><updated>2010-02-22T22:03:22.344-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='flex'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='actionscript'/><category scheme='http://www.blogger.com/atom/ns#' term='as3ide'/><title type='text'>AS3IDE - среда разработки для ActionScript 3.0 и Flash в Linux</title><content type='html'>Если вы решили вести разработку ActionScript 3.0/Flash приложений из под Linux используя только OpenSource инструменты, то вам вероятно следует запастись мужеством и крепкими нервами. Хотя Adobe Flex SDK вполне себе кросс-платформенный и работоспособный, OpenSource IDE для ActionScript 3.0 в Linux находятся в зачаточном состоянии. :)&lt;br /&gt;&lt;div&gt;&lt;br /&gt;Сегодня я немного расскажу об AS3IDE, достаточно перспективном плагине к Eclipse, позволяющем разрабатывать на ActionScript используя Adobe Flex SDK.&lt;br /&gt;&lt;span id="fullpost"&gt;&lt;br /&gt;Перечислю основные OpenSourse решения для ActionScript, что мне вообще попадалось:&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span id="fullpost"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span id="fullpost"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span id="fullpost"&gt;&lt;ul&gt;&lt;li&gt;Голый Eclipse с прикрученным компилятором mxmlc из &lt;a href="http://www.adobe.com/products/flex/flexdownloads/"&gt;Adobe Flex SDK&lt;/a&gt; - нет отладки, нет интеллектуальной подстановки.. В общем, на мой взгляд не намного лучше текстового редактора со скриптом для сборки. &lt;/li&gt;&lt;li&gt;FlexBean плагин для Netbeans - оставил о себе унылые воспоминания недоделанного прототипа. В нем не было вообще ничего кроме запуска компилятора.&lt;/li&gt;&lt;li&gt;Asdt плагин для Eclipse - не пробовал, т.к. он под ActionScript 2.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.blogger.com/www.flashdevelop.org"&gt;FlashDevelop&lt;/a&gt; под Windows вполне терпимый инструмент но написан под .net. Под mono  у меня не завелся. Из коробки умеет только ловить вывод trace.&lt;/li&gt;&lt;li&gt;&lt;a href="http://code.google.com/p/minibuilder/"&gt;Air MiniBuilder&lt;/a&gt; неплохой кросс-платформенный редактор кода для ActionScript, перспективный развивающийся проект. К сожалению, его нельзя назвать полноценной IDE, т.к. нет отладчика и интеграции со сторонними инструментами вроде систем контроля версии.&lt;/li&gt;&lt;li&gt;&lt;a href="http://sourceforge.net/projects/as3ide/"&gt;AS3IDE &lt;/a&gt;плагин для Eclipse - второе работоспособное решение под Linux что мне попадалось. &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Здесь я, пожалуй, отмечу, что если вам нужна полноценная качественная среда разработки на Flex/ActionScript под Linux уже сейчас, то настоятельно советую посмотреть на &lt;a href="http://www.jetbrains.com/idea/download/index.html#linux"&gt;Intellij Idea 9 Ultimate Edition&lt;/a&gt; или &lt;a href="http://confluence.jetbrains.net/display/IDEADEV/Maia+EAP"&gt;EAP&lt;/a&gt; (Community Edition не поддерживает Flex/ActionScript). На мой взгляд лучшей поддержки Flex/ActionScript под Linux на данный момент просто не существует. И своих денег эта ide стоит, хотя и жалко что нельзя купить поддержку Flex/ActionScript отдельно от Java.&lt;br /&gt;&lt;br /&gt;Ну а если вы хотите поэкспериментировать и познакомится с новым перспективным инструментом, я расскажу Вам про AS3IDE и его установке в Ubuntu.&lt;br /&gt;&lt;br /&gt;Перечислю положительные качества AS3IDE:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;является плагином к Eclipse и позволяет использовать все плюшки этой IDE;&lt;/li&gt;&lt;li&gt;кросс-платформенность;&lt;/li&gt;&lt;li&gt;имеет более-менее юзабельный отладчик с точками останова, просмотром переменных и отловом вывода trace. &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Недостатки (по причине сырости проекта):&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Может повесит Eclipse намертво, при компиляции более менее сложного проекта;&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;br /&gt;AS3IDE начал свою историю недавно, в сентябре 2009. На февраль 2010 находится в стадии преальфа версии и сейчас еще достаточно сырой.&lt;br /&gt;Доступен здесь &lt;a href="http://sourceforge.net/projects/as3ide/"&gt;http://sourceforge.net/projects/as3ide/&lt;/a&gt; Судя по svn репозиторию, проект активно развивается и есть надежда на то, что со временем он станет вполне полноценным решением для коммерческой разработки.&lt;br /&gt;&lt;br /&gt;Чтобы попробовать AS3IDE нужно для начала установить Eclise:&lt;br /&gt;sudo aptitude install eclipse&lt;br /&gt;Для просмотра swf в браузере нужно поставить Flash-плагин:&lt;br /&gt;sudo aptitude install flashplugin-nonfree&lt;br /&gt;Скачаем плагин AS3IDE: файл &lt;a href="http://sourceforge.net/projects/as3ide/files/"&gt;as3ide_update_site.zip&lt;/a&gt;&lt;br /&gt;Нам так же потребуется Adobe Flex SDK&lt;br /&gt;&lt;a href="http://www.adobe.com/products/flex/flexdownloads/"&gt;http://www.adobe.com/products/flex/flexdownloads/&lt;/a&gt;&lt;br /&gt;И Standalone Debug Flash Player для поддержки отладки:&lt;br /&gt;&lt;a href="http://download.macromedia.com/pub/flashplayer/updaters/10/flash_player_10_linux_dev.tar.gz"&gt;http://download.macromedia.com/pub/flashplayer/updaters/10/flash_player_10_linux_dev.tar.gz&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Распакуйте куда-нибудь Flex SDK  (например: ~/flex_sdk_3.5).&lt;/li&gt;&lt;li&gt;Распакуйте standalone debug fashplayer в директорию %FlexSDK%/bin (например: ~/flex_sdk_3.5/bin/flashplayer). Standalone версия fashplayer находится в архиве: flash_player_10_linux_dev.tar.gz/flash_player_10_linux_dev/standalone/debugger/flashplayer.tar.gz/flashplayer&lt;/li&gt;&lt;li&gt;Распакуйте куда-ниудь as3ide_update_site.zip (например: ~/as3ide_update_site)&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_hgR5SO9hub4/S4D3YJsob_I/AAAAAAAAAHY/xfT73yRdetI/s1600-h/pic0.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5440620344155598834" src="http://3.bp.blogspot.com/_hgR5SO9hub4/S4D3YJsob_I/AAAAAAAAAHY/xfT73yRdetI/s400/pic0.png" style="cursor: hand; cursor: pointer; display: block; height: 335px; margin: 0px auto 10px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_hgR5SO9hub4/S4DzBALdxBI/AAAAAAAAAEQ/oVhUKZ72XGI/s1600-h/pic1.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5440615548417066002" src="http://4.bp.blogspot.com/_hgR5SO9hub4/S4DzBALdxBI/AAAAAAAAAEQ/oVhUKZ72XGI/s400/pic1.png" style="cursor: hand; cursor: pointer; display: block; height: 335px; margin: 0px auto 10px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_hgR5SO9hub4/S4DzBXSKEGI/AAAAAAAAAEY/RKg9m1f8nDA/s1600-h/pic2.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5440615554619150434" src="http://2.bp.blogspot.com/_hgR5SO9hub4/S4DzBXSKEGI/AAAAAAAAAEY/RKg9m1f8nDA/s400/pic2.png" style="cursor: hand; cursor: pointer; display: block; height: 335px; margin: 0px auto 10px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_hgR5SO9hub4/S4DzBxWC0qI/AAAAAAAAAEg/dkCvvYT3hiE/s1600-h/pic3.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5440615561614774946" src="http://4.bp.blogspot.com/_hgR5SO9hub4/S4DzBxWC0qI/AAAAAAAAAEg/dkCvvYT3hiE/s400/pic3.png" style="cursor: hand; cursor: pointer; display: block; height: 335px; margin: 0px auto 10px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_hgR5SO9hub4/S4D0slhSiCI/AAAAAAAAAFQ/iD9GhP6ZskY/s1600-h/pic9.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5440617396686719010" src="http://3.bp.blogspot.com/_hgR5SO9hub4/S4D0slhSiCI/AAAAAAAAAFQ/iD9GhP6ZskY/s400/pic9.png" style="cursor: hand; cursor: pointer; display: block; height: 335px; margin: 0px auto 10px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;Запустите Eclipse и установите плагин AS3IDE добавив папку из архива в качестве источника приложений.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_hgR5SO9hub4/S4DzCAg7GgI/AAAAAAAAAEo/nwuYEUl4Ak4/s1600-h/pic4.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5440615565686938114" src="http://2.bp.blogspot.com/_hgR5SO9hub4/S4DzCAg7GgI/AAAAAAAAAEo/nwuYEUl4Ak4/s400/pic4.png" style="cursor: hand; cursor: pointer; display: block; height: 335px; margin: 0px auto 10px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_hgR5SO9hub4/S4DzCWampjI/AAAAAAAAAEw/2ZyrC7JjZ7c/s1600-h/pic5.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5440615571566011954" src="http://2.bp.blogspot.com/_hgR5SO9hub4/S4DzCWampjI/AAAAAAAAAEw/2ZyrC7JjZ7c/s400/pic5.png" style="cursor: hand; cursor: pointer; display: block; height: 335px; margin: 0px auto 10px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_hgR5SO9hub4/S4D0rYUkWiI/AAAAAAAAAE4/SSaEV7mGFrQ/s1600-h/pic6.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5440617375963830818" src="http://4.bp.blogspot.com/_hgR5SO9hub4/S4D0rYUkWiI/AAAAAAAAAE4/SSaEV7mGFrQ/s400/pic6.png" style="cursor: hand; cursor: pointer; display: block; height: 335px; margin: 0px auto 10px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_hgR5SO9hub4/S4D0rwjinpI/AAAAAAAAAFA/fXS33Cnbpx4/s1600-h/pic7.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5440617382469082770" src="http://4.bp.blogspot.com/_hgR5SO9hub4/S4D0rwjinpI/AAAAAAAAAFA/fXS33Cnbpx4/s400/pic7.png" style="cursor: hand; cursor: pointer; display: block; height: 335px; margin: 0px auto 10px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_hgR5SO9hub4/S4D0seIvXRI/AAAAAAAAAFI/WX-CJEK1-eE/s1600-h/pic8.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5440617394704702738" src="http://3.bp.blogspot.com/_hgR5SO9hub4/S4D0seIvXRI/AAAAAAAAAFI/WX-CJEK1-eE/s400/pic8.png" style="cursor: hand; cursor: pointer; display: block; height: 335px; margin: 0px auto 10px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;Настроим путь к распакованному Flex SDK:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_hgR5SO9hub4/S4D0s4ZcbTI/AAAAAAAAAFY/4t4sNj6qnC4/s1600-h/pic10.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5440617401754086706" src="http://2.bp.blogspot.com/_hgR5SO9hub4/S4D0s4ZcbTI/AAAAAAAAAFY/4t4sNj6qnC4/s400/pic10.png" style="cursor: hand; cursor: pointer; display: block; height: 335px; margin: 0px auto 10px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_hgR5SO9hub4/S4D087teiXI/AAAAAAAAAFg/PpnkLwVs3Hc/s1600-h/pic11.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5440617677521324402" src="http://4.bp.blogspot.com/_hgR5SO9hub4/S4D087teiXI/AAAAAAAAAFg/PpnkLwVs3Hc/s400/pic11.png" style="cursor: hand; cursor: pointer; display: block; height: 335px; margin: 0px auto 10px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;Создадим новый поект AS3IDE:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_hgR5SO9hub4/S4D09NXCoGI/AAAAAAAAAFo/QQwnax4YHQc/s1600-h/pic12.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5440617682259058786" src="http://1.bp.blogspot.com/_hgR5SO9hub4/S4D09NXCoGI/AAAAAAAAAFo/QQwnax4YHQc/s400/pic12.png" style="cursor: hand; cursor: pointer; display: block; height: 335px; margin: 0px auto 10px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_hgR5SO9hub4/S4D09qJpY8I/AAAAAAAAAFw/JGL5gG1sG3s/s1600-h/pic13.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5440617689987507138" src="http://2.bp.blogspot.com/_hgR5SO9hub4/S4D09qJpY8I/AAAAAAAAAFw/JGL5gG1sG3s/s400/pic13.png" style="cursor: hand; cursor: pointer; display: block; height: 335px; margin: 0px auto 10px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_hgR5SO9hub4/S4D09_4qB1I/AAAAAAAAAF4/LksJYOwScMM/s1600-h/pic14.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5440617695821825874" src="http://4.bp.blogspot.com/_hgR5SO9hub4/S4D09_4qB1I/AAAAAAAAAF4/LksJYOwScMM/s400/pic14.png" style="cursor: hand; cursor: pointer; display: block; height: 335px; margin: 0px auto 10px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_hgR5SO9hub4/S4D0-BjyGgI/AAAAAAAAAGA/P37Q7WMIL2c/s1600-h/pic15.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5440617696271145474" src="http://1.bp.blogspot.com/_hgR5SO9hub4/S4D0-BjyGgI/AAAAAAAAAGA/P37Q7WMIL2c/s400/pic15.png" style="cursor: hand; cursor: pointer; display: block; height: 335px; margin: 0px auto 10px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;Вставим код "HelloWorld" :)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;&lt;span style="color: black; font-family: 'Courier New'; font-size: 85%;"&gt;package&lt;br /&gt;{&lt;br /&gt;import flash.display.Sprite;&lt;br /&gt;import flash.text.TextField;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;class&lt;/span&gt; Main extends Sprite{&lt;br /&gt;&lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;function&lt;/span&gt; Main(){&lt;br /&gt;&lt;span style="color: blue;"&gt;var&lt;/span&gt; txt:TextField = &lt;span style="color: blue;"&gt;new&lt;/span&gt; TextField();&lt;br /&gt;txt.text = &lt;span style="color: #a31515;"&gt;"Hello world!"&lt;/span&gt;;&lt;br /&gt;addChild(txt);&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: grey; font-size: 78%;"&gt;* This source code was highlighted with &lt;a href="http://virtser.net/blog/post/source-code-highlighter.aspx"&gt;&lt;span style="color: grey; font-size: 78%;"&gt;Source Code Highlighter&lt;/span&gt;&lt;/a&gt;.&lt;/span&gt;&lt;/code&gt;&lt;/blockquote&gt;&lt;/span&gt;&lt;span id="fullpost"&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_hgR5SO9hub4/S4D1NNuYlmI/AAAAAAAAAGI/8NFi8XE9yHM/s1600-h/pic16.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5440617957234873954" src="http://3.bp.blogspot.com/_hgR5SO9hub4/S4D1NNuYlmI/AAAAAAAAAGI/8NFi8XE9yHM/s400/pic16.png" style="cursor: hand; cursor: pointer; display: block; height: 335px; margin: 0px auto 10px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;Настроим конфигурацию запуска/отладки. Укажем путь к Standalone FlashPlayer:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_hgR5SO9hub4/S4D1NsjE6RI/AAAAAAAAAGQ/Po9UIwM6A7s/s1600-h/pic17.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5440617965508946194" src="http://1.bp.blogspot.com/_hgR5SO9hub4/S4D1NsjE6RI/AAAAAAAAAGQ/Po9UIwM6A7s/s400/pic17.png" style="cursor: hand; cursor: pointer; display: block; height: 335px; margin: 0px auto 10px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_hgR5SO9hub4/S4D1NwXSjmI/AAAAAAAAAGY/pRcLYafiHnA/s1600-h/pic18.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5440617966533250658" src="http://4.bp.blogspot.com/_hgR5SO9hub4/S4D1NwXSjmI/AAAAAAAAAGY/pRcLYafiHnA/s400/pic18.png" style="cursor: hand; cursor: pointer; display: block; height: 335px; margin: 0px auto 10px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_hgR5SO9hub4/S4D1OAh6dVI/AAAAAAAAAGg/-DbM3QkiOb0/s1600-h/pic19.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5440617970872776018" src="http://1.bp.blogspot.com/_hgR5SO9hub4/S4D1OAh6dVI/AAAAAAAAAGg/-DbM3QkiOb0/s400/pic19.png" style="cursor: hand; cursor: pointer; display: block; height: 335px; margin: 0px auto 10px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;Нажмем на кнопку Run и проверим работоспособность нашего приложения:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_hgR5SO9hub4/S4D1OqqWwzI/AAAAAAAAAGo/auMUUZ1y4gY/s1600-h/pic20.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5440617982182474546" src="http://3.bp.blogspot.com/_hgR5SO9hub4/S4D1OqqWwzI/AAAAAAAAAGo/auMUUZ1y4gY/s400/pic20.png" style="cursor: hand; cursor: pointer; display: block; height: 335px; margin: 0px auto 10px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;Проверим отладчик. Поставим точку остановки:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_hgR5SO9hub4/S4D1iQygfCI/AAAAAAAAAGw/KNAjhjIx9tE/s1600-h/pic21.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5440618318834727970" src="http://4.bp.blogspot.com/_hgR5SO9hub4/S4D1iQygfCI/AAAAAAAAAGw/KNAjhjIx9tE/s400/pic21.png" style="cursor: hand; cursor: pointer; display: block; height: 335px; margin: 0px auto 10px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;Запустим приложение  в отладочном режиме:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_hgR5SO9hub4/S4D1ihJ7r1I/AAAAAAAAAG4/Z4s_v4e9c1c/s1600-h/pic22.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5440618323227946834" src="http://4.bp.blogspot.com/_hgR5SO9hub4/S4D1ihJ7r1I/AAAAAAAAAG4/Z4s_v4e9c1c/s400/pic22.png" style="cursor: hand; cursor: pointer; display: block; height: 335px; margin: 0px auto 10px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;Переключимся на отладочную перспективу:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_hgR5SO9hub4/S4D1i5G0oBI/AAAAAAAAAHA/j6c_HSAQVLE/s1600-h/pic23.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5440618329657352210" src="http://2.bp.blogspot.com/_hgR5SO9hub4/S4D1i5G0oBI/AAAAAAAAAHA/j6c_HSAQVLE/s400/pic23.png" style="cursor: hand; cursor: pointer; display: block; height: 335px; margin: 0px auto 10px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;Точка останова отработала. В окне отладчика можно посмотреть содержимое переменной txt.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_hgR5SO9hub4/S4D1jCTZMsI/AAAAAAAAAHI/oz9yms0b5yg/s1600-h/pic24.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5440618332125999810" src="http://4.bp.blogspot.com/_hgR5SO9hub4/S4D1jCTZMsI/AAAAAAAAAHI/oz9yms0b5yg/s400/pic24.png" style="cursor: hand; cursor: pointer; display: block; height: 335px; margin: 0px auto 10px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;Проверим автоподстановку. В наличии. :)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_hgR5SO9hub4/S4D1jb3p3xI/AAAAAAAAAHQ/PxJjah1mSng/s1600-h/pic25.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5440618338988973842" src="http://1.bp.blogspot.com/_hgR5SO9hub4/S4D1jb3p3xI/AAAAAAAAAHQ/PxJjah1mSng/s400/pic25.png" style="cursor: hand; cursor: pointer; display: block; height: 335px; margin: 0px auto 10px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;Вот собственно и все. Будем надеяться AS3IDE продолжит свое развитие и когда нибудь станет достаточно зрелой для использования в коммерческой разработке. Пока же она больше годится для небольших экспериментов.&lt;br /&gt;&lt;br /&gt;Благодарю за внимание, удачного кодинга! :)&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6693166578228563876-5860476759416422398?l=breeze-cosmodrome.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://breeze-cosmodrome.blogspot.com/feeds/5860476759416422398/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://breeze-cosmodrome.blogspot.com/2010/02/as3ide-actionscript-30flash-linux.html#comment-form' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6693166578228563876/posts/default/5860476759416422398'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6693166578228563876/posts/default/5860476759416422398'/><link rel='alternate' type='text/html' href='http://breeze-cosmodrome.blogspot.com/2010/02/as3ide-actionscript-30flash-linux.html' title='AS3IDE - среда разработки для ActionScript 3.0 и Flash в Linux'/><author><name>Breeze</name><uri>http://www.blogger.com/profile/05690030585062180386</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_hgR5SO9hub4/S4D3YJsob_I/AAAAAAAAAHY/xfT73yRdetI/s72-c/pic0.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6693166578228563876.post-8996055418154211941</id><published>2010-02-15T09:55:00.000-08:00</published><updated>2010-02-15T10:13:59.082-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='flex'/><category scheme='http://www.blogger.com/atom/ns#' term='actionscript'/><category scheme='http://www.blogger.com/atom/ns#' term='embed'/><title type='text'>Использование тега Embed в ActionScript 3.0</title><content type='html'>На работе решили периодически делать небольшие доклады по используемым в рабочем процессе технологиям, языкам и инструментам. Надеюсь это будет способствовать получению новых знаний и освежению старых. :)&lt;br /&gt;Делал доклад по использованию тега Embed для встраивания ресурсов в приложения на ActionScript 3.0 (без упора на Flex). Доклад в форме презентации, на слайдах ключевые моменты. &lt;br /&gt;Думаю это может быть кому-нибудь полезно для первичного знакомства с Embed, поэтому выкладываю  PDF тут (&lt;a href="http://narod.ru/disk/17944242000/embedding.pdf.html"&gt;embedding.pdf&lt;/a&gt;).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6693166578228563876-8996055418154211941?l=breeze-cosmodrome.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://breeze-cosmodrome.blogspot.com/feeds/8996055418154211941/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://breeze-cosmodrome.blogspot.com/2010/02/embed-actionscript-30.html#comment-form' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6693166578228563876/posts/default/8996055418154211941'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6693166578228563876/posts/default/8996055418154211941'/><link rel='alternate' type='text/html' href='http://breeze-cosmodrome.blogspot.com/2010/02/embed-actionscript-30.html' title='Использование тега Embed в ActionScript 3.0'/><author><name>Breeze</name><uri>http://www.blogger.com/profile/05690030585062180386</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6693166578228563876.post-8630666866452569977</id><published>2010-02-12T10:08:00.000-08:00</published><updated>2010-02-13T08:31:33.849-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='flex'/><category scheme='http://www.blogger.com/atom/ns#' term='django'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='pydev'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='actionscript'/><category scheme='http://www.blogger.com/atom/ns#' term='flash'/><title type='text'>Симпатичная форма обратной связи средствами Flex и Django</title><content type='html'>Доброго времени суток!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;При написании данной статьи ставилась цель описать законченный пример использования двух фреймворков &lt;strong&gt;Flex&lt;/strong&gt; и &lt;strong&gt;Django&lt;/strong&gt;, а так же показать процесс разработки с их помощью небольшого приложения от начала и до конца.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://img-fotki.yandex.ru/get/4013/nitrobin.0/0_27d7a_386571c9_orig.jpg"&gt;&lt;img src="http://img-fotki.yandex.ru/get/4108/nitrobin.0/0_27d8b_fca20444_L.jpg" width="240" height="300" title="notepad" alt="notepad" border="0" /&gt;&lt;/a&gt;     &lt;a href="http://img-fotki.yandex.ru/get/3910/nitrobin.0/0_27d83_c8932d42_orig.jpg"&gt;&lt;img src="http://img-fotki.yandex.ru/get/3910/nitrobin.0/0_27d83_c8932d42_M.jpg" title="post" alt="post" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Задача&lt;/h2&gt;&lt;br /&gt;Реализовать форму обратной связи для отсылки пользовательских сообщений администратору сайта.&lt;br /&gt;&lt;span id="fullpost"&gt;&lt;br /&gt;&lt;h2&gt;Пояснение&lt;/h2&gt;&lt;br /&gt;Связка Flex и Django может показаться нерациональной для решения данной задачи, ведь с ней вполне можно справится с помощью HTML и одного скрипта на PHP. Так и есть. :) На этой небольшой задаче я постараюсь рассмотреть минимум необходимый для работы с этими замечательными фреймворками в связке.&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;От автора&lt;/h2&gt;&lt;br /&gt;Статья будет интересна тем, кто еще только присматривается к Flex и Django, но не пробовал их в деле. К статье прилагаются полные исходные коды сервера и клиента. Их можно скачать отсюда &lt;a href="http://narod.ru/disk/17591468000/SendFormFlexDjango.zip.html"&gt;SendFormFlexDjango.zip&lt;/a&gt;. В силу специфики задачи серверная часть примера получилась очень маленькой, так что большая часть статьи описывает создание Flex клиента.&lt;br /&gt;&lt;br /&gt;Сразу отмечу, что я не спец по Flex и Django и, к сожалению, не могу сказать, что имею серьезный опыт в web-разработке. :) Дружу с Python уже более двух лет, хотя до недавнего времени не применял для web. Год назад я столкнулся с Flex и немного работал с ним. А несколько недель назад я начал разработку небольшого проекта, для реализации клиентской части которого решил использовать Flex/ActionScript 3.0, а для сервера Django/Python. После небольшого перерыва и без груза чужой кодовой базы, можно сказать начал знакомство с Flex заново, с более свежими ощущениями. :) С Django я ранее знаком не был, и в процессе изучения был приятно удивлен удобством этого фреймворка. На мой взгляд сочетание Flex и Django позволяет довольно быстро получить практический результат.&lt;br /&gt;&lt;br /&gt;Из вещей которые мне больше всего понравились во Flex: декларативное описание интерфейса и Data binding. Эти особенности позволяют писать гибкий код и компактный. Что понравилось в Django так это обилие возможностей "из коробки" и прекрасная документация.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;О себе немного рассказал. Технологии похвалил. Пора к делу!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Что потребуется для работы?&lt;/h2&gt;&lt;br /&gt;Для разработки клиента можно взять Trial-версию &lt;b&gt;&lt;a href="http://www.adobe.com/cfusion/entitlement/index.cfm?e=flexbuilder3"&gt;Adobe Flex Builder 3&lt;/a&gt;&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;Однако, данной статье я буду использовать бесплатные инструменты &lt;strong&gt;FlashDevelop&lt;/strong&gt; + &lt;strong&gt;Flex SDK&lt;/strong&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Adobe Flex 3.5 SDK&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Нужен для компиляции клиента.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.adobe.com/cfusion/entitlement/index.cfm?e=flex3sdk"&gt;Страница загрузки.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;FlashDevelop&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Бесплатная среда разработки. На данный момент лучшая бесплатная IDE для ActionScript и Flex. В сравнении с &lt;strong&gt;Flex Builder 3&lt;/strong&gt; очень аскетичная. К сожалению, хоть она и open source, но написана под .Net, и поддерживается только под Windows. Под Mono не проверял.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flashdevelop.org/"&gt;http://www.flashdevelop.org&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Inkscape&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Этот графический векторный редактор потребуется для редактирования и экспорта макета формы из формата svg. Макет в svg находится в архиве с &lt;a href="http://narod.ru/disk/17591468000/SendFormFlexDjango.zip.html"&gt;исходниками&lt;/a&gt; для статьи. &lt;a href="http://www.inkscape.org/"&gt;http://www.inkscape.org/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Aptana Studio&lt;/strong&gt; или &lt;strong&gt;Eclipse&lt;/strong&gt; совместно с дополнением &lt;strong&gt;Pydev&lt;/strong&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.aptana.org/"&gt;http://www.aptana.org/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://pydev.org/nightly"&gt;http://pydev.org/nightly&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Python 2.6&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Замечательный язык программирования. ;)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.python.org/"&gt;http://www.python.org/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Django 1.1.1&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.djangoproject.com/"&gt;http://www.djangoproject.com/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://media.djangoproject.com/releases/1.1.1/Django-1.1.1.tar.gz"&gt;Django-1.1.1.tar.gz&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Для отладки может понадобиться &lt;strong&gt;Debug&lt;/strong&gt; версия &lt;strong&gt;Flash Player&lt;/strong&gt;. Различные версии &lt;strong&gt;Flash Player&lt;/strong&gt; можно скачать &lt;a href="http://www.adobe.com/support/flashplayer/downloads.html#fp10"&gt;здесь&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Я скачал &lt;a href="http://download.macromedia.com/pub/flashplayer/updaters/10/flashplayer_10_sa_debug.exe"&gt;Standalone&lt;/a&gt; версию плеера, просто закинул его в &lt;em&gt;Program Files&lt;/em&gt; и сопоставил для открытия swf файлов.&lt;br /&gt;&lt;br /&gt;Огорчает лишь, что по умолчанию Flash Develop не содержит встроенного отладчика и умеет отображать только вывод функции &lt;b&gt;trace()&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;Отладочного вывода через &lt;b&gt;trace()&lt;/b&gt; должно хватать для большинства задач.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Для вывода сложных объектов можно использовать функцию &lt;b&gt;mx.utils.ObjectUtil.toString(obj)&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;Если же не доступна отладочная версия плеера (нельзя просмотреть вывод функции trace() ), то можно воспользоваться стандартной функцией показа сообщений &lt;b&gt;mx.controls.Alert.show(msg)&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;&lt;h1&gt;Пишем клиентскую часть&lt;/h1&gt;&lt;br /&gt;&lt;h2&gt;Подготовка&lt;/h2&gt;&lt;br /&gt;Для разработки клиентской части нам потребуется &lt;strong&gt;FlashDevelop&lt;/strong&gt;, &lt;strong&gt;Inkscape&lt;/strong&gt; и &lt;strong&gt;Flex SDK&lt;/strong&gt;.&lt;br /&gt;&lt;br /&gt;Распакуем &lt;strong&gt;Flex SDK&lt;/strong&gt; куда-нибудь и настроим в &lt;strong&gt;FlashDevelop&lt;/strong&gt; путь к нему:&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Tools-&amp;gt;Programm Settings-&amp;gt;AS3Context-&amp;gt;Flex SDK Location&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Шаг 1&lt;/h2&gt;&lt;br /&gt;Создадим в &lt;strong&gt;FlashDevelop&lt;/strong&gt; проект &lt;em&gt;Flex 3 Project&lt;/em&gt; с именем &lt;strong&gt;feedback_client&lt;/strong&gt; (&lt;em&gt;Project-&amp;gt;New Project&lt;/em&gt;).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://img-fotki.yandex.ru/get/3911/nitrobin.0/0_27d7b_84897946_orig.jpg"&gt;&lt;img src="http://img-fotki.yandex.ru/get/3911/nitrobin.0/0_27d7b_84897946_M.jpg" title="post" alt="post" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Новый проект содержит файл &lt;b&gt;Main.mxml&lt;/b&gt;, откроем его и вставим следующий код:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;&amp;lt;?xml version=&lt;span style="color:#A31515;"&gt;"1.0"&lt;/span&gt; encoding=&lt;span style="color:#A31515;"&gt;"utf-8"&lt;/span&gt;?&amp;gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;&amp;lt;mx:Application xmlns:mx=&lt;span style="color:#A31515;"&gt;"http://www.adobe.com/2006/mxml"&lt;/span&gt; width=&lt;span style="color:#A31515;"&gt;"400"&lt;/span&gt; height=&lt;span style="color:#A31515;"&gt;"300"&lt;/span&gt;&amp;gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;  &amp;lt;mx:VBox x=&lt;span style="color:#A31515;"&gt;"0"&lt;/span&gt; y=&lt;span style="color:#A31515;"&gt;"0"&lt;/span&gt; width=&lt;span style="color:#A31515;"&gt;"100%"&lt;/span&gt; height=&lt;span style="color:#A31515;"&gt;"100%"&lt;/span&gt; horizontalAlign=&lt;span style="color:#A31515;"&gt;"center"&lt;/span&gt;&amp;gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;    &amp;lt;mx:HBox width=&lt;span style="color:#A31515;"&gt;"100%"&lt;/span&gt;&amp;gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;      &amp;lt;mx:Label text=&lt;span style="color:#A31515;"&gt;"Имя"&lt;/span&gt; width=&lt;span style="color:#A31515;"&gt;"15%"&lt;/span&gt;/&amp;gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;      &amp;lt;mx:TextInput id=&lt;span style="color:#A31515;"&gt;"nameTxt"&lt;/span&gt; width=&lt;span style="color:#A31515;"&gt;"100%"&lt;/span&gt; maxChars=&lt;span style="color:#A31515;"&gt;"40"&lt;/span&gt; /&amp;gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;    &amp;lt;/mx:HBox&amp;gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;    &amp;lt;mx:HBox width=&lt;span style="color:#A31515;"&gt;"100%"&lt;/span&gt;&amp;gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;      &amp;lt;mx:Label text=&lt;span style="color:#A31515;"&gt;"e-mail"&lt;/span&gt; width=&lt;span style="color:#A31515;"&gt;"15%"&lt;/span&gt;/&amp;gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;      &amp;lt;mx:TextInput id=&lt;span style="color:#A31515;"&gt;"emailTxt"&lt;/span&gt; width=&lt;span style="color:#A31515;"&gt;"100%"&lt;/span&gt; maxChars=&lt;span style="color:#A31515;"&gt;"40"&lt;/span&gt;/&amp;gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;    &amp;lt;/mx:HBox&amp;gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;    &amp;lt;mx:TextArea id=&lt;span style="color:#A31515;"&gt;"msgTxt"&lt;/span&gt; width=&lt;span style="color:#A31515;"&gt;"100%"&lt;/span&gt; height=&lt;span style="color:#A31515;"&gt;"100%"&lt;/span&gt; maxChars=&lt;span style="color:#A31515;"&gt;"5000"&lt;/span&gt; /&amp;gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;    &amp;lt;mx:Button id=&lt;span style="color:#A31515;"&gt;"sendBtn"&lt;/span&gt; label=&lt;span style="color:#A31515;"&gt;"Отправить"&lt;/span&gt; /&amp;gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;  &amp;lt;/mx:VBox&amp;gt;  &lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;&amp;lt;/mx:Application&amp;gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;code&gt;&lt;span style="font-size:78%;color:gray;"&gt;* This source code was highlighted with &lt;a href="http://virtser.net/blog/post/source-code-highlighter.aspx"&gt;&lt;span style="font-size:78%;color:gray;"&gt;Source Code Highlighter&lt;/span&gt;&lt;/a&gt;.&lt;/span&gt;&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;Описание приложения на &lt;strong&gt;Flex&lt;/strong&gt; начинается с узла &lt;b&gt;mx:Application&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;В свойствах этого узла описываются габаритные размеры итоговой флэшl2;и и фоновый цвет. &lt;strong&gt;Application&lt;/strong&gt; в программе на &lt;strong&gt;Flex&lt;/strong&gt; может быть только один. Экземпляр текущего приложения всегда можно узнать из свойства &lt;b&gt;mx.core.Application.application&lt;/b&gt;. Все остальные элементы управления добавляются как дочерние элементы &lt;strong&gt;Application&lt;/strong&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;В данном примере я использовал контейнеры &lt;b&gt;VBox&lt;/b&gt; и &lt;b&gt;HBox&lt;/b&gt; для автоматического выравнивания элементов интерфейса. Существует множество способов задавать размеры и положение объекта: &lt;b&gt;x&lt;/b&gt;, &lt;b&gt;y&lt;/b&gt;, &lt;b&gt;left&lt;/b&gt;, &lt;b&gt;right&lt;/b&gt;, &lt;b&gt;top&lt;/b&gt;, &lt;b&gt;bottom&lt;/b&gt;, &lt;b&gt;width&lt;/b&gt;, &lt;b&gt;height&lt;/b&gt;, &lt;b&gt;horizontalCenter&lt;/b&gt;, &lt;b&gt;verticalCenter&lt;/b&gt;. Что особенно удобно, так это возможность использования процентов для задания некоторых величин.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Для компиляции и запуска проекта нажмем &lt;b&gt;F5&lt;/b&gt; или кнопку на панели инструментов:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="http://img-fotki.yandex.ru/get/4110/nitrobin.0/0_27d7c_20eed936_orig.jpg" title="post" alt="post" border="0" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Если все в порядке, запустится &lt;strong&gt;Flash Player&lt;/strong&gt; или браузер с нашим приложением:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://img-fotki.yandex.ru/get/4012/nitrobin.0/0_27d7d_9ea6b13_orig.jpg"&gt;&lt;img src="http://img-fotki.yandex.ru/get/4012/nitrobin.0/0_27d7d_9ea6b13_M.jpg" title="post" alt="post" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Для простоты я не стал в примере использовать стандартные компоненты для создания форм и механизм валидации. &lt;strong&gt;Flex&lt;/strong&gt; предоставляет довольно обширный набор компонентов пользовательского интерфейса. Создать простую форму для отправки сообщения не составляет труда, но с оформлением по умолчанию она смотрится слегка уныло.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Шаг 2&lt;/h2&gt;&lt;br /&gt;Попробуем исправить ситуацию, для этого добавим в наше приложение графику.&lt;br /&gt;&lt;br /&gt;В качестве примера к статье &lt;a href="http://narod.ru/disk/17591468000/SendFormFlexDjango.zip.html"&gt;прилагается&lt;/a&gt;, созданный в &lt;strong&gt;Inkscape&lt;/strong&gt;, &lt;b&gt;svg-файл&lt;/b&gt; с макетом формы отправки в виде блокнота.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Создадим в директории проекта &lt;strong&gt;feedback_client&lt;/strong&gt; каталог &lt;em&gt;assets&lt;/em&gt; в который будем помещать всю графику.&lt;br /&gt;&lt;br /&gt;Подготовим графику для встраивания в приложение, экспортировав &lt;b&gt;svg&lt;/b&gt; элементы макта в файлы &lt;b&gt;png&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;Откроем файл "&lt;em&gt;notepad_src.svg&lt;/em&gt;" и экспортируем в &lt;b&gt;png&lt;/b&gt; слой "&lt;em&gt;Блокнот&lt;/em&gt;".&lt;br /&gt;&lt;br /&gt;Для этого откроем окно со списком слоев &lt;b&gt;Shift+Ctrl+L&lt;/b&gt; (&lt;em&gt;Слой-&amp;gt;Слои&lt;/em&gt;), снимем замок со слоя "&lt;em&gt;Блокнот&lt;/em&gt;", а на остальные наоборот навесим. Выберем все &lt;b&gt;Ctrl+A&lt;/b&gt; (&lt;em&gt;Правка-&amp;gt;Выделить все&lt;/em&gt;). &lt;b&gt;Shift+Ctrl+E&lt;/b&gt; (&lt;em&gt;Файл-&amp;gt;экспортировать в растр&lt;/em&gt;). Нажать кнопку "&lt;em&gt;Выделение&lt;/em&gt;" и поставить галочку экспортировать только выделение, чтобы фон не попал в растр. Выбираем где сохранить файл и жмем экспорт.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://img-fotki.yandex.ru/get/4110/nitrobin.0/0_27d7e_f6f7a6f7_orig.jpg"&gt;&lt;img src="http://img-fotki.yandex.ru/get/4110/nitrobin.0/0_27d7e_f6f7a6f7_M.jpg" title="post" alt="post" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Аналогичным образом экспортируется еще три изображения разных состояний кнопки отправки.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Шаг 3&lt;/h2&gt;&lt;br /&gt;Изменим структур &lt;b&gt;Main.mxml&lt;/b&gt; и опишем графику в &lt;b&gt;css&lt;/b&gt; файле.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Чтобы не загромождать &lt;b&gt;Main.mxml&lt;/b&gt; вынесем форму для ввода данных в отдельный компонент, в файл &lt;b&gt;FormCanvas.mxml&lt;/b&gt; и создадим еще один компонент для отображения сообщений, &lt;b&gt;StatusCanvas.mxml&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Cкажу пару слов о создании своих комп&amp;#1086;нент.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Новые компоненты создавать в &lt;strong&gt;Flex&lt;/strong&gt; проще простого. Однажды описав их в отдельном &lt;b&gt;mxml&lt;/b&gt; файле их легко потом использовать где угодно как в других &lt;b&gt;mxml&lt;/b&gt; так из &lt;b&gt;ActionScript&lt;/b&gt;. Для получения нового компонента создается &lt;b&gt;mxml&lt;/b&gt; файл и в качестве корневого узла указывается компонент от которого требуется наследоваться.&lt;br /&gt;&lt;br /&gt;В нашем случае это будет &lt;b&gt;mx:Canvas&lt;/b&gt;:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;&amp;lt;?xml version=&lt;span style="color:#A31515;"&gt;"1.0"&lt;/span&gt; encoding=&lt;span style="color:#A31515;"&gt;"utf-8"&lt;/span&gt;?&amp;gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;&amp;lt;!--src/NewComponent.mxml --&amp;gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;&amp;lt;mx:Canvas xmlns:mx=&lt;span style="color:#A31515;"&gt;"http://www.adobe.com/2006/mxml"&lt;/span&gt; &amp;gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;  &amp;lt;mx:Label id=&lt;span style="color:#A31515;"&gt;"mylabel"&lt;/span&gt; text=&lt;span style="color:#A31515;"&gt;"label"&lt;/span&gt;/&amp;gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;&amp;lt;/mx:Canvas&amp;gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;code&gt;&lt;span style="font-size:78%;color:gray;"&gt;* This source code was highlighted with &lt;a href="http://virtser.net/blog/post/source-code-highlighter.aspx"&gt;&lt;span style="font-size:78%;color:gray;"&gt;Source Code Highlighter&lt;/span&gt;&lt;/a&gt;.&lt;/span&gt;&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;Внутри этого узла можно размещать любые теги с описанием элементов управления. При компиляции mxml файла создается новый &lt;b&gt;ActionScript&lt;/b&gt; класс с именем таким же как имя файла. Для элементов с указанным свойством id, автоматически создаются публичные свойства для доступа к ним из кода ActinScript и биндинга.&lt;br /&gt;&lt;br /&gt;Пример использования:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;&lt;span style="color:blue;"&gt;var&lt;/span&gt; nc:NewComponent = &lt;span style="color:blue;"&gt;new&lt;/span&gt; NewComponent();&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;&lt;span style="color:blue;"&gt;this&lt;/span&gt;.addChild(nc); &lt;span style="color:green;"&gt;// добавление nc на отображаемый компонент&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;&lt;span style="color:green;"&gt;/* отображение nc */&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;Alert.show(nc.mylabel.text); &lt;span style="color:green;"&gt;//допустимо но объект nc уже должен быть отображен на экране&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;code&gt;&lt;span style="font-size:78%;color:gray;"&gt;* This source code was highlighted with &lt;a href="http://virtser.net/blog/post/source-code-highlighter.aspx"&gt;&lt;span style="font-size:78%;color:gray;"&gt;Source Code Highlighter&lt;/span&gt;&lt;/a&gt;.&lt;/span&gt;&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;Если &lt;b&gt;nc&lt;/b&gt; еще не отображен в приложении, то его дочерние элементы еще не созданы и поле mylabel будет содержать null.&lt;br /&gt;&lt;br /&gt;Переменные будут гарантированно доступны только после события creationComplete. (Хорошее описание этого процесса &lt;a href="http://www.slideshare.net/Constantiner/flex-component-lifecycle-overview"&gt;flex-component-lifecycle-overview&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;Если требуется передать объекту параметры сразу при создании, следует описать внутри него свои свойства или поля посредством тега &lt;b&gt;mx:Script&lt;/b&gt; (см. &lt;b&gt;StatusCanvasScript.as&lt;/b&gt; и &lt;b&gt;StatusCanvas.mxml&lt;/b&gt; ), они будут инициироваться в конструкторе. Можно проводить их обработку в обработчике события creationComplete, либо, пометив как &lt;b&gt;[Bindable]&lt;/b&gt;, биндить(&lt;b&gt;BindingUtils.bindProperty()&lt;/b&gt;) непосредственно на элементы управления. Для простоты встраивания графики подключим ее через css. Создадим директорию &lt;em&gt;styles&lt;/em&gt; и в ней файл &lt;b&gt;main.css&lt;/b&gt;. Опишем &lt;b&gt;css&lt;/b&gt; классы с картинкой нашего блокнота и скины для кнопки, используя ключевое слово &lt;b&gt;Embed&lt;/b&gt; для встраивания графики в результирующий &lt;b&gt;swf&lt;/b&gt; файл приложения:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;.notepadBg{&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;  backgroundImage: Embed(&lt;span style="color:#A31515;"&gt;"../assets/notepad.png"&lt;/span&gt;);&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;  verticalScrollPolicy: off;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;  horizontalScrollPolicy: off;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt; &lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;.sendButton&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;{&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;  upSkin: Embed(&lt;span style="color:#A31515;"&gt;"../assets/send_btn_active.png"&lt;/span&gt;);&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;  overSkin: Embed(&lt;span style="color:#A31515;"&gt;"../assets/send_btn_over.png"&lt;/span&gt;);&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;  downSkin: Embed(&lt;span style="color:#A31515;"&gt;"../assets/send_btn_down.png"&lt;/span&gt;);  &lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;  disabledSkin:Embed(&lt;span style="color:#A31515;"&gt;"../assets/send_btn_active.png"&lt;/span&gt;);&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;code&gt;&lt;span style="font-size:78%;color:gray;"&gt;* This source code was highlighted with &lt;a href="http://virtser.net/blog/post/source-code-highlighter.aspx"&gt;&lt;span style="font-size:78%;color:gray;"&gt;Source Code Highlighter&lt;/span&gt;&lt;/a&gt;.&lt;/span&gt;&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;Теперь мы можем подключить наш css в любом mxml файле:&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;mx:Style&lt;/span&gt; &lt;span style="color:red;"&gt;source&lt;/span&gt;&lt;span style="color:blue;"&gt;="../styles/main.css"&lt;/span&gt;&lt;span style="color:blue;"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;И применять описанные в css классы к компонентам указывая имя класса в свойстве styleName:&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;mx:Canvas&lt;/span&gt; &lt;span style="color:red;"&gt;styleName&lt;/span&gt;&lt;span style="color:blue;"&gt;="notepadBg"&lt;/span&gt; &lt;span style="color:red;"&gt;width&lt;/span&gt;&lt;span style="color:blue;"&gt;="400"&lt;/span&gt; &lt;span style="color:red;"&gt;height&lt;/span&gt;&lt;span style="color:blue;"&gt;="500"&lt;/span&gt;&lt;span style="color:blue;"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;mx:Button&lt;/span&gt; &lt;span style="color:red;"&gt;id&lt;/span&gt;&lt;span style="color:blue;"&gt;="sendBtn"&lt;/span&gt; &lt;span style="color:red;"&gt;styleName&lt;/span&gt;&lt;span style="color:blue;"&gt;="sendButton"&lt;/span&gt; &lt;span style="color:blue;"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;Опишем классы для полей ввода: &lt;b&gt;.textInput&lt;/b&gt; и &lt;b&gt;.textArea&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;Чтобы все выглядело натурально нужно сделать поля ввода прозрачными и убрать рамку фокуса:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;.textInput&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;{  &lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;  backgroundAlpha: 0.0;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;  borderStyle: none;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;  focusAlpha: 0;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;  fontFamily: &lt;span style="color:#A31515;"&gt;"Arial"&lt;/span&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;  fontSize: 16;  &lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;code&gt;&lt;span style="font-size:78%;color:gray;"&gt;* This source code was highlighted with &lt;a href="http://virtser.net/blog/post/source-code-highlighter.aspx"&gt;&lt;span style="font-size:78%;color:gray;"&gt;Source Code Highlighter&lt;/span&gt;&lt;/a&gt;.&lt;/span&gt;&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;Для textArea вдобавок увеличим расстояния между строк:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;.textArea&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;{&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;  &lt;span style="color:green;"&gt;/*...*/&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;  leading:8.6;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;code&gt;&lt;span style="font-size:78%;color:gray;"&gt;* This source code was highlighted with &lt;a href="http://virtser.net/blog/post/source-code-highlighter.aspx"&gt;&lt;span style="font-size:78%;color:gray;"&gt;Source Code Highlighter&lt;/span&gt;&lt;/a&gt;.&lt;/span&gt;&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;На время отладки, выставим значения &lt;b&gt;backgroundAlpha&lt;/b&gt; и &lt;b&gt;backgroundColor&lt;/b&gt; для удобства подгонки положения элементов:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;.textArea&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;{&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;  &lt;span style="color:green;"&gt;/*...*/&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;  backgroundAlpha: 0.8;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;  backgroundColor: #ff0000;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;  &lt;span style="color:green;"&gt;/*...*/&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt; &lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;code&gt;&lt;span style="font-size:78%;color:gray;"&gt;* This source code was highlighted with &lt;a href="http://virtser.net/blog/post/source-code-highlighter.aspx"&gt;&lt;span style="font-size:78%;color:gray;"&gt;Source Code Highlighter&lt;/span&gt;&lt;/a&gt;.&lt;/span&gt;&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;Подгоняем положение элементов экспериментируя со значениями координат и размерами элементов в &lt;b&gt;FormCanvas.mxml&lt;/b&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;&lt;a href="http://img-fotki.yandex.ru/get/4008/nitrobin.0/0_27d7f_b9270c34_orig.jpg"&gt;&lt;img src="http://img-fotki.yandex.ru/get/4008/nitrobin.0/0_27d7f_b9270c34_M.jpg" title="post" alt="post" border="0" /&gt;&lt;/a&gt;&amp;lt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Шаг 4&lt;/h2&gt;&lt;br /&gt;Выставляем &lt;b&gt;backgroundAlpha&lt;/b&gt; равное 0 и убираем &lt;b&gt;backgroundColor&lt;/b&gt; из стилей &lt;b&gt;.textInput&lt;/b&gt; и &lt;b&gt;.textArea&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;В итоге у нас получится вполне симпатичный и интерактивный результат:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://img-fotki.yandex.ru/get/4011/nitrobin.0/0_27d80_eed4b2e9_orig.jpg"&gt;&lt;img src="http://img-fotki.yandex.ru/get/4011/nitrobin.0/0_27d80_eed4b2e9_M.jpg" title="post" alt="post" border="0" /&gt;&lt;/a&gt;     &lt;a href="http://img-fotki.yandex.ru/get/3910/nitrobin.0/0_27d83_c8932d42_orig.jpg"&gt;&lt;img src="http://img-fotki.yandex.ru/get/3910/nitrobin.0/0_27d83_c8932d42_M.jpg" title="post" alt="post" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;После проделанных изменений наш проект будет выглядеть так:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;?&lt;/span&gt;&lt;span style="color:maroon;"&gt;xml&lt;/span&gt; &lt;span style="color:red;"&gt;version&lt;/span&gt;&lt;span style="color:blue;"&gt;="1.0"&lt;/span&gt; &lt;span style="color:red;"&gt;encoding&lt;/span&gt;&lt;span style="color:blue;"&gt;="utf-8"&lt;/span&gt;?&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;&lt;span class="rem"&gt;&amp;lt;!--src/FormCanvas.mxml --&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;mx:Canvas&lt;/span&gt; &lt;span style="color:red;"&gt;xmlns:mx&lt;/span&gt;&lt;span style="color:blue;"&gt;="http://www.adobe.com/2006/mxml"&lt;/span&gt; &lt;span style="color:red;"&gt;width&lt;/span&gt;&lt;span style="color:blue;"&gt;="400"&lt;/span&gt; &lt;span style="color:red;"&gt;height&lt;/span&gt;&lt;span style="color:blue;"&gt;="500"&lt;/span&gt; &lt;span style="color:red;"&gt;styleName&lt;/span&gt;&lt;span style="color:blue;"&gt;="notepadBg"&lt;/span&gt; &lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;  &lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;mx:Style&lt;/span&gt; &lt;span style="color:red;"&gt;source&lt;/span&gt;&lt;span style="color:blue;"&gt;="../styles/main.css"&lt;/span&gt;&lt;span style="color:blue;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;  &lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;mx:VBox&lt;/span&gt; &lt;span style="color:red;"&gt;left&lt;/span&gt;&lt;span style="color:blue;"&gt;="40"&lt;/span&gt; &lt;span style="color:red;"&gt;top&lt;/span&gt;&lt;span style="color:blue;"&gt;="60"&lt;/span&gt; &lt;span style="color:red;"&gt;right&lt;/span&gt;&lt;span style="color:blue;"&gt;="50"&lt;/span&gt; &lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;    &lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;mx:HBox&lt;/span&gt; &lt;span style="color:red;"&gt;width&lt;/span&gt;&lt;span style="color:blue;"&gt;="100%"&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;      &lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;mx:Label&lt;/span&gt; &lt;span style="color:red;"&gt;text&lt;/span&gt;&lt;span style="color:blue;"&gt;="Имя:"&lt;/span&gt; &lt;span style="color:red;"&gt;width&lt;/span&gt;&lt;span style="color:blue;"&gt;="18%"&lt;/span&gt; &lt;span style="color:red;"&gt;styleName&lt;/span&gt;&lt;span style="color:blue;"&gt;="label"&lt;/span&gt; &lt;span style="color:blue;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;      &lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;mx:TextInput&lt;/span&gt; &lt;span style="color:red;"&gt;id&lt;/span&gt;&lt;span style="color:blue;"&gt;="nameTxt"&lt;/span&gt; &lt;span style="color:red;"&gt;width&lt;/span&gt;&lt;span style="color:blue;"&gt;="72%"&lt;/span&gt; &lt;span style="color:red;"&gt;maxChars&lt;/span&gt;&lt;span style="color:blue;"&gt;="40"&lt;/span&gt; &lt;span style="color:red;"&gt;styleName&lt;/span&gt;&lt;span style="color:blue;"&gt;="textInput"&lt;/span&gt;&lt;span style="color:blue;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;    &lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:maroon;"&gt;mx:HBox&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;    &lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;mx:HBox&lt;/span&gt; &lt;span style="color:red;"&gt;width&lt;/span&gt;&lt;span style="color:blue;"&gt;="100%"&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;      &lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;mx:Label&lt;/span&gt; &lt;span style="color:red;"&gt;text&lt;/span&gt;&lt;span style="color:blue;"&gt;="e-mail:"&lt;/span&gt; &lt;span style="color:red;"&gt;width&lt;/span&gt;&lt;span style="color:blue;"&gt;="18%"&lt;/span&gt; &lt;span style="color:red;"&gt;styleName&lt;/span&gt;&lt;span style="color:blue;"&gt;="label"&lt;/span&gt; &lt;span style="color:blue;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;      &lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;mx:TextInput&lt;/span&gt; &lt;span style="color:red;"&gt;id&lt;/span&gt;&lt;span style="color:blue;"&gt;="emailTxt"&lt;/span&gt; &lt;span style="color:red;"&gt;width&lt;/span&gt;&lt;span style="color:blue;"&gt;="72%"&lt;/span&gt; &lt;span style="color:red;"&gt;maxChars&lt;/span&gt;&lt;span style="color:blue;"&gt;="40"&lt;/span&gt; &lt;span style="color:red;"&gt;styleName&lt;/span&gt;&lt;span style="color:blue;"&gt;="textInput"&lt;/span&gt;&lt;span style="color:blue;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;    &lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:maroon;"&gt;mx:HBox&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;    &lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;mx:TextArea&lt;/span&gt; &lt;span style="color:red;"&gt;id&lt;/span&gt;&lt;span style="color:blue;"&gt;="msgTxt"&lt;/span&gt; &lt;span style="color:red;"&gt;width&lt;/span&gt;&lt;span style="color:blue;"&gt;="100%"&lt;/span&gt; &lt;span style="color:red;"&gt;height&lt;/span&gt;&lt;span style="color:blue;"&gt;="268"&lt;/span&gt; &lt;span style="color:red;"&gt;maxChars&lt;/span&gt;&lt;span style="color:blue;"&gt;="5000"&lt;/span&gt; &lt;span style="color:red;"&gt;styleName&lt;/span&gt;&lt;span style="color:blue;"&gt;="textArea"&lt;/span&gt; &lt;span style="color:blue;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;    &lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;mx:Canvas&lt;/span&gt; &lt;span style="color:red;"&gt;width&lt;/span&gt;&lt;span style="color:blue;"&gt;="100%"&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;      &lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;mx:Button&lt;/span&gt; &lt;span style="color:red;"&gt;id&lt;/span&gt;&lt;span style="color:blue;"&gt;="sendBtn"&lt;/span&gt; &lt;span style="color:red;"&gt;label&lt;/span&gt;&lt;span style="color:blue;"&gt;=""&lt;/span&gt; &lt;span style="color:red;"&gt;horizontalCenter&lt;/span&gt;&lt;span style="color:blue;"&gt;="0"&lt;/span&gt; &lt;span style="color:red;"&gt;styleName&lt;/span&gt;&lt;span style="color:blue;"&gt;="sendButton"&lt;/span&gt; &lt;span style="color:blue;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;    &lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:maroon;"&gt;mx:Canvas&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;    &lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;  &lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:maroon;"&gt;mx:VBox&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:maroon;"&gt;mx:Canvas&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;code&gt;&lt;span style="font-size:78%;color:gray;"&gt;* This source code was highlighted with &lt;a href="http://virtser.net/blog/post/source-code-highlighter.aspx"&gt;&lt;span style="font-size:78%;color:gray;"&gt;Source Code Highlighter&lt;/span&gt;&lt;/a&gt;.&lt;/span&gt;&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;?&lt;/span&gt;&lt;span style="color:maroon;"&gt;xml&lt;/span&gt; &lt;span style="color:red;"&gt;version&lt;/span&gt;&lt;span style="color:blue;"&gt;="1.0"&lt;/span&gt; &lt;span style="color:red;"&gt;encoding&lt;/span&gt;&lt;span style="color:blue;"&gt;="utf-8"&lt;/span&gt;?&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;&lt;span class="rem"&gt;&amp;lt;!--src/Main.mxml --&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;mx:Application&lt;/span&gt; &lt;span style="color:red;"&gt;xmlns:mx&lt;/span&gt;&lt;span style="color:blue;"&gt;="http://www.adobe.com/2006/mxml"&lt;/span&gt; &lt;span style="color:red;"&gt;xmlns:ns1&lt;/span&gt;&lt;span style="color:blue;"&gt;="*"&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;  &lt;span style="color:red;"&gt;width&lt;/span&gt;&lt;span style="color:blue;"&gt;="400"&lt;/span&gt; &lt;span style="color:red;"&gt;height&lt;/span&gt;&lt;span style="color:blue;"&gt;="500"&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;  &lt;span style="color:red;"&gt;paddingLeft&lt;/span&gt;&lt;span style="color:blue;"&gt;="0"&lt;/span&gt; &lt;span style="color:red;"&gt;paddingRight&lt;/span&gt;&lt;span style="color:blue;"&gt;="0"&lt;/span&gt; &lt;span style="color:red;"&gt;paddingTop&lt;/span&gt;&lt;span style="color:blue;"&gt;="0"&lt;/span&gt; &lt;span style="color:red;"&gt;paddingBottom&lt;/span&gt;&lt;span style="color:blue;"&gt;="0"&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;  &lt;span style="color:red;"&gt;horizontalScrollPolicy&lt;/span&gt;&lt;span style="color:blue;"&gt;="off"&lt;/span&gt; &lt;span style="color:red;"&gt;verticalScrollPolicy&lt;/span&gt;&lt;span style="color:blue;"&gt;="off"&lt;/span&gt;  &lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;  &lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;  &lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;mx:Style&lt;/span&gt; &lt;span style="color:red;"&gt;source&lt;/span&gt;&lt;span style="color:blue;"&gt;="../styles/main.css"&lt;/span&gt;&lt;span style="color:blue;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;  &lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;mx:Canvas&lt;/span&gt; &lt;span style="color:red;"&gt;left&lt;/span&gt;&lt;span style="color:blue;"&gt;="0"&lt;/span&gt; &lt;span style="color:red;"&gt;top&lt;/span&gt;&lt;span style="color:blue;"&gt;="0"&lt;/span&gt; &lt;span style="color:red;"&gt;right&lt;/span&gt;&lt;span style="color:blue;"&gt;="0"&lt;/span&gt; &lt;span style="color:red;"&gt;bottom&lt;/span&gt;&lt;span style="color:blue;"&gt;="0"&lt;/span&gt; &lt;span style="color:red;"&gt;horizontalScrollPolicy&lt;/span&gt;&lt;span style="color:blue;"&gt;="off"&lt;/span&gt; &lt;span style="color:red;"&gt;verticalScrollPolicy&lt;/span&gt;&lt;span style="color:blue;"&gt;="off"&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;    &lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;ns1:FormCanvas&lt;/span&gt; &lt;span style="color:red;"&gt;id&lt;/span&gt;&lt;span style="color:blue;"&gt;="formCanvas"&lt;/span&gt; &lt;span style="color:red;"&gt;x&lt;/span&gt;&lt;span style="color:blue;"&gt;="0"&lt;/span&gt; &lt;span style="color:red;"&gt;y&lt;/span&gt;&lt;span style="color:blue;"&gt;="0"&lt;/span&gt; &lt;span style="color:red;"&gt;visible&lt;/span&gt;&lt;span style="color:blue;"&gt;="true"&lt;/span&gt; &lt;span style="color:blue;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;    &lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;ns1:StatusCanvas&lt;/span&gt; &lt;span style="color:red;"&gt;id&lt;/span&gt;&lt;span style="color:blue;"&gt;="statusCanvas"&lt;/span&gt; &lt;span style="color:red;"&gt;x&lt;/span&gt;&lt;span style="color:blue;"&gt;="0"&lt;/span&gt; &lt;span style="color:red;"&gt;y&lt;/span&gt;&lt;span style="color:blue;"&gt;="0"&lt;/span&gt; &lt;span style="color:red;"&gt;visible&lt;/span&gt;&lt;span style="color:blue;"&gt;="false"&lt;/span&gt; &lt;span style="color:blue;"&gt;/&amp;gt;&lt;/span&gt;  &lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;  &lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:maroon;"&gt;mx:Canvas&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;  &lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:maroon;"&gt;mx:Application&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;code&gt;&lt;span style="font-size:78%;color:gray;"&gt;* This source code was highlighted with &lt;a href="http://virtser.net/blog/post/source-code-highlighter.aspx"&gt;&lt;span style="font-size:78%;color:gray;"&gt;Source Code Highlighter&lt;/span&gt;&lt;/a&gt;.&lt;/span&gt;&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;?&lt;/span&gt;&lt;span style="color:maroon;"&gt;xml&lt;/span&gt; &lt;span style="color:red;"&gt;version&lt;/span&gt;&lt;span style="color:blue;"&gt;="1.0"&lt;/span&gt; &lt;span style="color:red;"&gt;encoding&lt;/span&gt;&lt;span style="color:blue;"&gt;="utf-8"&lt;/span&gt;?&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;&lt;span class="rem"&gt;&amp;lt;!--src/StatusCanvas.mxml --&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;mx:Canvas&lt;/span&gt; &lt;span style="color:red;"&gt;xmlns:mx&lt;/span&gt;&lt;span style="color:blue;"&gt;="http://www.adobe.com/2006/mxml"&lt;/span&gt; &lt;span style="color:red;"&gt;width&lt;/span&gt;&lt;span style="color:blue;"&gt;="400"&lt;/span&gt; &lt;span style="color:red;"&gt;height&lt;/span&gt;&lt;span style="color:blue;"&gt;="500"&lt;/span&gt; &lt;span style="color:red;"&gt;styleName&lt;/span&gt;&lt;span style="color:blue;"&gt;="notepadBg"&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;  &lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;mx:Style&lt;/span&gt; &lt;span style="color:red;"&gt;source&lt;/span&gt;&lt;span style="color:blue;"&gt;="../styles/main.css"&lt;/span&gt;&lt;span style="color:blue;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;  &lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;mx:Text&lt;/span&gt; &lt;span style="color:red;"&gt;verticalCenter&lt;/span&gt;&lt;span style="color:blue;"&gt;="0"&lt;/span&gt; &lt;span style="color:red;"&gt;horizontalCenter&lt;/span&gt;&lt;span style="color:blue;"&gt;="0"&lt;/span&gt; &lt;span style="color:red;"&gt;selectable&lt;/span&gt;&lt;span style="color:blue;"&gt;="false"&lt;/span&gt; &lt;span style="color:red;"&gt;styleName&lt;/span&gt;&lt;span style="color:blue;"&gt;="label"&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;        &lt;span style="color:red;"&gt;htmlText&lt;/span&gt;&lt;span style="color:blue;"&gt;="Сообщение"&lt;/span&gt; &lt;span style="color:blue;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;  &lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;mx:Text&lt;/span&gt; &lt;span style="color:red;"&gt;horizontalCenter&lt;/span&gt;&lt;span style="color:blue;"&gt;="0"&lt;/span&gt; &lt;span style="color:red;"&gt;bottom&lt;/span&gt;&lt;span style="color:blue;"&gt;="110"&lt;/span&gt; &lt;span style="color:red;"&gt;styleName&lt;/span&gt;&lt;span style="color:blue;"&gt;="label"&lt;/span&gt; &lt;span style="color:red;"&gt;selectable&lt;/span&gt;&lt;span style="color:blue;"&gt;="false"&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;        &lt;span style="color:red;"&gt;htmlText&lt;/span&gt;&lt;span style="color:blue;"&gt;="Клик&amp;#1085;ите чтобы продолжить."&lt;/span&gt; &lt;span style="color:blue;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:maroon;"&gt;mx:Canvas&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;code&gt;&lt;span style="font-size:78%;color:gray;"&gt;* This source code was highlighted with &lt;a href="http://virtser.net/blog/post/source-code-highlighter.aspx"&gt;&lt;span style="font-size:78%;color:gray;"&gt;Source Code Highlighter&lt;/span&gt;&lt;/a&gt;.&lt;/span&gt;&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;&lt;span style="color:green;"&gt;/* styles/main.css */&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt; &lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;.notepadBg{&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;  backgroundImage: Embed(&lt;span style="color:#A31515;"&gt;"../assets/notepad.png"&lt;/span&gt;);&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;  verticalScrollPolicy: off;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;  horizontalScrollPolicy: off;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt; &lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;.sendButton&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;{&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;  upSkin: Embed(&lt;span style="color:#A31515;"&gt;"../assets/send_btn_active.png"&lt;/span&gt;);&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;  overSkin: Embed(&lt;span style="color:#A31515;"&gt;"../assets/send_btn_over.png"&lt;/span&gt;);&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;  downSkin: Embed(&lt;span style="color:#A31515;"&gt;"../assets/send_btn_down.png"&lt;/span&gt;);  &lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;  disabledSkin:Embed(&lt;span style="color:#A31515;"&gt;"../assets/send_btn_active.png"&lt;/span&gt;);&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt; &lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;.textInput&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;{&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;  &lt;span style="color:green;"&gt;/*backgroundAlpha: 0.8;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;&lt;span style="color:green;"&gt;  backgroundColor:#ff0000;/*/&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;  backgroundAlpha: 0.0; &lt;span style="color:green;"&gt;/*прозрачный фон*/&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;  borderStyle: none;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;  focusAlpha: 0; &lt;span style="color:green;"&gt;/*убираем рамку фокуса*/&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;  fontFamily: &lt;span style="color:#A31515;"&gt;"Arial"&lt;/span&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;  fontSize: 16;  &lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt; &lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;.textArea&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;{&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;  &lt;span style="color:green;"&gt;/*backgroundAlpha: 0.8;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;&lt;span style="color:green;"&gt;  backgroundColor:#ff0000;*/&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;  backgroundAlpha: 0.0;&lt;span style="color:green;"&gt;/*прозрачный фон*/&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;  borderStyle: none;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;  focusAlpha: 0; &lt;span style="color:green;"&gt;/*убираем рамку фокуса*/&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;  fontFamily: &lt;span style="color:#A31515;"&gt;"Arial"&lt;/span&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;  fontSize: 16;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;  leading:8.6; &lt;span style="color:green;"&gt;/*увеличиваем междустрочный интервал*/&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt; &lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;.label&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;{&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;  fontFamily: &lt;span style="color:#A31515;"&gt;"Arial"&lt;/span&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;  fontSize: 16;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;  fontWeight :bold;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;  textAlign: center;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt; &lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;.labelGreen&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;{&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;  fontFamily: &lt;span style="color:#A31515;"&gt;"Arial"&lt;/span&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;  fontSize: 22;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;  fontWeight :bold;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;  textAlign: center;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;  color:#00ff00;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt; &lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;.labelRed&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;{&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;  fontFamily: &lt;span style="color:#A31515;"&gt;"Arial"&lt;/span&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;  fontSize:22;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;  fontWeight :bold;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;  textAlign: center;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;  color:#ff0000;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;code&gt;&lt;span style="font-size:78%;color:gray;"&gt;* This source code was highlighted with &lt;a href="http://virtser.net/blog/post/source-code-highlighter.aspx"&gt;&lt;span style="font-size:78%;color:gray;"&gt;Source Code Highlighter&lt;/span&gt;&lt;/a&gt;.&lt;/span&gt;&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Шаг 5&lt;/h2&gt;&lt;br /&gt;Интерфейс готов. Осталось написать логику обработки; и отправки данных. Для этого создадим два файла &lt;b&gt;MainScript.as&lt;/b&gt; и &lt;b&gt;StatusCanvasScript.as&lt;/b&gt; в которых будем писать &lt;strong&gt;ActionScript&lt;/strong&gt; код для нашего приложения. Подключим их к &lt;b&gt;mxml&lt;/b&gt; файлам добавив тег &lt;b&gt;mx:Script&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;для &lt;b&gt;Main.mxml&lt;/b&gt;:&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;mx:Script&lt;/span&gt; &lt;span style="color:red;"&gt;source&lt;/span&gt;&lt;span style="color:blue;"&gt;="MainScript.as"&lt;/span&gt;&lt;span style="color:blue;"&gt;/&amp;gt;&lt;/span&gt;  &lt;/span&gt;&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;и для &lt;b&gt;StatusCanvas.mxml&lt;/b&gt;:&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;mx:Script&lt;/span&gt; &lt;span style="color:red;"&gt;source&lt;/span&gt;&lt;span style="color:blue;"&gt;="StatusCanvasScript.as"&lt;/span&gt;&lt;span style="color:blue;"&gt;/&amp;gt;&lt;/span&gt;  &lt;/span&gt;&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;После проделанных изменений &lt;strong&gt;FlashDevelop&lt;/strong&gt; будет отображать наши &lt;b&gt;as&lt;/b&gt; файлы как вложенные узлы родительских &lt;b&gt;mxml&lt;/b&gt; в дереве проекта.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="http://img-fotki.yandex.ru/get/4008/nitrobin.0/0_27d81_9bb05abe_orig.jpg" title="post" alt="post" border="0" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Заполним &lt;b&gt;as&lt;/b&gt; файлы кодом:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;&lt;span style="color:green;"&gt;/* MainScript.as */&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;import flash.events.MouseEvent;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;import mx.rpc.AsyncToken;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;import mx.rpc.events.FaultEvent;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;import mx.rpc.events.ResultEvent;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;import mx.rpc.http.mxml.HTTPService;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;import mx.controls.Alert;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt; &lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;&lt;span style="color:blue;"&gt;private&lt;/span&gt; &lt;span style="color:blue;"&gt;static&lt;/span&gt; &lt;span style="color:blue;"&gt;const&lt;/span&gt; SERVER_URL:String = &lt;span style="color:#A31515;"&gt;"http://127.0.0.1:8081/send"&lt;/span&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;&lt;span style="color:blue;"&gt;private&lt;/span&gt; &lt;span style="color:blue;"&gt;var&lt;/span&gt; service: HTTPService = &lt;span style="color:blue;"&gt;null&lt;/span&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt; &lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;&lt;span style="color:blue;"&gt;private&lt;/span&gt; &lt;span style="color:blue;"&gt;function&lt;/span&gt; complete():&lt;span style="color:blue;"&gt;void&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;{&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;  service = &lt;span style="color:blue;"&gt;new&lt;/span&gt; HTTPService();&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;  service.url = SERVER_URL;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;  service.method = &lt;span style="color:#A31515;"&gt;"POST"&lt;/span&gt;;      &lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;  service.resultFormat = &lt;span style="color:#A31515;"&gt;"text"&lt;/span&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;    &lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;  formCanvas.sendBtn.addEventListener(MouseEvent.CLICK, sendBtnClick, &lt;span style="color:blue;"&gt;false&lt;/span&gt;, 0, &lt;span style="color:blue;"&gt;true&lt;/span&gt; );&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;  statusCanvas.addEventListener(MouseEvent.CLICK, statusCanvasClick, &lt;span style="color:blue;"&gt;false&lt;/span&gt;, 0, &lt;span style="color:blue;"&gt;true&lt;/span&gt; );&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt; &lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;&lt;span style="color:blue;"&gt;private&lt;/span&gt; &lt;span style="color:blue;"&gt;function&lt;/span&gt; showStatus(status:&lt;span style="color:blue;"&gt;int&lt;/span&gt;, msg:String = &lt;span style="color:blue;"&gt;null&lt;/span&gt;):&lt;span style="color:blue;"&gt;void&lt;/span&gt; {&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;  statusCanvas.status = status;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;  &lt;span style="color:blue;"&gt;if&lt;/span&gt; (msg) statusCanvas.msgHtml = msg;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;  statusCanvas.visible = &lt;span style="color:blue;"&gt;true&lt;/span&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt; &lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;&lt;span style="color:blue;"&gt;private&lt;/span&gt; &lt;span style="color:blue;"&gt;function&lt;/span&gt; sendBtnClick(&lt;span style="color:blue;"&gt;event&lt;/span&gt;:MouseEvent):&lt;span style="color:blue;"&gt;void&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;{&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;  &lt;span style="color:blue;"&gt;if&lt;/span&gt; ((formCanvas.nameTxt.text == &lt;span style="color:#A31515;"&gt;""&lt;/span&gt;) ||&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;    (formCanvas.emailTxt.text == &lt;span style="color:#A31515;"&gt;""&lt;/span&gt;)||&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;    (formCanvas.msgTxt.text == &lt;span style="color:#A31515;"&gt;""&lt;/span&gt;))&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;  {  &lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;    showStatus(StatusCanvas.EMPTY_FORM);    &lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;    &lt;span style="color:blue;"&gt;return&lt;/span&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;  }&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;  &lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;  formCanvas.enabled = &lt;span style="color:blue;"&gt;false&lt;/span&gt;;    &lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;  sendForm();&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt; &lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;&lt;span style="color:blue;"&gt;private&lt;/span&gt; &lt;span style="color:blue;"&gt;function&lt;/span&gt; sendForm():&lt;span style="color:blue;"&gt;void&lt;/span&gt; {&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;  &lt;span style="color:blue;"&gt;var&lt;/span&gt; &lt;span style="color:blue;"&gt;params&lt;/span&gt;:Object = { name:formCanvas.nameTxt.text,&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;              email:formCanvas.emailTxt.text,&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;              msg:formCanvas.msgTxt.text};&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;  &lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;  &lt;span style="color:blue;"&gt;var&lt;/span&gt; token:AsyncToken = service.send(&lt;span style="color:blue;"&gt;params&lt;/span&gt;);      &lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;  &lt;span style="color:blue;"&gt;var&lt;/span&gt; responder:mx.rpc.Responder = &lt;span style="color:blue;"&gt;new&lt;/span&gt; mx.rpc.Responder(onResult, onFault);&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;  token.addResponder(responder);&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt; &lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt; &lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;&lt;span style="color:blue;"&gt;private&lt;/span&gt; &lt;span style="color:blue;"&gt;function&lt;/span&gt; statusCanvasClick(&lt;span style="color:blue;"&gt;event&lt;/span&gt;:MouseEvent):&lt;span style="color:blue;"&gt;void&lt;/span&gt; {&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;  formCanvas.visible = &lt;span style="color:blue;"&gt;true&lt;/span&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;  statusCanvas.visible = &lt;span style="color:blue;"&gt;false&lt;/span&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt; &lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;&lt;span style="color:blue;"&gt;private&lt;/span&gt; &lt;span style="color:blue;"&gt;function&lt;/span&gt; clearForm():&lt;span style="color:blue;"&gt;void&lt;/span&gt; {&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;  formCanvas.nameTxt.text = &lt;span style="color:#A31515;"&gt;""&lt;/span&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;  formCanvas.emailTxt.text = &lt;span style="color:#A31515;"&gt;""&lt;/span&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;  formCanvas.msgTxt.text = &lt;span style="color:#A31515;"&gt;""&lt;/span&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt; &lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;&lt;span style="color:blue;"&gt;protected&lt;/span&gt; &lt;span style="color:blue;"&gt;function&lt;/span&gt; onResult(&lt;span style="color:blue;"&gt;event&lt;/span&gt;:ResultEvent):&lt;span style="color:blue;"&gt;void&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;{&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;  formCanvas.enabled = &lt;span style="color:blue;"&gt;true&lt;/span&gt;;    &lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;  &lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;  &lt;span style="color:blue;"&gt;var&lt;/span&gt; xml:XML = &lt;span style="color:blue;"&gt;new&lt;/span&gt; XML(&lt;span style="color:blue;"&gt;event&lt;/span&gt;.result);&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;  &lt;span style="color:blue;"&gt;var&lt;/span&gt; code:&lt;span style="color:blue;"&gt;int&lt;/span&gt; = &lt;span style="color:blue;"&gt;int&lt;/span&gt;(xml.code);&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;  &lt;span style="color:blue;"&gt;switch&lt;/span&gt;(code) {&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;    &lt;span style="color:blue;"&gt;case&lt;/span&gt; 0:&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;      showStatus(StatusCanvas.OK);&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;      clearForm();&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;      &lt;span style="color:blue;"&gt;break&lt;/span&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;    &lt;span style="color:blue;"&gt;case&lt;/span&gt; 1:&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;      showStatus(StatusCanvas.MSG, xml.msg);&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;      &lt;span style="color:blue;"&gt;break&lt;/span&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;    &lt;span style="color:blue;"&gt;default&lt;/span&gt;:&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;      showStatus(StatusCanvas.ERROR);&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;  }  &lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt; &lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;&lt;span style="color:blue;"&gt;protected&lt;/span&gt; &lt;span style="color:blue;"&gt;function&lt;/span&gt; onFault(&lt;span style="color:blue;"&gt;event&lt;/span&gt;:FaultEvent):&lt;span style="color:blue;"&gt;void&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;{  &lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;  formCanvas.enabled = &lt;span style="color:blue;"&gt;true&lt;/span&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;  &lt;span style="color:blue;"&gt;if&lt;/span&gt; (&lt;span style="color:blue;"&gt;event&lt;/span&gt;.statusCode == 0)&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;    showStatus(StatusCanvas.CONNECTION_ERROR);&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;  &lt;span style="color:blue;"&gt;else&lt;/span&gt; showStatus(StatusCanvas.ERROR);  &lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;code&gt;&lt;span style="font-size:78%;color:gray;"&gt;* This source code was highlighted with &lt;a href="http://virtser.net/blog/post/source-code-highlighter.aspx"&gt;&lt;span style="font-size:78%;color:gray;"&gt;Source Code Highlighter&lt;/span&gt;&lt;/a&gt;.&lt;/span&gt;&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;&lt;span style="color:green;"&gt;/* StatusCanvasScript.as */&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt; &lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;import mx.binding.utils.BindingUtils;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt; &lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;&lt;span style="color:blue;"&gt;public&lt;/span&gt; &lt;span style="color:blue;"&gt;static&lt;/span&gt; &lt;span style="color:blue;"&gt;const&lt;/span&gt; OK:&lt;span style="color:blue;"&gt;int&lt;/span&gt; = 0;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;&lt;span style="color:blue;"&gt;public&lt;/span&gt; &lt;span style="color:blue;"&gt;static&lt;/span&gt; &lt;span style="color:blue;"&gt;const&lt;/span&gt; ERROR:&lt;span style="color:blue;"&gt;int&lt;/span&gt; = 1;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;&lt;span style="color:blue;"&gt;public&lt;/span&gt; &lt;span style="color:blue;"&gt;static&lt;/span&gt; &lt;span style="color:blue;"&gt;const&lt;/span&gt; CONNECTION_ERROR:&lt;span style="color:blue;"&gt;int&lt;/span&gt; = 2;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;&lt;span style="color:blue;"&gt;public&lt;/span&gt; &lt;span style="color:blue;"&gt;static&lt;/span&gt; &lt;span style="color:blue;"&gt;const&lt;/span&gt; MSG:&lt;span style="color:blue;"&gt;int&lt;/span&gt; = 3;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;&lt;span style="color:blue;"&gt;public&lt;/span&gt; &lt;span style="color:blue;"&gt;static&lt;/span&gt; &lt;span style="color:blue;"&gt;const&lt;/span&gt; EMPTY_FORM:&lt;span style="color:blue;"&gt;int&lt;/span&gt; = 4;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt; &lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;&lt;span style="color:blue;"&gt;private&lt;/span&gt; &lt;span style="color:blue;"&gt;var&lt;/span&gt; _status:&lt;span style="color:blue;"&gt;int&lt;/span&gt; = MSG;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt; &lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;[Bindable]&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;&lt;span style="color:blue;"&gt;public&lt;/span&gt; &lt;span style="color:blue;"&gt;var&lt;/span&gt; msgHtml:String = &lt;span style="color:#A31515;"&gt;""&lt;/span&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;[Bindable]&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;&lt;span style="color:blue;"&gt;public&lt;/span&gt; &lt;span style="color:blue;"&gt;var&lt;/span&gt; msgStyleName:String = &lt;span style="color:#A31515;"&gt;"labelGreen"&lt;/span&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt; &lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;&lt;span style="color:blue;"&gt;private&lt;/span&gt; &lt;span style="color:blue;"&gt;function&lt;/span&gt; complete():&lt;span style="color:blue;"&gt;void&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;{&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;  BindingUtils.bindProperty(msgTxt,&lt;span style="color:#A31515;"&gt;'htmlText'&lt;/span&gt;, &lt;span style="color:blue;"&gt;this&lt;/span&gt;, &lt;span style="color:#A31515;"&gt;'msgHtml'&lt;/span&gt;);&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;  BindingUtils.bindProperty(msgTxt,&lt;span style="color:#A31515;"&gt;'styleName'&lt;/span&gt;, &lt;span style="color:blue;"&gt;this&lt;/span&gt;, &lt;span style="color:#A31515;"&gt;'msgStyleName'&lt;/span&gt;);&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt; &lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;&lt;span style="color:blue;"&gt;public&lt;/span&gt; &lt;span style="color:blue;"&gt;function&lt;/span&gt; set status(status:&lt;span style="color:blue;"&gt;int&lt;/span&gt;):&lt;span style="color:blue;"&gt;void&lt;/span&gt;{&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;  _status = status;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;  &lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;  &lt;span style="color:blue;"&gt;switch&lt;/span&gt;(status) {&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;    &lt;span style="color:blue;"&gt;case&lt;/span&gt; OK:&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;      msgStyleName = &lt;span style="color:#A31515;"&gt;"labelGreen"&lt;/span&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;      msgHtml = &lt;span style="color:#A31515;"&gt;"Сообщение успешно&amp;lt;br&amp;gt;отправленно"&lt;/span&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;      &lt;span style="color:blue;"&gt;break&lt;/span&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;    &lt;span style="color:blue;"&gt;case&lt;/span&gt; ERROR:&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;      msgStyleName = &lt;span style="color:#A31515;"&gt;"labelRed"&lt;/span&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;      msgHtml = &lt;span style="color:#A31515;"&gt;"Ошибка!&amp;lt;br&amp;gt;Попробуйте позднее."&lt;/span&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;      &lt;span style="color:blue;"&gt;break&lt;/span&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;    &lt;span style="color:blue;"&gt;case&lt;/span&gt; CONNECTION_ERROR:&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;      msgStyleName = &lt;span style="color:#A31515;"&gt;"labelRed"&lt;/span&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;      msgHtml = &lt;span style="color:#A31515;"&gt;"Сервер&amp;lt;br&amp;gt;недоступен."&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;      &lt;span style="color:blue;"&gt;break&lt;/span&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;    &lt;span style="color:blue;"&gt;case&lt;/span&gt; EMPTY_FORM:&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;      msgStyleName = &lt;span style="color:#A31515;"&gt;"labelRed"&lt;/span&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;      msgHtml = &lt;span style="color:#A31515;"&gt;"Заполните&amp;lt;br&amp;gt;все поля."&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;      &lt;span style="color:blue;"&gt;break&lt;/span&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;    &lt;span style="color:blue;"&gt;default&lt;/span&gt;:&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;      msgHtml = &lt;span style="color:#A31515;"&gt;""&lt;/span&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;      msgStyleName = &lt;span style="color:#A31515;"&gt;"label"&lt;/span&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;      &lt;span style="color:blue;"&gt;break&lt;/span&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;  }&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt; &lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;&lt;span style="color:blue;"&gt;public&lt;/span&gt; &lt;span style="color:blue;"&gt;function&lt;/span&gt; get status():&lt;span style="color:blue;"&gt;int&lt;/span&gt;{&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;  &lt;span style="color:blue;"&gt;return&lt;/span&gt; _status;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;code&gt;&lt;span style="font-size:78%;color:gray;"&gt;* This source code was highlighted with &lt;a href="http://virtser.net/blog/post/source-code-highlighter.aspx"&gt;&lt;span style="font-size:78%;color:gray;"&gt;Source Code Highlighter&lt;/span&gt;&lt;/a&gt;.&lt;/span&gt;&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;Теперь нужно &lt;b&gt;обязательно&lt;/b&gt; указать обработчики события &lt;b&gt;creationComplete="complete()"&lt;/b&gt; у корневых элементов в &lt;b&gt;Main.mxml&lt;/b&gt; и &lt;b&gt;StatusCanvas.mxml&lt;/b&gt; и наше клиентское приложение готово.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Приведу модификации в упрощенном виде:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;&amp;lt;mx:Application сreationComplete=&lt;span style="color:#A31515;"&gt;"complete()"&lt;/span&gt; &amp;gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;  &amp;lt;!-- содержимое --&amp;gt;  &lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;  &amp;lt;mx:Script source=&lt;span style="color:#A31515;"&gt;"MainScript.as"&lt;/span&gt;/&amp;gt;  &lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;&amp;lt;/mx:Application&amp;gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;&amp;lt;mx:Canvas creationComplete=&lt;span style="color:#A31515;"&gt;"complete()"&lt;/span&gt; &amp;gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;  &amp;lt;!-- содержимое --&amp;gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;  &amp;lt;mx:Script source=&lt;span style="color:#A31515;"&gt;"StatusCanvasScript.as"&lt;/span&gt;/&amp;gt; &lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;&amp;lt;/mx:Canvas&amp;gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;Теперь при нажатии на кнопку &lt;em&gt;Отправить&lt;/em&gt; мы можем насладится одним из двух сообщений.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://img-fotki.yandex.ru/get/4012/nitrobin.0/0_27d82_c88b287c_orig.jpg"&gt;&lt;img src="http://img-fotki.yandex.ru/get/4012/nitrobin.0/0_27d82_c88b287c_M.jpg" title="post" alt="post" border="0" /&gt;&lt;/a&gt;     &lt;a href="http://img-fotki.yandex.ru/get/3911/nitrobin.0/0_27e29_3d165149_orig.jpg"&gt;&lt;img src="http://img-fotki.yandex.ru/get/3911/nitrobin.0/0_27e29_3d165149_M.jpg" title="post" alt="post" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Как видно из кода, приложение посредством обьекта класса &lt;b&gt;HTTPService&lt;/b&gt; делает &lt;b&gt;POST&lt;/b&gt; запрос на url &lt;b&gt;http://127.0.0.1:8081/send&lt;/b&gt; передавая данные сообщения в переменных &lt;b&gt;name&lt;/b&gt;, &lt;b&gt;email&lt;/b&gt; и &lt;b&gt;msg&lt;/b&gt;. Дело за малым написать обработчик этого запроса.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;На этом с клиентом закончим, пора браться за сервер.&lt;br /&gt;&lt;br /&gt;&lt;h1&gt;Пишем серверную часть&lt;/h1&gt;&lt;br /&gt;&lt;h2&gt;Подготовка&lt;/h2&gt;&lt;br /&gt;Установим &lt;strong&gt;Python&lt;/strong&gt;, &lt;strong&gt;Django&lt;/strong&gt; и &lt;strong&gt;Aptana Studio&lt;/strong&gt;. Для установки &lt;strong&gt;Django&lt;/strong&gt; нужно распаковать &lt;b&gt;Django-1.1.1.tar.gz&lt;/b&gt; и выполнить:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;python setup.py install&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Желательно так же добавить &lt;b&gt;c:\Python26\Scripts\&lt;/b&gt; в системную переменную &lt;b&gt;PATH&lt;/b&gt;, чтобы было удобно использовать &lt;b&gt;django-admin.py&lt;/b&gt;, который расположен по этому пути.&lt;br /&gt;&lt;br /&gt;После этой манипуляции потребуется перезагрузка.&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Создаем проект сервера&lt;/h2&gt;&lt;br /&gt;Откроем &lt;strong&gt;Aptana Studio&lt;/strong&gt; и создадим новый проект для &lt;strong&gt;Python&lt;/strong&gt; с именем &lt;strong&gt;feedback_server&lt;/strong&gt; (&lt;em&gt;File-&amp;gt;New-&amp;gt;Project-&amp;gt;Pydev-&amp;gt;Pydev Project&lt;/em&gt;)&lt;br /&gt;&lt;br /&gt;Галочку с "&lt;em&gt;Create default 'src'...&lt;/em&gt;" можно снять.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://img-fotki.yandex.ru/get/3908/nitrobin.0/0_27d84_5c22f149_orig.jpg"&gt;&lt;img src="http://img-fotki.yandex.ru/get/3908/nitrobin.0/0_27d84_5c22f149_M.jpg" title="post" alt="post" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Запустим &lt;strong&gt;cmd.exe&lt;/strong&gt; и перейдем в директорию проекта &lt;strong&gt;feedback_server&lt;/strong&gt;. Создадим проект &lt;strong&gt;Django&lt;/strong&gt;:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;django-admin.py startproject server&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Перейдем в созданную директорию server и создадим &lt;strong&gt;Django&lt;/strong&gt; приложение &lt;strong&gt;feedbacks&lt;/strong&gt; для обработки отправки сообщения:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;manage.py startapp feedbacks&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Обновим дерево проектов в &lt;strong&gt;Aptana&lt;/strong&gt; (&lt;b&gt;F5&lt;/b&gt;) и перейдем к свойствам проекта &lt;strong&gt;feedback_server&lt;/strong&gt;(&lt;b&gt;Alt+Enter&lt;/b&gt;). Установите кодировку проекта в &lt;b&gt;utf-8&lt;/b&gt; (&lt;em&gt;Resources-&amp;gt;Text file encoding&lt;/em&gt;) В разделе "&lt;em&gt;Pydev - PYTHONPATH&lt;/em&gt;" нужно добавить созданную &lt;b&gt;django-admin.py&lt;/b&gt; директорию &lt;strong&gt;Django&lt;/strong&gt; проекта "&lt;b&gt;feedback_server/server&lt;/b&gt;" (&lt;em&gt;Add source folder&lt;/em&gt;)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://img-fotki.yandex.ru/get/3907/nitrobin.0/0_27d85_7b7879d6_orig.jpg"&gt;&lt;img src="http://img-fotki.yandex.ru/get/3907/nitrobin.0/0_27d85_7b7879d6_M.jpg" title="post" alt="post" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;В разделе "&lt;em&gt;Run/Debug Settings&lt;/em&gt;" создаем новую конфигурацию запуска (New-&amp;gt;Python Run).&lt;br /&gt;&lt;br /&gt;В редакторе конфигурации запуска на вкладке &lt;b&gt;Main&lt;/b&gt;:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;em&gt;Project&lt;/em&gt;: &lt;b&gt;feedback_server&lt;/b&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;em&gt;Main Module&lt;/em&gt;: &lt;b&gt;${workspace_loc:feedback_server/server/manage.py}&lt;/b&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;На вкладке &lt;b&gt;Arguments&lt;/b&gt;:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;em&gt;Program arguments&lt;/em&gt;: &lt;b&gt;runserver 8081 --noreload&lt;/b&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;em&gt;Working directory-&amp;gt;Other&lt;/em&gt;: &lt;b&gt;${workspace_loc:feedback_server/server}&lt;/b&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;a href="http://img-fotki.yandex.ru/get/3910/nitrobin.0/0_27d86_b2c3bbbe_orig.jpg"&gt;&lt;img src="http://img-fotki.yandex.ru/get/3910/nitrobin.0/0_27d86_b2c3bbbe_M.jpg" title="post" alt="post" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://img-fotki.yandex.ru/get/3911/nitrobin.0/0_27d87_ae73df36_M.jpg"&gt;&lt;img src="http://img-fotki.yandex.ru/get/3911/nitrobin.0/0_27d87_ae73df36_M.jpg" title="post" alt="post" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;При использовании &lt;strong&gt;sqlite&lt;/strong&gt; в качестве СУБД, без указания "&lt;em&gt;Working directory&lt;/em&gt;" в настройках запуска, файл базы будет искаться текущем в каталоге &lt;strong&gt;Aptana&lt;/strong&gt;. А так как его там нет, будет создаваться пустой файл, что приведет к ошибке при первом же запросе к таблицам.&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Настройка проекта Django&lt;/h2&gt;&lt;br /&gt;&lt;h3&gt;Файл settings.py&lt;/h3&gt;&lt;br /&gt;В начало файла вставим код (спасибо автору &lt;a href="http://habrahabr.ru/blogs/django/65170/"&gt;топика&lt;/a&gt;):&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;import os&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;def rel(*x):&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;    &lt;span style="color:blue;"&gt;return&lt;/span&gt; os.path.join(os.path.abspath(os.path.dirname(__file__)), *x)&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;code&gt;&lt;span style="font-size:78%;color:gray;"&gt;* This source code was highlighted with &lt;a href="http://virtser.net/blog/post/source-code-highlighter.aspx"&gt;&lt;span style="font-size:78%;color:gray;"&gt;Source Code Highlighter&lt;/span&gt;&lt;/a&gt;.&lt;/span&gt;&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;#Настроим в качестве СУБД sqlite&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;DATABASE_ENGINE = &lt;span style="color:#A31515;"&gt;'sqlite3'&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;DATABASE_NAME = &lt;span style="color:#A31515;"&gt;'db.sqlite'&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;DATABASE_USER = &lt;span style="color:#A31515;"&gt;''&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;DATABASE_PASSWORD = &lt;span style="color:#A31515;"&gt;''&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;DATABASE_HOST = &lt;span style="color:#A31515;"&gt;''&lt;/span&gt; &lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;DATABASE_PORT = &lt;span style="color:#A31515;"&gt;''&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;code&gt;&lt;span style="font-size:78%;color:gray;"&gt;* This source code was highlighted with &lt;a href="http://virtser.net/blog/post/source-code-highlighter.aspx"&gt;&lt;span style="font-size:78%;color:gray;"&gt;Source Code Highlighter&lt;/span&gt;&lt;/a&gt;.&lt;/span&gt;&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;Для чистоты эксперимента отключим в проекте все лишнее, так как задача стоит довольно простая. :)&lt;br /&gt;&lt;br /&gt;В списке MIDDLEWARE_CLASSES и INSTALLED_APPS закомментируем все элементы.&lt;br /&gt;&lt;br /&gt;Добавим наше приложение "feedbacks" в INSTALLED_APPS&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;INSTALLED_APPS =(&lt;br /&gt;&lt;br /&gt;    &lt;span style="color:#A31515;"&gt;'server.feedbacks'&lt;/span&gt;,&lt;br /&gt;&lt;br /&gt;)&lt;/span&gt;&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;В список TEMPLATE_DIRS добавим строчку :&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;TEMPLATE_DIRS = (    &lt;br /&gt;&lt;br /&gt;    rel(&lt;span style="color:#A31515;"&gt;'templates'&lt;/span&gt;),&lt;br /&gt;&lt;br /&gt;)&lt;/span&gt;&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;h3&gt;Шаблоны xml-ответов&lt;/h3&gt;&lt;br /&gt;В директории проекта создадим соответствующую директорию "&lt;b&gt;templates&lt;/b&gt;"'. С двумя файлами &lt;b&gt;feedback_result.xml&lt;/b&gt;:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;&lt;span class="rem"&gt;&amp;lt;!-- feedback_result.xml --&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;code&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;{{code}}&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:maroon;"&gt;code&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;msg&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;{{msg}}&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:maroon;"&gt;msg&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:maroon;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;/blockquote&gt;&lt;br /&gt;и &lt;b&gt;feedbacks.xml&lt;/b&gt;:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;&lt;span class="rem"&gt;&amp;lt;!-- feedbacks.xml --&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;feedbacks&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;{% for row in feedbacks %}&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;f&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;  &lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;name&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;{{row.name}}&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:maroon;"&gt;name&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;  &lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;email&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;{{row.email}}&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:maroon;"&gt;email&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;  &lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;msg&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;{{row.msg}}&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:maroon;"&gt;msg&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:maroon;"&gt;f&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;{% endfor %}&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:maroon;"&gt;feedbacks&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:maroon;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;h3&gt;Фа&amp;#1081;л urls.py&lt;/h3&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;urlpatterns = patterns(&lt;span style="color:#A31515;"&gt;''&lt;/span&gt;,&lt;br /&gt;&lt;br /&gt;    (r&lt;span style="color:#A31515;"&gt;'^send/'&lt;/span&gt;, &lt;span style="color:#A31515;"&gt;'feedbacks.views.send'&lt;/span&gt;),&lt;br /&gt;&lt;br /&gt;    (r&lt;span style="color:#A31515;"&gt;'^feedbacks/'&lt;/span&gt;, &lt;span style="color:#A31515;"&gt;'feedbacks.views.feedbacks'&lt;/span&gt;),&lt;br /&gt;&lt;br /&gt;)&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;h3&gt;Модель базы данных&lt;/h3&gt;&lt;br /&gt;Опишем модель базы данных в файле "&lt;b&gt;feedbacks/models.py&lt;/b&gt;"&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;# -*- coding: utf-8 -*-&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;# feedbacks/models.py&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;&lt;span style="color:blue;"&gt;from&lt;/span&gt; django.db import models&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt; &lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;&lt;span style="color:blue;"&gt;class&lt;/span&gt; Feedback(models.Model):&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;    name = models.CharField(max_length=51, &lt;span style="color:blue;"&gt;null&lt;/span&gt;=True)&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;    email = models.CharField(max_length=51, &lt;span style="color:blue;"&gt;null&lt;/span&gt;=True)&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;    msg = models.CharField(max_length=5001, &lt;span style="color:blue;"&gt;null&lt;/span&gt;=True)&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;code&gt;&lt;span style="font-size:78%;color:gray;"&gt;* This source code was highlighted with &lt;a href="http://virtser.net/blog/post/source-code-highlighter.aspx"&gt;&lt;span style="font-size:78%;color:gray;"&gt;Source Code Highlighter&lt;/span&gt;&lt;/a&gt;.&lt;/span&gt;&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;h3&gt;Обработчики запросов&lt;/h3&gt;&lt;br /&gt;И наконец создадим обработчики запросов в файле "&lt;b&gt;feedbacks/views.py&lt;/b&gt;"&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;# -*- coding: utf-8 -*-&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;&lt;span style="color:blue;"&gt;from&lt;/span&gt; django.views.generic.simple import direct_to_template&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt; &lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;&lt;span style="color:blue;"&gt;from&lt;/span&gt; models import Feedback&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt; &lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;def send(request):&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;    data = {&lt;span style="color:#A31515;"&gt;'code'&lt;/span&gt; : 0}&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;    name = request.REQUEST.&lt;span style="color:blue;"&gt;get&lt;/span&gt;(&lt;span style="color:#A31515;"&gt;"name"&lt;/span&gt;, &lt;span style="color:#A31515;"&gt;""&lt;/span&gt;)&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;    email = request.REQUEST.&lt;span style="color:blue;"&gt;get&lt;/span&gt;(&lt;span style="color:#A31515;"&gt;"email"&lt;/span&gt;, &lt;span style="color:#A31515;"&gt;""&lt;/span&gt;)&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;    msg = request.REQUEST.&lt;span style="color:blue;"&gt;get&lt;/span&gt;(&lt;span style="color:#A31515;"&gt;"msg"&lt;/span&gt;, &lt;span style="color:#A31515;"&gt;""&lt;/span&gt;)&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;    &lt;span style="color:blue;"&gt;if&lt;/span&gt; (name==&lt;span style="color:#A31515;"&gt;""&lt;/span&gt;) or (email==&lt;span style="color:#A31515;"&gt;""&lt;/span&gt;) or (msg==&lt;span style="color:#A31515;"&gt;""&lt;/span&gt;):&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;        data[&lt;span style="color:#A31515;"&gt;'code'&lt;/span&gt;] = 1&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;        data[&lt;span style="color:#A31515;"&gt;'msg'&lt;/span&gt;] = &lt;span style="color:#A31515;"&gt;"Необходимо заполните все поля"&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;    &lt;span style="color:blue;"&gt;else&lt;/span&gt;:&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;        f = Feedback(name=name, email=email, msg=msg)&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;        f.save()&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;    &lt;span style="color:blue;"&gt;return&lt;/span&gt; direct_to_template(request, &lt;span style="color:#A31515;"&gt;"feedback_result.xml"&lt;/span&gt;, data, mimetype=&lt;span style="color:#A31515;"&gt;"text/xml"&lt;/span&gt;)&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt; &lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;def feedbacks(request):&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;    data = {}    &lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;    data[&lt;span style="color:#A31515;"&gt;'feedbacks'&lt;/span&gt;] = Feedback.objects.all()        &lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;    &lt;span style="color:blue;"&gt;return&lt;/span&gt; direct_to_template(request, &lt;span style="color:#A31515;"&gt;"feedbacks.xml"&lt;/span&gt;, data, mimetype=&lt;span style="color:#A31515;"&gt;"text/xml"&lt;/span&gt;)&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;code&gt;&lt;span style="font-size:78%;color:gray;"&gt;* This source code was highlighted with &lt;a href="http://virtser.net/blog/post/source-code-highlighter.aspx"&gt;&lt;span style="font-size:78%;color:gray;"&gt;Source Code Highlighter&lt;/span&gt;&lt;/a&gt;.&lt;/span&gt;&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;Создадим структуру базы данных. Для этого выполним в каталоге проекта команду:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;manage.py syncdb&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;После создания базы данных все готово для запуска сервера. Это можно сделать двумя способами: нажав в &lt;strong&gt;Aptana&lt;/strong&gt; кнопку на панели инструментов &lt;b&gt;Run&lt;/b&gt; или Ctrl+F11, либо выполнив в каталоге проекта команду:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;manage.py runserver 8081&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Проверка работоспособности сервера&lt;/h2&gt;&lt;br /&gt;Перейдем в браузере по ссылке: &lt;b&gt;http://127.0.0.1:8081/send?name=name&amp;amp;email=email&amp;amp;msg=msg&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Видим xml файл, значит наш сервер успешно обработал запрос.&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;code&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;0&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:maroon;"&gt;code&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;msg&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:maroon;"&gt;msg&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:maroon;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;/blockquote&gt;&lt;br /&gt;Запускаем клиента на Flex и попробуем отправить сообщение через него.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://img-fotki.yandex.ru/get/4110/nitrobin.0/0_27d88_72de4d5e_orig.jpg"&gt;&lt;img src="http://img-fotki.yandex.ru/get/4110/nitrobin.0/0_27d88_72de4d5e_M.jpg" title="post" alt="post" border="0" /&gt;&lt;/a&gt;     &lt;a href="http://img-fotki.yandex.ru/get/4111/nitrobin.0/0_27d89_f7aed82f_orig.jpg"&gt;&lt;img src="http://img-fotki.yandex.ru/get/4111/nitrobin.0/0_27d89_f7aed82f_M.jpg" title="post" alt="post" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Проверим что у нас накопилось в базе:&lt;br /&gt;&lt;br /&gt;Перейдем в браузере по ссылке: &lt;b&gt;http://127.0.0.1:8081/feedbacks&lt;/b&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;feedbacks&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;f&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;  &lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;name&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;name&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:maroon;"&gt;name&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;  &lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;email&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;email&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:maroon;"&gt;email&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;  &lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;msg&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;msg&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:maroon;"&gt;msg&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:maroon;"&gt;f&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;f&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;  &lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;name&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;Александр&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:maroon;"&gt;name&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;  &lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;email&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;alex@example.com&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:maroon;"&gt;email&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;  &lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;msg&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;Заработало!&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:maroon;"&gt;msg&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:maroon;"&gt;f&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:maroon;"&gt;feedbacks&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:maroon;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;/blockquote&gt;&lt;br /&gt;Все работает!&lt;br /&gt;&lt;br /&gt;Для просмотра полученных сообщений http://127.0.0.1:8081/feedbacks можно сделать еще одно небольшое приложение Flex для администратора.&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Заключение&lt;/h2&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;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6693166578228563876-8630666866452569977?l=breeze-cosmodrome.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://breeze-cosmodrome.blogspot.com/feeds/8630666866452569977/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://breeze-cosmodrome.blogspot.com/2010/02/flex-django.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6693166578228563876/posts/default/8630666866452569977'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6693166578228563876/posts/default/8630666866452569977'/><link rel='alternate' type='text/html' href='http://breeze-cosmodrome.blogspot.com/2010/02/flex-django.html' title='Симпатичная форма обратной связи средствами Flex и Django'/><author><name>Breeze</name><uri>http://www.blogger.com/profile/05690030585062180386</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6693166578228563876.post-5432162406024136395</id><published>2009-11-26T07:26:00.000-08:00</published><updated>2009-11-27T23:57:46.742-08:00</updated><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='3D кнопка'/><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='Кристальная кнопка'/><category scheme='http://www.blogger.com/atom/ns#' term='Inkscape'/><category scheme='http://www.blogger.com/atom/ns#' term='кнопки'/><title type='text'>Руководство по созданию глянцевых кнопок в Inkscape</title><content type='html'>Давно хотелось научиться делать симпатичные кнопки для веб-страниц. И совсем недавно нашла статью с довольно подробным руководством, как это можно сделать в свободном графическом редакторе  &lt;b&gt;&lt;a href="http://www.inkscape.org/"&gt;Inkscape&lt;/a&gt;, &lt;/b&gt;чему несказанно была рада.&lt;b&gt; &lt;/b&gt;Кстати, в этом редакторе рисовать кнопки намного проще, чем в &lt;span lang="en-US"&gt;Photoshop. &lt;/span&gt;Ознакомиться с этой статьей можно &lt;a href="http://howto.nicubunu.ro/shiny_web_buttons_inkscape/"&gt;здесь&lt;/a&gt;. А тут я приведу её вольный перевод.&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;&lt;span id="fullpost"&gt;&lt;br /&gt;&lt;strong&gt;Простая &lt;/strong&gt;&lt;strong&gt;3D-&lt;/strong&gt;&lt;strong&gt;кнопка  &lt;/strong&gt; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Начнём с простейшей кнопки, которая будет многократно использоваться позже для других стилей кнопок.&lt;br /&gt;Используя инструмент Прямоугольник (Rectangle Tool), нарисуем прямоугольник и заполним его любым приятным цветом. Скруглим углы (радиусом примерно 16px):&lt;br /&gt;&lt;br /&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 151px;" src="http://1.bp.blogspot.com/_yMC8Md_7dAU/Sw6gKxh1M2I/AAAAAAAAAAU/EXAduBeig4o/s400/Untitled-1.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5408436309472916322" /&gt;&lt;br /&gt;Дублируем прямоугольник (Ctrl+D), заполним копию градиентом от частично прозрачного чёрного до полностью прозрачного чёрного. Поместим копию на оригинал.&lt;br /&gt;&lt;p&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 93px;" src="http://4.bp.blogspot.com/_yMC8Md_7dAU/Sw6gf85IfzI/AAAAAAAAAAc/yYdF98FWvb8/s400/2.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5408436673300692786" ul="" ul="" /&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span&gt;Снова дублируем прямоугольник, сдвигаем его немного вправо и вниз, сделаем его чёрным, применим небольшое размытие (Объект → Заливка и обводка → Размывание) и передвинем его вниз стека (Объекты → Опустить на задний план либо кнопкой на панели инструментов). Тем самым получим небольшую тень под кнопкой. Это заготовка кнопки&lt;p&gt;&lt;span id="fullpost"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 116px;" src="http://1.bp.blogspot.com/_yMC8Md_7dAU/Sw6hJUbbhmI/AAAAAAAAAAs/510iU69__4Y/s400/3.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5408437383993198178" /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;&lt;span&gt;&lt;br /&gt;С помощью инструмента Текст (Text Tool) сделаем надпись на кнопке. Выберем шрифт, размер и цвет. Копируем текст, делаем копию чёрного цвета, приеменим фильтр размытия, сдвинем его немного вправо и вниз. Передвиним его вниз под исходную надпись, чтобы она выглядела объёмно, как 3D-текст:&lt;br /&gt;&lt;br /&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 79px;" src="http://4.bp.blogspot.com/_yMC8Md_7dAU/Sw6hesXliMI/AAAAAAAAAA0/G5tDbdT35hI/s400/4.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5408437751196780738" /&gt;&lt;br /&gt;&lt;br /&gt;Можно делать множество различных кнопок, только изменив цвет исходного прямоугольника:&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 61px;" src="http://4.bp.blogspot.com/_yMC8Md_7dAU/Sw6hpHUbs-I/AAAAAAAAAA8/5xpp8SOZG04/s400/5.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5408437930230002658" /&gt;&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;&lt;strong&gt;Аква-кнопки&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Начнем с основного прямоугольника как в простой 3D-кнопке, но радиус скругления углов сделаем больше. Дублируем и заполняем копию градиентом от частично прозрачного чёрного до полностью прозрачного чёрного, но в отличии от предыдущего примера ориентированный сверху вниз. Для создания  освещенной области снова дублируем прямоугольник, заполняем его белым цветом, уменьшаем его размер по высоте и помещаем в верхней части кнопки:&lt;p&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 57px;" src="http://1.bp.blogspot.com/_yMC8Md_7dAU/Sw6hxIMEQYI/AAAAAAAAABE/RJR0EjPzgvA/s400/6.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5408438067902300546" /&gt;&lt;br /&gt;Меняем белую область на градиент от частично прозрачного белого до полностью прозрачного белого. Сделаем еще одну освещенную область, закрасим её сплошным белым. Сделаем её ниже по высоте, поместим в нижнюю часть кнопки и применим размытие (Объект → Заливка и обводка → Размывание):&lt;br /&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 61px;" src="http://1.bp.blogspot.com/_yMC8Md_7dAU/Sw6h_9HBo7I/AAAAAAAAABM/dnXqnmmpsMM/s400/7.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5408438322626405298" /&gt;&lt;br /&gt;Сделаем тень у кнопки, а также небольшое размытие верхнего блика:&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 395px; height: 84px;" src="http://4.bp.blogspot.com/_yMC8Md_7dAU/Sw6iIu5Jn_I/AAAAAAAAABU/vmA0osFhINU/s400/8.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5408438473428934642" /&gt;&lt;br /&gt;Можно добавить надпись с тенью:&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 211px; height: 75px;" src="http://1.bp.blogspot.com/_yMC8Md_7dAU/Sw6iQN6cPnI/AAAAAAAAABc/GIH2QJgnjKo/s400/9.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5408438602014932594" /&gt;&lt;br /&gt;&lt;/span&gt; &lt;dl&gt;  &lt;dt&gt;&lt;p lang="ru-RU"&gt;&lt;b&gt;Кристальная кнопка&lt;/b&gt;&lt;br /&gt;&lt;dt&gt;&lt;p lang="ru-RU"&gt;Применим эффект кристалла  или стекла к простой 3D-кнопке.&lt;br /&gt;&lt;/dl&gt;   &lt;span lang="ru-RU"&gt;Начнём с простой кнопки и  изменим вертикально ориентированный  градиент:&lt;/span&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 115px;" src="http://1.bp.blogspot.com/_yMC8Md_7dAU/SxDOHkgEa4I/AAAAAAAAACE/PtOUJ4Sun5k/s400/10.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5409049781924555650" /&gt;  &lt;span lang="ru-RU"&gt;Дублируем базовый прямоугольник  и заполним его белым цветом. Используя  Безье линии (Bézier Lines), нарисуем полигон  через верхнюю левую часть и пересечём  её с белым прямоугольником (для этого  выделим белый прямоугольник и кривую  Безье, зажав S&lt;/span&gt;&lt;span lang="en-US"&gt;hift; в&lt;/span&gt;&lt;span lang="ru-RU"&gt;  меню выберем Контур →&lt;/span&gt;&lt;span lang="en-US"&gt;  &lt;/span&gt;&lt;span lang="ru-RU"&gt;Пересечение).&lt;/span&gt; &lt;dl&gt;  &lt;dt&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 132px;" src="http://2.bp.blogspot.com/_yMC8Md_7dAU/SxDOVZmaqKI/AAAAAAAAACM/XCwgjbNkNZg/s400/11_1.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5409050019516557474" /&gt;&lt;br /&gt;&lt;/dl&gt;   &lt;span lang="ru-RU"&gt;Приведем в порядок нижнюю  грань кривой освещённой области и  применим градиент от частично прозрачного  белого до полностью прозрачного белого:&lt;/span&gt; &lt;dl&gt;  &lt;dt&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 171px;" src="http://3.bp.blogspot.com/_yMC8Md_7dAU/SxDOVhheisI/AAAAAAAAACU/sZ2Re9cwQ6g/s400/12_1.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5409050021643324098" /&gt;&lt;br /&gt;&lt;dt&gt;&lt;b&gt;&lt;span lang="ru-RU"&gt;Тень снизу&lt;/span&gt;&lt;/b&gt;&lt;dt&gt;&lt;br /&gt;&lt;/dl&gt;   &lt;span lang="ru-RU"&gt;Используем Аква-кнопку  без тени. Дублируем  закруглённый  прямоугольник, заполним его чёрным  цветом, изменим высоту и сдвинем в  нижнюю часть кнопки. Применим размытие,  изменим прозрачность и опустим его  вниз под кнопку:&lt;/span&gt; &lt;dl&gt;  &lt;dt&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 168px;" src="http://1.bp.blogspot.com/_yMC8Md_7dAU/SxDOVzlvjdI/AAAAAAAAACc/TFPWH9Mb-cE/s400/13_1.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5409050026493054418" /&gt;&lt;br /&gt;&lt;dt&gt;&lt;br /&gt;  &lt;dt&gt;&lt;b&gt;&lt;span lang="ru-RU"&gt;Отражение&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;/dl&gt;  &lt;span lang="ru-RU"&gt;Снова начнем с Аква-кнопки  без тени. Дублируем цветной закруглённый  прямоугольник и сдвинем его вниз под  кнопку, он будет отражением:&lt;/span&gt; &lt;dl&gt;  &lt;dt&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 135px;" src="http://1.bp.blogspot.com/_yMC8Md_7dAU/SxDOWAjmZ-I/AAAAAAAAACk/PqBq5QhcidI/s400/14.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5409050029973727202" /&gt;&lt;br /&gt;&lt;/dl&gt;  &lt;span lang="ru-RU"&gt;На цветной прямоугольник  наложим градиент от полной непрозрачности  до полной прозрачности того же цвета.  По желанию можно добавить тень:&lt;/span&gt; &lt;dl&gt;  &lt;dt&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 128px;" src="http://2.bp.blogspot.com/_yMC8Md_7dAU/SxDOWQRK8WI/AAAAAAAAACs/160MZCxy19s/s400/15.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5409050034191397218" /&gt;&lt;br /&gt;&lt;dt&gt;&lt;b&gt;&lt;span lang="ru-RU"&gt;Различные состояния  кнопок&lt;/span&gt;&lt;/b&gt;&lt;dt&gt;&lt;br /&gt;&lt;dt&gt;&lt;span lang="ru-RU"&gt;Для веб-сайта могут быть  нужны различные состояния кнопок:  активная, неактивная или нажатая.&lt;/span&gt;&lt;br /&gt;&lt;/dl&gt;  &lt;span lang="ru-RU"&gt;Начнём с финальной версии  Аква-кнопки. Изменим цвет заднего фона  (основной цвет кнопки). Выберем тень  надписи и трансформируем её в свечение,  заменив чёрный цвет на белый и увеличив  размытость:&lt;/span&gt; &lt;dl&gt;  &lt;dt&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 149px;" src="http://4.bp.blogspot.com/_yMC8Md_7dAU/SxDOebgkXxI/AAAAAAAAAC0/j6rRru2TzGQ/s400/16_1.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5409050174647721746" /&gt;&lt;br /&gt;&lt;/dl&gt;  &lt;span lang="ru-RU"&gt;Ниже представлено 3 состояния  кнопок: активная, выделенная и неактивная.  Неактивная кнопка была получена  изменением цвета заднего фона и цвета  надписи на серый:&lt;/span&gt; &lt;dl&gt;  &lt;dt&gt;   &lt;dt&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 149px;" src="http://2.bp.blogspot.com/_yMC8Md_7dAU/SxDOeiQRsUI/AAAAAAAAAC8/q2kLbFWYi6E/s400/17_1.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5409050176458436930" /&gt;&lt;br /&gt;&lt;dt&gt;&lt;br /&gt;&lt;dt&gt;&lt;span lang="ru-RU"&gt;Надеюсь, теперь вы сможете  создавать свои кнопки без особых хлопот  :)&lt;/span&gt;&lt;/dl&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6693166578228563876-5432162406024136395?l=breeze-cosmodrome.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://breeze-cosmodrome.blogspot.com/feeds/5432162406024136395/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://breeze-cosmodrome.blogspot.com/2009/11/inkscape.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6693166578228563876/posts/default/5432162406024136395'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6693166578228563876/posts/default/5432162406024136395'/><link rel='alternate' type='text/html' href='http://breeze-cosmodrome.blogspot.com/2009/11/inkscape.html' title='Руководство по созданию глянцевых кнопок в Inkscape'/><author><name>Strive</name><uri>http://www.blogger.com/profile/04136312551500733341</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_yMC8Md_7dAU/Sw6gKxh1M2I/AAAAAAAAAAU/EXAduBeig4o/s72-c/Untitled-1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6693166578228563876.post-4238512072044307657</id><published>2009-07-21T09:06:00.001-07:00</published><updated>2009-07-30T20:42:37.399-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='c++'/><category scheme='http://www.blogger.com/atom/ns#' term='ogre'/><category scheme='http://www.blogger.com/atom/ns#' term='mingw'/><category scheme='http://www.blogger.com/atom/ns#' term='gcc'/><category scheme='http://www.blogger.com/atom/ns#' term='opengl'/><category scheme='http://www.blogger.com/atom/ns#' term='codeblocks'/><category scheme='http://www.blogger.com/atom/ns#' term='directx'/><title type='text'>Сборка OGRE из исходников под Windows, с помощью MinGW и среды Code::Blocks.</title><content type='html'>Ogre – это добротный движок рендеринга с открытыми исходниками. Я уже довольно давно посматриваю за его развитием (как и за другими интересными Open Source проектами), периодически собирая его (и вещи на его основе) из исходников, чтобы поиграться с демками. :) Но, к сожалению, до своих проектов, с использованием OGRE, руки пока не доходят.. :(&lt;br /&gt;Однако, рискну поделиться своим скромным опытом в вопросе сборки OGRE с помощью MinGW и черкануть немного об этом, в принципе, достаточно простом процессе. Может кому-то и пригодится (конечно, в первую очередь мне самому).. :)&lt;br /&gt;&lt;br /&gt;&lt;span id="fullpost"&gt;&lt;br /&gt;&lt;br /&gt;Для того чтобы собрать OGRE  понадобиться:&lt;br /&gt;1.Установленный MinGW (желательно &lt;a href="http://breeze-cosmodrome.blogspot.com/2009/06/mingw.html"&gt;первым способом&lt;/a&gt;) и &lt;a href="http://breeze-cosmodrome.blogspot.com/2009/06/codeblocks-nightly-builds-windows.html"&gt;настроенный Code::Blocks&lt;/a&gt;.&lt;br /&gt;2.Собственно исходники OGRE. Для начала лучше попробовать архив с последним релизом, т.к.при сборке trunk-версии из репозитория могут быть проблемы требующие вмешательства напильника.. Последний релиз следует искать тут &lt;a href="http://www.ogre3d.org/download/source"&gt;http://www.ogre3d.org/download/source&lt;/a&gt;. В моем случае файл OGRE 1.6.2 Source For Windows ( ogre-v1-6-2.zip, 11 April 2009, 46.4Mb ).&lt;br /&gt;3.Архив со сторонними зависимостями (Precompiled Dependencies). Это предварительно скомпилированные сторонние библиотеки. ВНИМАНИЕ, архив зависимостей должен соответствовать вашему компилятору, в нашем случае MinGW (библиотеки для Visual Studio не подойдут). Ищем архив на странице с исходниками &lt;a href="http://www.ogre3d.org/download/source"&gt;http://www.ogre3d.org/download/source&lt;/a&gt;. В моем случае Code::Blocks + MingW Precompiled Dependencies (OgreDependencies_CBMinGW_Shoggoth_20090131.zip, 31 January 2009, 21.5Mb ).&lt;br /&gt;4.Если хочется собрать плагин для рендеринга через DirectX (RenderSystem_Direct3D9.dll), то нужно еще установить DirectX SDK (у меня валялся файл DXSDK_Nov08.exe, 507 MB) или просто раздобыть заголовочные файлы от него (библиотечные файлы идут в архиве с зависимостями libd3dx9_30.a, libd3dx9d_30.a, libd3d9.a, а либы для Visual Studio из SDK все равно не подойдут). В принципе можно положить на DirectX болт, так есть еще OpenGL рендер (RenderSystem_GL.dll), который прекрасно собирается без DirectX SDK и позволяет запускать все стандартные демки OGRE. Нужно только пропатчить файл Plugins.cfg в директории с собранными демками перед запуском и закаментить или вообще убрать строчку «Plugin=RenderSystem_Direct3D9».&lt;br /&gt;&lt;br /&gt;Прибарахлились. Можно ехать дальше..&lt;br /&gt;&lt;br /&gt;Распаковываем архив с исходниками ogre-v1-6-2.zip в какую-нибудь папку. Я буду предполагать, что исходники распакованы в папку «c:\dev». &lt;br /&gt;Распаковываем зависимости OgreDependencies_CBMinGW_Shoggoth_20090131.zip в папку с исходниками OGRE «c:\dev\ogre». &lt;br /&gt;Запускаем Code::Blocks и открываем в нем файл рабочей области «c:\dev\ogre\Ogre.workspace».&lt;br /&gt;Если у вас многоядерная система и есть желание ускорить процесс сборки, проверьте настройки компиятора и укажите сколько процессов использовать для сборки (об этом я писал &lt;a href="http://breeze-cosmodrome.blogspot.com/2009/06/codeblocks-nightly-builds-windows.html"&gt;в конце поста про Code::Blocks&lt;/a&gt;). Это делается в меню Code::Blocks «Settings-&gt;Compiler and Debugger..-&gt;Global compiler settings» на вкладке «Other settings»&lt;br /&gt;Если DirectX SDK установлен пропишите его в путях компилятора. Code::Blocks «Settings-&gt;Compiler and Debugger..-&gt;Global compiler settings» на вкладке «Search directories» в суб-вкладке «Compiler» добавьте путь к заголовочным файлам DirectX, у меня это «C:\Program Files\Microsoft DirectX SDK (November 2008)\Include».&lt;br /&gt;Если на DirectX Вы забили, то закройте проект RenderSystem_Direct3D9, чтобы не было ругани при попытке его сборки (правой на названии «Close project»).&lt;br /&gt;&lt;br /&gt;Все готово к сборке :). Жмем в меню Code::Blocks «Build-&gt;Build workspace» и идем пить чай пока идет сборка.&lt;br /&gt;&lt;br /&gt;Если во время сборки не было ошибок, то все клево. Идем в папку «c:\dev\ogre\Samples\Common\bin\Release\» и любуемся собранными демками.  Если нужно отключаем DirectX в Plugins.cfg.&lt;br /&gt;&lt;br /&gt;Если у Вас не пашет пример Demo_BspCollision.exe, то попробуйте добавить строчку «dInitODE();» в начало конструктора OgreRefApp::World::World («c:\dev\ogre\ReferenceApplication\ReferenceAppLayer\src\OgreRefAppWorld.cpp») и пересоберите проект  Demo_BspCollision.&lt;br /&gt;&lt;br /&gt;Ссылки по теме:&lt;br /&gt;&lt;a href="http://www.ogre3d.org"&gt;http://www.ogre3d.org&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.ogre3d.ru/news.php"&gt;http://www.ogre3d.ru&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;На сегодня все. Удачной компиляции! :)&lt;br /&gt;&lt;br /&gt;P.S. К сожалению, я здесь упустил один момент. В wiki на ogre3d.org есть &lt;a href="http://www.ogre3d.org/wiki/index.php/Codeblocks_and_MinGW#Why_use_a_modified_version_of_libstdc.2B.2B_v3_with_MingW.3F"&gt;замечание &lt;/a&gt;о том что их тулбокс с mingw использует модифицированную версию библиотеки libstdc++, т.к. при использовании стандартной версии идущей с gcc-g++ при передачи строк между dll возникают проблемы с памятью (из за того что libstdc++ статически линкуется к каждой dll). Насколько я понял это в основном касается OgrePlatform и OgreMain из OGRE 1.4.x. Но по всей видимости в Ogre 1.6.x код из OgrePlatform  перекочевал в OgreMain, и возможно проблема уже не актуальна :).. Во избежание неприятных последствий можно перестраховаться и воспользоваться &lt;a href="http://www.tdragon.net/recentgcc/"&gt;TDM Mingw&lt;/a&gt; (где уже сделаны необходимые модификации), либо использовать &lt;a href="http://www.ogre3d.org/wiki/index.php/Codeblocks_and_MinGW#MinGW_C.2B.2B_Toolbox"&gt;тулбокс с ogre3d.org&lt;/a&gt; обновив пакеты w32api и mingwrt (w32api-3.13-mingw32-dev.tar.gz, mingwrt-3.15.2-mingw32-dev.tar.gz)&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6693166578228563876-4238512072044307657?l=breeze-cosmodrome.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://breeze-cosmodrome.blogspot.com/feeds/4238512072044307657/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://breeze-cosmodrome.blogspot.com/2009/07/ogre-windows-mingw-codeblocks.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6693166578228563876/posts/default/4238512072044307657'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6693166578228563876/posts/default/4238512072044307657'/><link rel='alternate' type='text/html' href='http://breeze-cosmodrome.blogspot.com/2009/07/ogre-windows-mingw-codeblocks.html' title='Сборка OGRE из исходников под Windows, с помощью MinGW и среды Code::Blocks.'/><author><name>Breeze</name><uri>http://www.blogger.com/profile/05690030585062180386</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6693166578228563876.post-7421886415549864323</id><published>2009-06-23T09:44:00.000-07:00</published><updated>2010-01-09T01:22:05.434-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='c++'/><category scheme='http://www.blogger.com/atom/ns#' term='gcc'/><category scheme='http://www.blogger.com/atom/ns#' term='wxwidgets'/><category scheme='http://www.blogger.com/atom/ns#' term='codeblocks'/><title type='text'>Установка Code::Blocks (Nightly builds) в Windows</title><content type='html'>Несмотря на наличие на официальном сайте среды Code::Blocks полноценных инсталляторов для множества платформ, разработчики не радуют пользователей регулярностью их обновлений. Интервал между двумя официальными релизами (версией 8.02 и предыдущей) был более 2-х лет. :) Однако, все это время среда разработки продолжала развиваться и обрастать новыми возможностями.&lt;br /&gt;&lt;br /&gt;UPD 9.01.2010: Вставил скриншоты которые валялись на компе уже очень давно :).&lt;br /&gt;&lt;span id="fullpost"&gt;&lt;br /&gt;Очевидно, у команды разработчиков Code::Blocks, просто, нет возможности часто подготавливать полноценные релизы.. Это не удивительно, если учесть то, что разработка ведется энтузиастами в свободное от основной работы (т.е. зарабатывания денег) время.&lt;br /&gt;К сожалению, развитие программы плохо заметно если пробегать официальный сайт &lt;a href="http://www.codeblocks.org/"&gt;http://www.codeblocks.org&lt;/a&gt; бегло, т.е. ограничиться посещением страницы с описанием и сразу перейти на страницу загрузки с версией не первой свежести.. Вполне возможно, именно первое знакомство со старыми версиями и отпугивает многих потенциальных пользователей, от того чтобы начать использовать эту среду. Но разработка не стоит на месте и прогресс можно наблюдать, просматривая списки изменений, на форуме &lt;a href="http://forums.codeblocks.org/"&gt;http://forums.codeblocks.org/&lt;/a&gt; в разделе &lt;a href="http://forums.codeblocks.org/index.php/board,20.0.html"&gt;Nightly builds&lt;/a&gt;, где регулярно выкладываются свежие билды Code::Blocks под Windows на основе последних версий исходников из репозитория. Существует так же неофициальный debian-репозиторий c ночными сборками &lt;a href="http://apt.jenslody.de/"&gt;http://apt.jenslody.de&lt;/a&gt;, который можно использовать для установки последних версий в Debian и Ubuntu. Кроме того для самых отчаянных и нетерпеливых всегда существует возможность самостоятельно собрать Code::Blocks из исходников. Для получения последних версий исходников всегда можно обратиться к svn-репозиторию проекта: &lt;a href="http://svn.berlios.de/svnroot/repos/codeblocks/trunk"&gt;http://svn.berlios.de/svnroot/repos/codeblocks/trunk&lt;/a&gt;&lt;br /&gt;Итак, если Вас не устраивает версия Code::Blocks представленная в секции загрузки на официальном сайте, то рекомендую попробовать последнюю ночную сборку, предварительно установив MinGW. Где искать MinGW, я уже &lt;a href="http://breeze-cosmodrome.blogspot.com/2009/06/mingw.html"&gt;писал ранее&lt;/a&gt;.&lt;br /&gt;Смело идем на форум &lt;a href="http://forums.codeblocks.org/"&gt;http://forums.codeblocks.org/&lt;/a&gt; в раздел &lt;a href="http://forums.codeblocks.org/index.php/board,20.0.html"&gt;Nightly builds&lt;/a&gt; и заходим в последний созданный топик сообщающий о выходе билда.&lt;br /&gt;Например: &lt;a href="http://forums.codeblocks.org/index.php/topic,10630.0.html"&gt;«The 01 June 2009 build (5616) is out»&lt;/a&gt;. Из названия следует что успешно вышел билд за 1 июня на основе ревизии 5616 из официального svn-репозитория проекта.&lt;br /&gt;В первом посте топика видим несколько ссылок: ссылка на rss с новостями, инструкцию по работе с ночными сборками и 3 ссылки на файлы архивов в формате 7z. Если Вы впервые качаете ночную сборку, то нужно обязательно загрузить все три файла.&lt;br /&gt;В моем случае это:&lt;br /&gt;&lt;a href="http://prdownload.berlios.de/codeblocks/wxmsw28u_gcc_cb_wx2810.7z"&gt;wxmsw28u_gcc_cb_wx2810.7z&lt;/a&gt; - библиотека wxWidgets специальная сборка для Code::Blocks. Меняется редко если для предыдущей ночной сборки вы уже скачали этот файл, то второй раз качать его не нужно. :)&lt;br /&gt;&lt;a href="http://prdownload.berlios.de/codeblocks/mingwm10_gcc421.7z"&gt;mingwm10_gcc421.7z&lt;/a&gt; - какая то служебная библиотека из состава MinGW, нужна для dll c wxWidgets. :) Меняется еще реже.&lt;br /&gt;&lt;a href="http://prdownload.berlios.de/codeblocks/CB_20090601_rev5616_win32.7z"&gt;CB_20090601_rev5616_win32.7z&lt;/a&gt; - свежий билд Code::Blocks. Меняется каждую ночную сборку.. ;)&lt;br /&gt;&lt;br /&gt;Создадим папку в которой будет жить среда Code::Blocks и распакуем в нее содержимое всех трех архивов. По старой привычке у меня эта папка имеет незамысловатый путь «c:\codeblocks». ;) &lt;a href="http://breeze-cosmodrome.blogspot.com/2009/06/mingw.html"&gt;Установите MinGW&lt;/a&gt; если вы этого еще не сделали.&lt;br /&gt;&lt;br /&gt;Запустите codeblocks.exe. При первом запуске среда отобразить диалог со списком обнаруженных в системе компиляторов.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_hgR5SO9hub4/S0hF7sLPYII/AAAAAAAAADA/tN-Jc5lgMOo/s1600-h/cb_start.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 270px;" src="http://4.bp.blogspot.com/_hgR5SO9hub4/S0hF7sLPYII/AAAAAAAAADA/tN-Jc5lgMOo/s400/cb_start.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5424662642940665986" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;В моем случае Code::Blocks нашел установленный MinGW как GNU GCC Compiller и компилятор из состава Microsoft Visual Studio 2008 Express.&lt;br /&gt;Я выбираю «GNU GCC Compiller», нажимаю «Set as default» и «OK», в дальнейшем MinGW будет использоваться по умолчанию.&lt;br /&gt;Компилятор выбран и программа радостно откроет главное окно и диалог «Tip of the day». Закройте окно с советами (можете снять галочку, чтобы оно не выскакивало при старте программы), к нему всегда можно вернуться через главное меню в разделе «Help». Далее программа спросит хотите ли Вы ассоциировать Code::Blocks с файлами C/C++ (*.c, *.cpp, *.h), файлами проектов Code::Blocks (*.cbp, *.workspace) или даже c файлами проектов других сред разработки DevCPP и Visual Studio.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_hgR5SO9hub4/S0hF8OBErsI/AAAAAAAAADI/8O6KX4qwSmo/s1600-h/cb_assoc.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 205px;" src="http://3.bp.blogspot.com/_hgR5SO9hub4/S0hF8OBErsI/AAAAAAAAADI/8O6KX4qwSmo/s400/cb_assoc.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5424662652024827586" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Я выбираю ассоциации с файлами C/C++ и файлами проектов Code::Blocks, это третья строчка. Нажимаем «OK» и среда уже практически готова к работе, осталось немного подстроить интерфейс под себя и проверить на тестовом проекте.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_hgR5SO9hub4/S0hF8nlkY2I/AAAAAAAAADY/2XrvQLS65sE/s1600-h/cb_first.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 312px;" src="http://1.bp.blogspot.com/_hgR5SO9hub4/S0hF8nlkY2I/AAAAAAAAADY/2XrvQLS65sE/s400/cb_first.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5424662658888786786" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Закрываем окошко «Scripting console» и размещаем панели инструментов более компактно. Часть панели можно выборочно скрыть через меню  «View-&gt;Tollbars»&lt;br /&gt;Я размещаю панели в 3 строчки:&lt;br /&gt;1 Строчка - панели Main (значки сохранения, открытия файлов и т.д.), IncrementalSearch и ThreadSearch.&lt;br /&gt;2 строчка - панель CodeCompletion.&lt;br /&gt;3 строчка - панели Compiller и Debugger.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_hgR5SO9hub4/S0hF8zRH8tI/AAAAAAAAADg/9goDwvkUWi0/s1600-h/cb_main.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 306px;" src="http://1.bp.blogspot.com/_hgR5SO9hub4/S0hF8zRH8tI/AAAAAAAAADg/9goDwvkUWi0/s400/cb_main.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5424662662024262354" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Для проверки попробуем скомпилировать HelloWorld . :) Для этого создадим новый проект  «File-&gt;New-&gt;Project». Откроется окно с выбором шаблонов проектов. Выберите «Console application» - откроется мастер создания проекта.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_hgR5SO9hub4/S0hH7g79JDI/AAAAAAAAADo/n7gOVTcGiTc/s1600-h/e0.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 331px;" src="http://2.bp.blogspot.com/_hgR5SO9hub4/S0hH7g79JDI/AAAAAAAAADo/n7gOVTcGiTc/s400/e0.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5424664838947021874" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_hgR5SO9hub4/S0hH7y88YbI/AAAAAAAAADw/ikUWeRwSunQ/s1600-h/e1.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 331px;" src="http://2.bp.blogspot.com/_hgR5SO9hub4/S0hH7y88YbI/AAAAAAAAADw/ikUWeRwSunQ/s400/e1.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5424664843783004594" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_hgR5SO9hub4/S0hH8RWkdfI/AAAAAAAAAD4/6F8QHOJZMyc/s1600-h/e2.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 331px;" src="http://4.bp.blogspot.com/_hgR5SO9hub4/S0hH8RWkdfI/AAAAAAAAAD4/6F8QHOJZMyc/s400/e2.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5424664851943552498" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Первая страница мастера не представляет интереса. На второй нужно указать язык проекта C или C++. На третьей нужно указать название проекта и папку где он будет создан. На четвертой(последней) странице производится выбор компилятора для проекта и настройка папок куда будут складываться результирующие исполняемые и объектные файлы. Жмем Finish - проект создан. В окошке Managment появился новый проект, пока состоящий из одного файла main.cpp (или main.c).&lt;br /&gt;&lt;br /&gt;Соберем проект, меню  «Build-&gt;Build and run»  или просто F9 (для компиляции, линковки и запуска проекта).&lt;br /&gt;&lt;br /&gt;Если сборка пройдет неудачно или Code::Blocks не найдет MinGW, то в нижней части программы на владке Build log появится сообщение подсвеченное красным.&lt;br /&gt;Например,  если не найден MinGW:&lt;br /&gt;-------------- Build: Release in test ---------------&lt;br /&gt;Compiling: main.cpp&lt;br /&gt;Execution of 'mingw32-g++.exe -Wall -fexceptions  -O2     -c D:\dev\sandbox\test\main.cpp -o obj\Release\main.o' in 'D:\dev\sandbox\test' failed.&lt;br /&gt;Nothing to be done.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_hgR5SO9hub4/S0hF8XSjtaI/AAAAAAAAADQ/BqTcObEvcHc/s1600-h/cb_fail.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 293px;" src="http://3.bp.blogspot.com/_hgR5SO9hub4/S0hF8XSjtaI/AAAAAAAAADQ/BqTcObEvcHc/s400/cb_fail.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5424662654514083234" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Убедитесь что MinGW установлен. Если он установлен в папку отличную от «c:\mingw» и не определяются Code:Blocks автоматически, то зайдите в настройки компилятора «Settings-&gt;Compiler and Debugger..-&gt;Global compiler settings». В выпадающем списке «Select compiler» выберите «GNU GCC Compiler», перейдите на вкладку «Toolchain executables» и в поле «Compiler installation directory» укажите путь к MinGW.&lt;br /&gt;&lt;br /&gt;Если сборка пройдет успешно Вы увидите перед собой окошко консоли с примерно таким текстом:&lt;br /&gt;Hello world!&lt;br /&gt;Process returned 0 (0x0)   execution time : 0.093 s&lt;br /&gt;Press any key to continue.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_hgR5SO9hub4/S0hH8o8qmsI/AAAAAAAAAEA/g6v2Ry29v5U/s1600-h/cb_cons.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 202px;" src="http://3.bp.blogspot.com/_hgR5SO9hub4/S0hH8o8qmsI/AAAAAAAAAEA/g6v2Ry29v5U/s400/cb_cons.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5424664858277354178" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_hgR5SO9hub4/S0hH85Mv2KI/AAAAAAAAAEI/0YEc86-oTjc/s1600-h/cb_succ.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 293px;" src="http://1.bp.blogspot.com/_hgR5SO9hub4/S0hH85Mv2KI/AAAAAAAAAEI/0YEc86-oTjc/s400/cb_succ.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5424664862639773858" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Это окошко принадлежит пускалке для консольных приложений «cb_console_runner.exe», которая замеряет время выполнения Вашей программы и, ожидая ввода с клавиатуры, не дает пропасть в небытие данным выведеным на консоль, избавляя от извращений типа «getchar()» в конце программы. :)&lt;br /&gt;&lt;br /&gt;Ну вот и все, Code::Blocks - готов к работе. :)&lt;br /&gt;&lt;br /&gt;На последок, порекомендую так же в настройках компилятора «Settings-&gt;Compiler and Debugger..-&gt;Global compiler settings» изменить формат лога компиляции и указать максимально количество процессов для параллельной компиляции файлов проекта (дает существенное ускорение компиляции больших проектов на многоядерных процессорах).&lt;br /&gt;Для этого перейдем на вкладку «Other settings». Поставим галочку «Display build progress percentage in log» (это будет отображать в логе компиляции прогресс сборки проекта в процентах). Иногда может быть полезным посмотреть полную информацию о параметрах вызова компилятора, для этого может пригодится установить параметр «Compiler logging» в значение «Full command line» . Изменим число в поле с названием «Number processes for prallel builds» на число равное числу ядер в вашей системе. В принципе это число может быть и больше. Например у меня сборка одного проекта на двухядерной системе в 4 процесса происходила слегка быстрее чем в 2 процесса. Но не увлекайтесь, если поставить совсем неадекватное число то, получите обратный эффект - уменьшение скорости.&lt;br /&gt;&lt;br /&gt;На сегодня все. Удачной компиляции! :)&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6693166578228563876-7421886415549864323?l=breeze-cosmodrome.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://breeze-cosmodrome.blogspot.com/feeds/7421886415549864323/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://breeze-cosmodrome.blogspot.com/2009/06/codeblocks-nightly-builds-windows.html#comment-form' title='Комментарии: 10'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6693166578228563876/posts/default/7421886415549864323'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6693166578228563876/posts/default/7421886415549864323'/><link rel='alternate' type='text/html' href='http://breeze-cosmodrome.blogspot.com/2009/06/codeblocks-nightly-builds-windows.html' title='Установка Code::Blocks (Nightly builds) в Windows'/><author><name>Breeze</name><uri>http://www.blogger.com/profile/05690030585062180386</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_hgR5SO9hub4/S0hF7sLPYII/AAAAAAAAADA/tN-Jc5lgMOo/s72-c/cb_start.png' height='72' width='72'/><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6693166578228563876.post-7659003501189488781</id><published>2009-06-19T01:50:00.000-07:00</published><updated>2009-06-21T04:38:28.536-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='c++'/><category scheme='http://www.blogger.com/atom/ns#' term='mingw'/><category scheme='http://www.blogger.com/atom/ns#' term='gcc'/><category scheme='http://www.blogger.com/atom/ns#' term='codeblocks'/><title type='text'>Установка MinGW</title><content type='html'>MinGW - это нативный порт компиляторов GCC на платформу Windows. На сегодняшний день является наиболее «вменяемой» бесплатной альтернативной коммерческим компиляторам. Повсеместно применяется для разработки кросс-платформенных приложений. Например, именно MinGW используется в качестве компилятора С++ под Windows в средах разработки Qt Creator, Code::Blocks (в качестве основного), NetBeans и Eclipse.&lt;br /&gt;&lt;br /&gt;Ниже я перечислю основные особенности MinGW и опишу несколько способов для его установки.&lt;br /&gt;&lt;br /&gt;&lt;span id="fullpost"&gt;&lt;br /&gt;Для начала перечислю важные (на мой взгляд) особенности MinGW. ;)&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;- Относительно медленная компиляция C++ кода;&lt;br /&gt;- Относительно медленная линковка результирующего файла;&lt;br /&gt;- Несовместимость с, содержащими C++ классы, *.lib и *.dll файлами созданными в MS Visual Studio. По этой причине MinGW и PhysX SDK не дружат друг с другом..&lt;br /&gt;&lt;br /&gt;Для того чтобы заполучить на свой компьютер готовый к работе MinGW, существует несколько способов.&lt;br /&gt;&lt;br /&gt;Способ 1- использовать автоматический установщик с официального сайта MinGW.&lt;br /&gt;Установщик официальной версии MinGW следует искать на сайте  &lt;a href="http://mingw.org/"&gt;http://mingw.org/&lt;/a&gt;&lt;br /&gt;На момент написания этих строк файл установщика называется «MinGW-5.1.4.exe» и его можно загрузить со страницы &lt;a href="http://sourceforge.net/project/showfiles.php?group_id=2435&amp;package_id=240780"&gt;загрузки&lt;/a&gt;.&lt;br /&gt;Установщик состоит из одного файла «MinGW-5.1.4.exe» и имеет мизерный разер (~140 KB). Непосредственно при установке он выкачивает дополнительные архивы с компонентами GCC. По умолчанию MinGW ставиться в папку «c:\mingw» Перед установкой рекомендую поместить «MinGW-5.1.4.exe» в отдельную пустую папку, т.к. все выкаченные архивы кэшируются в  папке откуда запущена установка. Если ничего не удалять, то можно все это добро скопировать и устанавливать без интернета, запуская все тот же «MinGW-5.1.4.exe». &lt;br /&gt;&lt;br /&gt;Следует отметить, что при установке через «MinGW-5.1.4.exe», можно выбрать версию Mingw (Previous, Current, Candidate), инсталлятор регистрирует установку в системе и предоставляет возможность обновления и удаления текущей установки. &lt;br /&gt;Если MinGW ставится для работы с Code::Blocks, то при установке рекомендую выбрать версию «Candidate», а среди устанавливаемых компонентов должны быть обязательно отмечены «MinGW base tools», «g++ compiller» и «MinGW Make».&lt;br /&gt;&lt;br /&gt;Способ 2 - Выкачать нужные пакеты с &lt;a href="http://mingw.org"&gt;http://mingw.org&lt;/a&gt; вручную или воспользоваться архивами полученными при установки первым способом.&lt;br /&gt;Приведу список файлов которые скачивает официальный установщик MinGW для версии Candidate:&lt;br /&gt;&lt;br /&gt; gdb-6.8-mingw-3.tar.bz2&lt;br /&gt; mingw32-make-3.81-2.tar.gz&lt;br /&gt; binutils-2.18.50-20080109-2.tar.gz&lt;br /&gt; gcc-g++-3.4.5-20060117-3.tar.gz&lt;br /&gt; w32api-3.13-mingw32-dev.tar.gz&lt;br /&gt; mingwrt-3.15.2-mingw32-dev.tar.gz&lt;br /&gt; gcc-core-3.4.5-20060117-3.tar.gz&lt;br /&gt;&lt;br /&gt;Не нужно даже прибегать к запуску инсталлятора, достаточно просто разархивировать все архивы в одну папку.  Для распаковки можно воспользоваться замечательным бесплатным архиватором 7-zip (&lt;a href="http://www.7-zip.org/"&gt;http://www.7-zip.org/&lt;/a&gt;). &lt;br /&gt;&lt;br /&gt;И еще, отладчик gdb (который будет очень кстати при работе в среде Code::Blocks) придется качать отдельно в секции загрузки  &lt;a href="http://mingw.org/"&gt;http://mingw.org&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Способ 3 - Использовать заранее подготовленный пакет установки от сторонних разработчиков включающий все что требуется.&lt;br /&gt;Вроде бы самый удобный способ. Но может так случиться, что однажды подготовленный пакет уже больше никогда не обновится и станет неприемлем для использования из-за неактуальных версий программ, библиотек и заголовочных файлов. Или же обновления этого пакета могут сильно задержаться.. :)&lt;br /&gt;&lt;br /&gt;Примером может служить пакет &lt;a href="http://www.ogre3d.org/wiki/index.php/Codeblocks_and_MinGW#MinGW_C.2B.2B_Toolbox"&gt;MinGW С++ Toolbox&lt;/a&gt;  предлагаемый (в связке с Code::Blocks ;) в качестве альтернативного инструментария для сборки и работы с движком рендеринга Ogre. Никаких специфических ограничений и заточек под Ogre в нем нет, и я давно использовал его просто как удобный «все-в-одном» инсталлятор MinGW. Все было замечательно. :) Но однажды случилось страшное.. В очередной раз решив собрать свежий Ogre, потыкать примеры и заставить себя чего-нибудь на нем слепить, я обнаружил что исходники относительно недавно вышедшего Ogre 1.6.2 у меня просто не собираются этим пакетом инструментов (требуется обновление w32api до версии 3.13). К слову, установка MinGW версии Candidate первым способом позволила решить эту проблему. ;) Хотя данный пакет в целом не плох и ранее всегда справлялся со своими задачами. Если требуется  компактный инсталлятор со стабильным MinGW для общих задач, то можно со спокойной душой качать MinGW_Toolbox_Setup_wr1 c &lt;a href="http://www.ogre3d.org/"&gt;ogre3d.org&lt;/a&gt;. Будем наедятся что актуальная версия этого пакета появится в скором времени. &lt;br /&gt;&lt;br /&gt;Если поискать, то в интернете, можно найти и другие сборки MinGW от энтузиастов. Как правило это просто само-распаковывающихся архивы.&lt;br /&gt;&lt;br /&gt;Совсем недавно мне попалась альтернативная сборка последних версий GCC/Mingw32 - TDM-MinGW &lt;a href="http://www.tdragon.net/recentgcc/"&gt;http://www.tdragon.net/recentgcc/&lt;/a&gt;&lt;br /&gt;Она является неофициальной и, как заявляют разработчики, предназначена для экспериментальных целей. Но судя по всему ее можно использовать, если она не вызывает проблем в конкретном проекте. :) Я ее еще не испытывал на сборке крупных вещей, но со временем постараюсь это исправить.&lt;br /&gt;Сборка имеет полноценный инсталлятор. При установки можно выбрать между стабильными и экспериментальными вариантами исполнительных фалов MinGW. Включает в себя все необходимое для сборки и отладки С++ проектов (make,gcc,gdb).&lt;br /&gt;Из плюсов этой сборки несомненным является ее регулярное обновление.&lt;br /&gt;Качать &lt;a href="http://downloads.sourceforge.net/tdm-gcc/tdm-mingw-1.905.0-4.4.0-2.exe"&gt;Bundled Installer&lt;/a&gt;. Размер около 26 MB.&lt;br /&gt;&lt;br /&gt;Способ 4 - скачать среду разработки со встроенным MinGW. :)&lt;br /&gt;Один самый ленивый способ, которым я пользовался когда-то давно. Я ставил Code::Blocks с MinGW в комплекте и накатывал ночные сборки поверх.&lt;br /&gt;Из плюсов можно отметить что отпадает вопрос настройки среды разработки. :) Но в тоже время если поставить Qt Creator или старину wxDevCpp со встроенным MinGW и потом настроить использование его в Code::Blocks получится путаница и последующие лишние телодвижения при удалении и обновлении вышеупомянутых программ. Если в скачиваемой программе MinGW идет в комплекте и никому не мешает, то это прекрасно. Но для остальных программ лучше использовать отдельную инсталляцию MinGW в папку «c:\mingw», т.к. там  они его буду искать в первую очередь.&lt;br /&gt;&lt;br /&gt;Думаю на сегодня хватит про MinGW.&lt;br /&gt;&lt;br /&gt;В ближайшее время постараюсь (как и обещал ранее) написать  про установку ночных сборок Code::Blocks и их первичную настройку.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6693166578228563876-7659003501189488781?l=breeze-cosmodrome.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://breeze-cosmodrome.blogspot.com/feeds/7659003501189488781/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://breeze-cosmodrome.blogspot.com/2009/06/mingw.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6693166578228563876/posts/default/7659003501189488781'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6693166578228563876/posts/default/7659003501189488781'/><link rel='alternate' type='text/html' href='http://breeze-cosmodrome.blogspot.com/2009/06/mingw.html' title='Установка MinGW'/><author><name>Breeze</name><uri>http://www.blogger.com/profile/05690030585062180386</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6693166578228563876.post-4972420452686479989</id><published>2009-06-18T01:06:00.000-07:00</published><updated>2009-06-18T07:45:35.332-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='jython'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>Релиз Jython 2.5</title><content type='html'>Наконец то Jython 2.5 разродился релизом. :)&lt;br /&gt;Появился повод пощупать его поплотнее.&lt;br /&gt;&lt;br /&gt;Качать: &lt;a href="http://downloads.sourceforge.net/jython/jython_installer-2.5.0.jar"&gt;http://downloads.sourceforge.net/jython/jython_installer-2.5.0.jar&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6693166578228563876-4972420452686479989?l=breeze-cosmodrome.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://breeze-cosmodrome.blogspot.com/feeds/4972420452686479989/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://breeze-cosmodrome.blogspot.com/2009/06/jython-25.html#comment-form' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6693166578228563876/posts/default/4972420452686479989'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6693166578228563876/posts/default/4972420452686479989'/><link rel='alternate' type='text/html' href='http://breeze-cosmodrome.blogspot.com/2009/06/jython-25.html' title='Релиз Jython 2.5'/><author><name>Breeze</name><uri>http://www.blogger.com/profile/05690030585062180386</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6693166578228563876.post-6527760424035346003</id><published>2009-06-16T21:24:00.000-07:00</published><updated>2009-06-17T16:22:55.628-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='c++'/><category scheme='http://www.blogger.com/atom/ns#' term='mingw'/><category scheme='http://www.blogger.com/atom/ns#' term='wxwidgets'/><category scheme='http://www.blogger.com/atom/ns#' term='codeblocks'/><title type='text'>Cреда разработки Code::Blocks</title><content type='html'>Несколько лет назад я случайно попробовал Code::Blocks и он меня  «зацепил». В 20 мегабайтах инсталлятора скрывалась полноценная среда программирования готовая к работе сразу после минутной установки. Ее можно было быстро и без геморроя развернуть на любой подручной машине, в отличие от C++ Builder 6, который я  использовал, и MS Visual Studio, на который я заглядывался ,но так и не перелез из-за ненадобности. С тех пор много воды утекло но для своих С++ проектов и экспериментов я стараюсь использовать именно Code::Blocks. &lt;br /&gt;&lt;br /&gt;Не претендуя на полноту и оригинальность, я все же расскажу немного об этом добротном инструменте. ;)&lt;br /&gt;&lt;span id="fullpost"&gt;&lt;br /&gt;&lt;br /&gt;Code::Blocks  - это интегрированная кроссплатформенная среда разработки  для языков С, C++ и D. &lt;br /&gt;На мой взгляд, она хорошо подходит для изучения С/С++ и разработки относительно небольших проектов.&lt;br /&gt;&lt;br /&gt;Перечислю главные, на мой взгляд, особенности программы:&lt;br /&gt; + Code::Blocks написан на С++ с использованием библиотеки wxWidgets, поэтому работает довольно шустро и кушает мало ресурсов системы (в отличие от Eclipse и Netbeans, написанных на  Java).&lt;br /&gt; + Встроенный редактор кода базируется на компоненте Scintilla и предлагает подсветку синтаксиса для десятка языков с возможностью свертывания фрагментов кода. К слову сказать, Scintilla так же используется в редакторах SciTE и Notepad++. &lt;br /&gt; + Возможность экспорта исходника (с подсветкой синтаксиса) в html, odt, pdf и rtf.&lt;br /&gt; + Кроссплатформенность. Среда прекрасно работает в Windows и Linux.&lt;br /&gt; + Хорошо поддерживает разработку программ с использованием wxWidgets.&lt;br /&gt; + Поддержка множества компиляторов. Кроме GСС/MinGW поддерживаются и компиляторы от Microsoft, Borland, Intel, Digital Mars. Но на мой взгляд, GСС/MinGW интегрированы в среду наиболее плотно и лучше использовать именно их.&lt;br /&gt; + Интегрированный отладчик. Вполне терпимый.&lt;br /&gt; + Автодополнение кода. Вполне терпимое. :)&lt;br /&gt; + Удобные функции поиска по проекту.&lt;br /&gt; + Богатые возможности по настройке проекта.&lt;br /&gt; + Простой и удобный интерфейс. Хотя местами возможно деревянный. :)&lt;br /&gt; + Поддержка плагинов. Можно писать свои модули расширений. Например новые типы редакторов.Множество стандартных плагинов облегчающих жизнь: &lt;br /&gt;   * Source code formatter (Astyle) – расставляет отступы в коде и приводит к выбранному стилю. Удобно если вам попался чужой код форматирование которого съехало, либо его изначально не было. ;)&lt;br /&gt;   * wxSmith – визуальный редактор форм для проектов на базе wxWidgets.&lt;br /&gt;   * DragScroll – позволяет зажав в редакторе кода правую кнопку мыши прокручивать код.&lt;br /&gt;   * Profiler, Devpak installer, HexEditor и д.р.&lt;br /&gt; + Code::Blocks достаточно легко можно собрать из исходников. Это может понадобится если установить плагин от сторонних разработчиков (Например: плагин для поддержки Svn или разработка на Python).&lt;br /&gt; + Постоянное развитие проекта, регулярно появляются новые фичи. Ночные сборки под  Windows (Nights Builds) c последними исправлениями ошибок и новыми возможностями выходят регулярно не реже раза в месяц, а иногда и каждый день. :)&lt;br /&gt;&lt;br /&gt;Неплохо для Проекта развивающегося на голом энтузиазме? :)&lt;br /&gt;&lt;br /&gt;В Code::Blocks достаточно комфортно можно изучать чужие исходники, активно используя функцию поиска упоминаний выделенного класса или просто текста.&lt;br /&gt;Ночная сборка занимает около 7 мегабайт в архиве, но для нее необходимо устанавливать MinGW отдельно (плюс 19 мегабайт). &lt;br /&gt;В распакованном виде Code::Blocks и MinGW занимают около 100 мегабайт.&lt;br /&gt;Можно смело ставить на нетбук. :)&lt;br /&gt;&lt;br /&gt;В следующем посте постараюсь рассказать об установке и настройке ночных сборок под Windows (Nights Builds).&lt;br /&gt;&lt;br /&gt;Интересующимся другими бесплатными средами кроссплатформенной разработки на С++ рекомендую посмотреть:&lt;br /&gt;&lt;a href="http://www.qtsoftware.com/products/developer-tools"&gt;Qt Creator&lt;/a&gt; - Хорошая среда для разработки на Qt (написано на C++)&lt;br /&gt;&lt;a href="http://www.eclipse.org/cdt/"&gt;Eclipse C/C++ Development Tooling - CDT&lt;/a&gt; - Среда на базе Eclipse (написано на Java).&lt;br /&gt;&lt;a href="http://www.netbeans.org/"&gt;NetBeans&lt;/a&gt; - Среда в основном для Java но имеется поддержка C++ (написано на Java)/&lt;br /&gt;&lt;br /&gt;Что еще посмотреть:&lt;br /&gt;&lt;a href="http://www.codeblocks.org/downloads"&gt;http://www.codeblocks.org/downloads&lt;/a&gt; – страница загрузки&lt;br /&gt;&lt;a href="http://ru.wikipedia.org/wiki/Code::Blocks"&gt;http://ru.wikipedia.org/wiki/Code::Blocks&lt;/a&gt;&lt;br /&gt;&lt;a href="http://alenacpp.blogspot.com/2005/10/codeblocks-studio.html"&gt;http://alenacpp.blogspot.com/2005/10/codeblocks-studio.html&lt;/a&gt;&lt;br /&gt;&lt;a href="http://wxwidgets.info/tag/codeblocks/"&gt;http://wxwidgets.info/tag/codeblocks/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6693166578228563876-6527760424035346003?l=breeze-cosmodrome.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://breeze-cosmodrome.blogspot.com/feeds/6527760424035346003/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://breeze-cosmodrome.blogspot.com/2009/06/codeblocks.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6693166578228563876/posts/default/6527760424035346003'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6693166578228563876/posts/default/6527760424035346003'/><link rel='alternate' type='text/html' href='http://breeze-cosmodrome.blogspot.com/2009/06/codeblocks.html' title='Cреда разработки Code::Blocks'/><author><name>Breeze</name><uri>http://www.blogger.com/profile/05690030585062180386</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6693166578228563876.post-592202384736070079</id><published>2009-06-16T10:27:00.000-07:00</published><updated>2009-06-16T10:37:09.768-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ниочем'/><title type='text'>Проверка связи</title><content type='html'>Доброго времени суток!&lt;br /&gt;Это мой первый пост в моем первом блоге. :)&lt;br /&gt;Блог будет посвящен различным интересующим меня штукам в основном из области прогаммирования и прочего IT..&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6693166578228563876-592202384736070079?l=breeze-cosmodrome.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://breeze-cosmodrome.blogspot.com/feeds/592202384736070079/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://breeze-cosmodrome.blogspot.com/2009/06/blog-post.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6693166578228563876/posts/default/592202384736070079'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6693166578228563876/posts/default/592202384736070079'/><link rel='alternate' type='text/html' href='http://breeze-cosmodrome.blogspot.com/2009/06/blog-post.html' title='Проверка связи'/><author><name>Breeze</name><uri>http://www.blogger.com/profile/05690030585062180386</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
