<?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-6470399064206765359</id><updated>2012-02-01T17:22:16.605+04:00</updated><category term='Adobe'/><category term='Алгоритмы'/><category term='debug'/><category term='математика'/><category term='FlashDevelop'/><category term='crossdomain.xml'/><category term='Графы'/><category term='air'/><category term='swc'/><category term='интервью'/><category term='bug'/><category term='afpug'/><category term='as3'/><category term='геометрия'/><category term='firebug'/><category term='начинающим'/><category term='Flash IDE'/><category term='SVG'/><category term='fireflash'/><category term='Apple'/><category term='как?'/><category term='help'/><category term='Установка'/><category term='JSFL'/><category term='Flash CS5'/><category term='Отсебятина'/><category term='firefox'/><category term='Security Policy'/><category term='Flash'/><category term='iPhone'/><category term='flex 4'/><category term='flash player'/><category term='labs'/><category term='ASDoc'/><category term='mp3'/><category term='microphone'/><category term='mindmap'/><category term='as3-project'/><category term='flash buider'/><category term='json'/><title type='text'>AS3Coding</title><subtitle type='html'>Блог от &lt;a href="http://as3coder.blogspot.com/2009/09/blog-post.html"&gt;AS3Coder&lt;/a&gt;'a о Flash, Flex, AIR, FlashDevelop, AS2, AS3, MXML, JSFL...</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://as3coder.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6470399064206765359/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://as3coder.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>AS3Coder</name><uri>http://www.blogger.com/profile/14877548685763682250</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_S7Dbp6MOKn8/S3ZqfEQ54vI/AAAAAAAAAMI/j2FNwRKPohE/S220/129018458834145924.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>53</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6470399064206765359.post-4509318701346911216</id><published>2011-12-02T16:29:00.001+04:00</published><updated>2011-12-07T21:29:18.667+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='as3'/><category scheme='http://www.blogger.com/atom/ns#' term='начинающим'/><category scheme='http://www.blogger.com/atom/ns#' term='mp3'/><category scheme='http://www.blogger.com/atom/ns#' term='microphone'/><title type='text'>Сохранение звука с микрофона на ActionScript 3.0</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;То, что недавно казалось фантастикой, сегодня уже реальность. Начиная с версии &lt;b&gt;FlashPlayer&lt;/b&gt;'a &lt;b&gt;10.1&lt;/b&gt; у класса &lt;a href="http://help.adobe.com/ru_RU/FlashPlatform/reference/actionscript/3/flash/media/Microphone.html"&gt;Microphone&lt;/a&gt; появилось событие &lt;a href="http://help.adobe.com/ru_RU/FlashPlatform/reference/actionscript/3/flash/media/Microphone.html#event:sampleData"&gt;sampleData&lt;/a&gt;.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;SampleDataEvent&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Это &lt;a href="http://help.adobe.com/ru_RU/FlashPlatform/reference/actionscript/3/flash/events/SampleDataEvent.html"&gt;событие&lt;/a&gt; отправляется когда в буфере микрофона появляются аудио-данные. Событие имеет свойство &lt;a href="http://help.adobe.com/ru_RU/FlashPlatform/reference/actionscript/3/flash/events/SampleDataEvent.html#data"&gt;data&lt;/a&gt;, которое содержит образцы записанных с микрофона данных.&amp;nbsp;Естественно данные приходят в сыром формате. И проиграть их вне &lt;b&gt;FlashPlayer&lt;/b&gt;'a не получиться.&amp;nbsp;Поэтому их необходимо декодировать, предварительно собрав необходимое&amp;nbsp;количество&amp;nbsp;в бинарный массив &lt;a href="http://help.adobe.com/ru_RU/FlashPlatform/reference/actionscript/3/flash/utils/ByteArray.html"&gt;ByteArray&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;pre class="code" style="-webkit-text-size-adjust: none; background-color: white; border-bottom-color: rgb(179, 179, 179); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(179, 179, 179); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(179, 179, 179); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(179, 179, 179); border-top-style: solid; border-top-width: 1px; clear: both; font-family: monospace, Courier !important; font-size: 12px; margin-top: 6px; overflow-x: auto; overflow-y: auto; padding-bottom: 8px; padding-left: 20px; padding-right: 8px; padding-top: 8px;"&gt;&lt;span class="comment" style="color: grey; cursor: text !important; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;//&lt;/span&gt;&lt;br /&gt;&lt;span class="comment" style="color: grey; cursor: text !important; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;// Объявляем бинарный массив для хранения полученных с микрофона аудио-данных&lt;/span&gt;&lt;br /&gt;&lt;span class="keyword" style="color: blue;"&gt;var&lt;/span&gt; _samples_arr:ByteArray = &lt;span class="keyword" style="color: blue;"&gt;new&lt;/span&gt; ByteArray();;&lt;br /&gt;&lt;span class="comment" style="color: grey; cursor: text !important; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;//&lt;/span&gt;&lt;br /&gt;&lt;span class="comment" style="color: grey; cursor: text !important; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;// Получаем экзмпляр микрофона&lt;/span&gt;&lt;br /&gt;&lt;span class="keyword" style="color: blue;"&gt;var&lt;/span&gt; _microphone:Microphone = Microphone.getMicrophone(-&lt;span class="number" style="color: green;"&gt;1&lt;/span&gt;);&lt;br /&gt;&lt;span class="comment" style="color: grey; cursor: text !important; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;//&lt;/span&gt;&lt;br /&gt;&lt;span class="comment" style="color: grey; cursor: text !important; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;// Вешаем обработчик события &lt;/span&gt;&lt;br /&gt;_microphone.addEventListener(SampleDataEvent.SAMPLE_DATA, onMicrophoneSampleData, &lt;span class="keyword" style="color: blue;"&gt;false&lt;/span&gt;, &lt;span class="number" style="color: green;"&gt;0&lt;/span&gt;, &lt;span class="keyword" style="color: blue;"&gt;true&lt;/span&gt;);&lt;br /&gt;&lt;span class="comment" style="color: grey; cursor: text !important; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;//&lt;/span&gt;&lt;br /&gt;&lt;span class="comment" style="color: grey; cursor: text !important; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;// Обработчик обновления данных в микрофоне&lt;/span&gt;&lt;br /&gt;function onMicrophoneSampleData (e:SampleDataEvent):&lt;span class="keyword" style="color: blue;"&gt;void&lt;/span&gt;&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;span class="comment" style="color: grey; cursor: text !important; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;//&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;span class="comment" style="color: grey; cursor: text !important; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;// Добавляем полученные данные в биннарный массив&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;_samples_arr.writeBytes(e.data);&lt;br /&gt;}&lt;/pre&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Для начала выполним преобразование в .&lt;a href="http://ru.wikipedia.org/wiki/WAV"&gt;wav-формат&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;WAVWriter&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Специально для этого в &lt;a href="http://www.adobe.com/"&gt;Adobe&lt;/a&gt; написали класс &lt;a href="http://code.google.com/p/ghostcat/source/browse/trunk/ghostcatfp10/src/ghostcat/media/WAVWriter.as?r=424"&gt;WAVWriter.as&lt;/a&gt;. Останавливаться на нём не будем, потому что он довольно простой в использовании:&lt;/div&gt;&lt;div&gt;&lt;div style="-webkit-text-size-adjust: none; background-color: white; box-sizing: border-box; font-family: Tahoma, Helvetica, sans-serif; font-size: 12px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 5px; padding-left: 5px; padding-right: 5px; padding-top: 5px;"&gt;&lt;pre class="code" style="background-color: #fbf9f5; border-bottom-color: rgb(179, 179, 179); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(179, 179, 179); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(179, 179, 179); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(179, 179, 179); border-top-style: solid; border-top-width: 1px; clear: both; font-family: monospace, Courier !important; margin-top: 6px; overflow-x: auto; overflow-y: auto; padding-bottom: 8px; padding-left: 20px; padding-right: 8px; padding-top: 8px;"&gt;&lt;span class="comment" style="color: grey; cursor: text !important; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;//&lt;/span&gt;&lt;br /&gt;&lt;span class="comment" style="color: grey; cursor: text !important; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;// Объявляем бинарный массив для данных .wav-файла&lt;/span&gt;&lt;br /&gt;&lt;span class="keyword" style="color: blue;"&gt;var&lt;/span&gt; wav_file:ByteArray = &lt;span class="keyword" style="color: blue;"&gt;new&lt;/span&gt; ByteArray();&lt;br /&gt;&lt;span class="comment" style="color: grey; cursor: text !important; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;//&lt;/span&gt;&lt;br /&gt;&lt;span class="comment" style="color: grey; cursor: text !important; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;// Объявляем и настроиваем энкондер&lt;/span&gt;&lt;br /&gt;&lt;span class="keyword" style="color: blue;"&gt;var&lt;/span&gt; writer:WAVWriter = &lt;span class="keyword" style="color: blue;"&gt;new&lt;/span&gt; WAVWriter();&lt;br /&gt;writer.numOfChannels = &lt;span class="number" style="color: green;"&gt;1&lt;/span&gt;;&lt;br /&gt;writer.sampleBitRate = &lt;span class="number" style="color: green;"&gt;16&lt;/span&gt;;&lt;br /&gt;writer.samplingRate = &lt;span class="number" style="color: green;"&gt;44100&lt;/span&gt;;&lt;br /&gt;&lt;span class="comment" style="color: grey; cursor: text !important; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;//&lt;/span&gt;&lt;br /&gt;&lt;span class="comment" style="color: grey; cursor: text !important; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;// Декодируем данные с микрофона в wav-формат&lt;/span&gt;&lt;br /&gt;writer.processSamples(wav_file, _samples_arr, &lt;span class="number" style="color: green;"&gt;44100&lt;/span&gt;, &lt;span class="number" style="color: green;"&gt;1&lt;/span&gt;);&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Теперь, фактически получив бинарные данные аудио-файла в .&lt;b&gt;wav&lt;/b&gt;-формате, казалось бы мы выполнили задачу и остается только сохранить их в файл.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Но мы пойдем дальше. И рассмотрим преобразование наших данных в .&lt;b&gt;mp3&lt;/b&gt;-формат. Да, такое уже возможно и реализовано. Говорим спасибо&amp;nbsp;&lt;a href="http://kikko.fr/home"&gt;Cyril Diagn&lt;/a&gt;&amp;nbsp;за его работу в этом направлении, а именно проект&amp;nbsp;&lt;a href="http://code.google.com/p/flash-kikko/"&gt;Shine MP3 Encoder on Alchemy&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Shine MP3 Encoder on Alchemy&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Это .swc-библиотека с классом&amp;nbsp;&lt;b&gt;ShineMP3Encoder&lt;/b&gt; для преобразования данных из .&lt;b&gt;wav&lt;/b&gt;-формата в .&lt;b&gt;mp3&lt;/b&gt;. Код портирован с помощью &lt;a href="http://www.google.ru/url?sa=t&amp;amp;rct=j&amp;amp;q=alchemy&amp;amp;source=web&amp;amp;cd=4&amp;amp;ved=0CFgQFjAD&amp;amp;url=http%3A%2F%2Flabs.adobe.com%2Ftechnologies%2Falchemy%2F&amp;amp;ei=AXLeTt-CKcuM4gSzo5TeBg&amp;amp;usg=AFQjCNElkCfGmAo3_dFG9qWcp0XLMw0rjw&amp;amp;sig2=R5wN3gttQe2FcxM-ARPreg"&gt;Alchemy&lt;/a&gt;&amp;nbsp;из энкодера написанного на С, автором которого является  &lt;a href="http://gabriel.mp3-tech.org/"&gt;Gabriel Bouvigne&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Пример использования:&lt;/div&gt;&lt;div&gt;&lt;div style="-webkit-text-size-adjust: none; background-color: white; box-sizing: border-box; font-family: Tahoma, Helvetica, sans-serif; font-size: 12px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 5px; padding-left: 5px; padding-right: 5px; padding-top: 5px;"&gt;&lt;pre class="code" style="background-color: #fbf9f5; border-bottom-color: rgb(179, 179, 179); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(179, 179, 179); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(179, 179, 179); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(179, 179, 179); border-top-style: solid; border-top-width: 1px; clear: both; font-family: monospace, Courier !important; margin-top: 6px; overflow-x: auto; overflow-y: auto; padding-bottom: 8px; padding-left: 20px; padding-right: 8px; padding-top: 8px;"&gt;&lt;span class="comment" style="color: grey; cursor: text !important; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;//&lt;/span&gt;&lt;br /&gt;&lt;span class="comment" style="color: grey; cursor: text !important; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;// Обнуляем позицию в массиве .wav-файла&lt;/span&gt;&lt;br /&gt;wav_file.position = &lt;span class="number" style="color: green;"&gt;0&lt;/span&gt;;&lt;br /&gt;&lt;span class="comment" style="color: grey; cursor: text !important; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;//&lt;/span&gt;&lt;br /&gt;&lt;span class="comment" style="color: grey; cursor: text !important; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;// Объявляем mp3-энкодер&lt;/span&gt;&lt;br /&gt;&lt;span class="keyword" style="color: blue;"&gt;var&lt;/span&gt; _mp3_encoder:ShineMP3Encoder = &lt;span class="keyword" style="color: blue;"&gt;new&lt;/span&gt; ShineMP3Encoder(wav_file);&lt;br /&gt;&lt;span class="comment" style="color: grey; cursor: text !important; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;//&lt;/span&gt;&lt;br /&gt;&lt;span class="comment" style="color: grey; cursor: text !important; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;// Вешаем обработчики событий&lt;/span&gt;&lt;br /&gt;_mp3_encoder.addEventListener(Event.COMPLETE, onMP3EncoderComplete, &lt;span class="keyword" style="color: blue;"&gt;false&lt;/span&gt;, &lt;span class="number" style="color: green;"&gt;0&lt;/span&gt;, &lt;span class="keyword" style="color: blue;"&gt;true&lt;/span&gt;);&lt;br /&gt;_mp3_encoder.addEventListener(ProgressEvent.PROGRESS, onMP3EncoderProcess, &lt;span class="keyword" style="color: blue;"&gt;false&lt;/span&gt;, &lt;span class="number" style="color: green;"&gt;0&lt;/span&gt;, &lt;span class="keyword" style="color: blue;"&gt;true&lt;/span&gt;);&lt;br /&gt;&lt;span class="comment" style="color: grey; cursor: text !important; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;//&lt;/span&gt;&lt;br /&gt;&lt;span class="comment" style="color: grey; cursor: text !important; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;// Начинаем кодирование&lt;/span&gt;&lt;br /&gt;_mp3_encoder.start();&lt;br /&gt;&lt;span class="comment" style="color: grey; cursor: text !important; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;//&lt;/span&gt;&lt;br /&gt;&lt;span class="comment" style="color: grey; cursor: text !important; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;// Обработчик процесса кодирования&lt;/span&gt;&lt;br /&gt;function onMP3EncoderProcess (e:ProgressEvent):&lt;span class="keyword" style="color: blue;"&gt;void&lt;/span&gt;&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;trace(&lt;span class="string" style="color: teal;"&gt;"Encoding to mp3 ... "&lt;/span&gt; + Math.ceil(e.bytesLoaded * &lt;span class="number" style="color: green;"&gt;100&lt;/span&gt; / e.bytesTotal) + &lt;span class="string" style="color: teal;"&gt;"%"&lt;/span&gt;);&lt;br /&gt;}&lt;br /&gt;&lt;span class="comment" style="color: grey; cursor: text !important; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;//&lt;/span&gt;&lt;br /&gt;&lt;span class="comment" style="color: grey; cursor: text !important; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;// Обработчик завершения кодирования&lt;/span&gt;&lt;br /&gt;function onMP3EncoderComplete (e:Event):&lt;span class="keyword" style="color: blue;"&gt;void&lt;/span&gt;&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;trace(&lt;span class="string" style="color: teal;"&gt;"Encoding to mp3 complete!"&lt;/span&gt;)&lt;br /&gt;}&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Теперь, после преобразования мы можем сохранить .&lt;b&gt;mp3&lt;/b&gt;-файл штатными средствами энкодера. Для этого имеется метод &lt;b&gt;saveAs()&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="-webkit-text-size-adjust: none; background-color: white; box-sizing: border-box; font-family: Tahoma, Helvetica, sans-serif; font-size: 12px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 5px; padding-left: 5px; padding-right: 5px; padding-top: 5px;"&gt;&lt;pre class="code" style="background-color: #fbf9f5; border-bottom-color: rgb(179, 179, 179); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(179, 179, 179); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(179, 179, 179); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(179, 179, 179); border-top-style: solid; border-top-width: 1px; clear: both; font-family: monospace, Courier !important; margin-top: 6px; overflow-x: auto; overflow-y: auto; padding-bottom: 8px; padding-left: 20px; padding-right: 8px; padding-top: 8px;"&gt;_mp3_encoder.saveAs(&lt;span class="string" style="color: teal;"&gt;'record.mp3'&lt;/span&gt;);&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Если же есть необходимость отправить полученный .&lt;b&gt;mp3&lt;/b&gt;-файл на сервер, мы можем сделать это самостоятельно, получив его данные во свойстве &lt;b&gt;mp3Data&lt;/b&gt;.&lt;/div&gt;&lt;div&gt;&lt;div style="-webkit-text-size-adjust: none; background-color: white; box-sizing: border-box; font-family: Tahoma, Helvetica, sans-serif; font-size: 12px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 5px; padding-left: 5px; padding-right: 5px; padding-top: 5px;"&gt;&lt;pre class="code" style="background-color: #fbf9f5; border-bottom-color: rgb(179, 179, 179); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(179, 179, 179); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(179, 179, 179); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(179, 179, 179); border-top-style: solid; border-top-width: 1px; clear: both; font-family: monospace, Courier !important; margin-top: 6px; overflow-x: auto; overflow-y: auto; padding-bottom: 8px; padding-left: 20px; padding-right: 8px; padding-top: 8px;"&gt;var mp3_file:ByteArray = _mp3_encoder.mp3Data;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Ну и как обычно, простейший пример всего вышеописанного:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;object align="middle" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=10,1,0,0" height="140" id="main" width="300"&gt; &lt;param name="allowScriptAccess" value="sameDomain" /&gt;&lt;param name="allowFullScreen" value="false" /&gt;&lt;param name="movie" value="https://sites.google.com/site/as3coder/files/MicrophoneSaver.swf" /&gt;&lt;param name="quality" value="high" /&gt;&lt;param name="bgcolor" value="#F0F0F0" /&gt;&lt;embed src="https://sites.google.com/site/as3coder/files/MicrophoneSaver.swf" quality="high" bgcolor="#F0F0F0" width="300" height="140" name="main" align="middle" allowScriptAccess="sameDomain" allowFullScreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Ссылки по теме:&lt;/span&gt;&lt;/div&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;&lt;a href="http://help.adobe.com/ru_RU/as3/dev/WS5b3ccc516d4fbf351e63e3d118a9b90204-7d1d.html#WS184831AF-B842-4d52-BFB9-D7601F4A9E21"&gt;Захват аудиоданных с микрофона&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://code.google.com/p/flash-kikko/"&gt;Shine MP3 Encoder on Alchemy&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.riagora.com/2010/08/air-android-and-the-microphone/"&gt;AIR, Android and the microphone&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6470399064206765359-4509318701346911216?l=as3coder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://as3coder.blogspot.com/feeds/4509318701346911216/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://as3coder.blogspot.com/2011/12/actionscript-30.html#comment-form' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6470399064206765359/posts/default/4509318701346911216'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6470399064206765359/posts/default/4509318701346911216'/><link rel='alternate' type='text/html' href='http://as3coder.blogspot.com/2011/12/actionscript-30.html' title='Сохранение звука с микрофона на ActionScript 3.0'/><author><name>AS3Coder</name><uri>http://www.blogger.com/profile/14877548685763682250</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_S7Dbp6MOKn8/S3ZqfEQ54vI/AAAAAAAAAMI/j2FNwRKPohE/S220/129018458834145924.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6470399064206765359.post-2429432581341228202</id><published>2011-10-25T23:12:00.001+04:00</published><updated>2011-11-22T22:15:43.791+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='flash player'/><category scheme='http://www.blogger.com/atom/ns#' term='Security Policy'/><category scheme='http://www.blogger.com/atom/ns#' term='начинающим'/><title type='text'>Доверенные .swf-файлы</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;С недавнего времени&amp;nbsp;в контекстном меню &lt;b&gt;FlashPlayer&lt;/b&gt;'a появился новый пункт "Глобальные настройки". А именно с версии 10.3.&lt;br /&gt;&lt;br /&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-bTljFJxWKCg/TsvefrkKLYI/AAAAAAAAAdI/cZit9arcQuo/s1600/Image+1.png" /&gt;&lt;br /&gt;&lt;br /&gt;Если с "Хранилищем", "Камерой и микрофоном" и "Воспроизведением" всё понятно (они итак были доступны в пункте "Параметры..."), то вот во вкладке "&lt;b&gt;Дополнительно&lt;/b&gt;" появились доколе&amp;nbsp;неизвестные&amp;nbsp;настройки.&lt;br /&gt;&lt;br /&gt;Подробнее я хочу остановить на "&lt;b&gt;Настройках доверенной папки&lt;/b&gt;..."&lt;br /&gt;&lt;br /&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-a9-1KhA66v4/Tsvjv5tfHkI/AAAAAAAAAdQ/s48IRTRyDPI/s1600/Image+2.png" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Что за доверенная папка?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;На самом деле слово "папки" немного вводит в заблуждение. Естественно здесь указываются .&lt;b&gt;swf&lt;/b&gt;-файлы, которым пользователь явно доверяет. А именно:&lt;br /&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;домен, с которого загружаются .&lt;b&gt;swf&lt;/b&gt;-файлы,&lt;/li&gt;&lt;li&gt;путь к локальному .&lt;b&gt;swf&lt;/b&gt;-файлу на компьютере пользователя,&lt;/li&gt;&lt;li&gt;путь к локальному каталогу, в котором содержаться .&lt;b&gt;swf&lt;/b&gt;-файлы&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;И что же мы доверяем (разрешаем) указанным файлам?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;С версии 10.1 локально запущенным .&lt;b&gt;swf&lt;/b&gt;-файлам запрещается загружать данные из сети и из локального диска пользователя. Так вот указав, что этот .&lt;b&gt;swf&lt;/b&gt;-доверенный ему разрешается делать эти запросы.&lt;br /&gt;&lt;br /&gt;Сделано это для того, чтобы на этапе разработки было не обязательным постоянно выкладывать приложение на сервер.&lt;br /&gt;&lt;br /&gt;Для чего указывается домен и что мы ему доверяем, я так и не разобрался. В &lt;a href="http://help.adobe.com/ru_RU/FlashPlayer/LSM/WS6aa5ec234ff3f285139dc56112e3786b68c-7ff0.html#WS6aa5ec234ff3f285139dc56112e3786b68c-7feb"&gt;cправке&lt;/a&gt; тоже ничего по поводу доменов. Может разрешаем локальным .&lt;b&gt;swf&lt;/b&gt;-файлам загружать данные с этого домена? Не знаю. Не проверял. Может быть вы знаете?&lt;br /&gt;&lt;br /&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-e-Dzn7JnOgA/Tsvj6Z6lfrI/AAAAAAAAAdY/S67dkqI4kcg/s1600/Image+3.png" /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;К чему я завел этот разговор?&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Недавно пришлось вернуться к одному старому проекту. Проект представляет собой простую презентацию с видео и небольшим каталогом. И вот тут, я столкнулся с тем, что главный .&lt;b&gt;swf&lt;/b&gt;-файл зашитый в .exe-файл &lt;b&gt;FlashPlayer&lt;/b&gt;'a не может подгрузить данные с каталога, который лежит рядом. Получаю сообщение с ошибкой о нарушении политики безопасности. Удивление конечно было огромным, когда я узнал, что в новых версиях плеера этого делать нельзя.&lt;br /&gt;&lt;br /&gt;Чтож? Пришлось разбираться...&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Как лечиться?&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;Ну во-первых, указать доверенный .&lt;b&gt;swf&lt;/b&gt;-файл может сам пользователь в соотвествующем окне, о котором я говорил выше.&lt;br /&gt;&lt;br /&gt;Во-вторых, можно сделать это за пользователя (естественно с помощью каких-то оберток или стартеров). Для этого в системе (в качестве примера возьму Windows 7, об остальных операционных системах информацию можно найти в &lt;a href="http://help.adobe.com/ru_RU/ActionScript/3.0_ProgrammingAS3/WS5b3ccc516d4fbf351e63e3d118a9b90204-7e3f.html#WS5b3ccc516d4fbf351e63e3d118a9b90204-7c8d"&gt;справке&lt;/a&gt;) имеются каталоги, в которых&amp;nbsp;хранятся&amp;nbsp;.&lt;b&gt;cfg&lt;/b&gt;-файлы конфигурации безопасности &lt;b&gt;FlashPlayer&lt;/b&gt;'a. Таких каталогов два:&lt;br /&gt;&lt;br /&gt;1. Для всех учетных записей системы.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;C:\WINDOWS\system32\Macromed\Flash\FlashPlayerTrust&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;2. Для конкретного пользователя.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;C:\Users\JohnD\AppData\Roaming\Macromedia\Flash Player\#Security\FlashPlayerTrust&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;В эти каталоги можно добавлять свои .&lt;b&gt;cfg&lt;/b&gt;-файлы с любым именем. Простой текстовый файл, где каждая строчка - это путь до доверенных .&lt;b&gt;swf&lt;/b&gt;-файла или папки.&lt;br /&gt;&lt;br /&gt;Все современные среды разработки создают свои .&lt;b&gt;cfg&lt;/b&gt;-файлы и при создании проекта дописывают в него в качестве доверенной папки папку нового проекта. Именно поэтому многие не заметили этого нововведения. Например &lt;a href="http://www.google.ru/url?sa=t&amp;amp;rct=j&amp;amp;q=flashdevelop&amp;amp;source=web&amp;amp;cd=1&amp;amp;ved=0CC0QFjAA&amp;amp;url=http%3A%2F%2Fwww.flashdevelop.org%2F&amp;amp;ei=g9jLTonDLKOJ4gT5pNkX&amp;amp;usg=AFQjCNHKKRsR8VDMmQ-zaJcSCuwLTK6LgA&amp;amp;sig2=mLpunex6WtMluih7WxHmqg"&gt;FlashDevelop&lt;/a&gt; создает вот этот файл:&lt;br /&gt;&lt;br /&gt;&lt;i&gt;C:\Users\AS3Coder\AppData\Roaming\Macromedia\Flash Player\#Security\FlashPlayerTrust\FlashDevelop.cfg&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;А для профилактики подобных ситуаций автор кода может узнать каким образом запущен .&lt;b&gt;swf&lt;/b&gt;-файл. Для этого существует свойство&amp;nbsp;&lt;a href="http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/system/Security.html#sandboxType"&gt;Security.sandboxType&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Итого&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.adobe.com/"&gt;Adobe&lt;/a&gt; окончательно уводит&lt;b&gt; FlashPlayer&lt;/b&gt; с&amp;nbsp;локального использования в веб. Не&amp;nbsp;пишите&amp;nbsp;больше локальных приложений для него, без оберток, таких как &lt;a href="http://www.multidmedia.com/software/zinc/"&gt;Zinc&lt;/a&gt; или &lt;a href="http://www.google.ru/url?sa=t&amp;amp;rct=j&amp;amp;q=air&amp;amp;source=web&amp;amp;cd=1&amp;amp;ved=0CDIQFjAA&amp;amp;url=http%3A%2F%2Fwww.adobe.com%2Fru%2Fproducts%2Fair.html&amp;amp;ei=ENvLToqmDaX44QSlrtE4&amp;amp;usg=AFQjCNE1H_0Q4bZPkt_1Fde1Pa_cLvJYkQ&amp;amp;sig2=vIDWAyYU5VqhbYSK1hzyDg"&gt;AIR&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Ссылки по теме:&lt;/span&gt;&lt;br /&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;&lt;a href="http://www.macromedia.com/support/documentation/ru/flashplayer/help/settings_manager.html"&gt;Онлайн менеджер настроек&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://help.adobe.com/ru_RU/FlashPlayer/LSM/WS6aa5ec234ff3f285139dc56112e3786b68c-8000.html"&gt;Справка по менеджеру настроек&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.adobe.com/devnet/flashplayer/security.html"&gt;Список всех обновлений политики безопасности FlashPlayer&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://help.adobe.com/ru_RU/ActionScript/3.0_ProgrammingAS3/WS5b3ccc516d4fbf351e63e3d118a9b90204-7d23.html"&gt;Безопасность проигрывателя Flash Player&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6470399064206765359-2429432581341228202?l=as3coder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://as3coder.blogspot.com/feeds/2429432581341228202/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://as3coder.blogspot.com/2011/10/swf.html#comment-form' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6470399064206765359/posts/default/2429432581341228202'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6470399064206765359/posts/default/2429432581341228202'/><link rel='alternate' type='text/html' href='http://as3coder.blogspot.com/2011/10/swf.html' title='Доверенные .swf-файлы'/><author><name>AS3Coder</name><uri>http://www.blogger.com/profile/14877548685763682250</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_S7Dbp6MOKn8/S3ZqfEQ54vI/AAAAAAAAAMI/j2FNwRKPohE/S220/129018458834145924.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-bTljFJxWKCg/TsvefrkKLYI/AAAAAAAAAdI/cZit9arcQuo/s72-c/Image+1.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6470399064206765359.post-186625138995922507</id><published>2011-01-25T13:05:00.002+03:00</published><updated>2011-01-28T13:36:50.841+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='as3'/><category scheme='http://www.blogger.com/atom/ns#' term='Security Policy'/><category scheme='http://www.blogger.com/atom/ns#' term='начинающим'/><category scheme='http://www.blogger.com/atom/ns#' term='crossdomain.xml'/><category scheme='http://www.blogger.com/atom/ns#' term='Flash'/><title type='text'>Политика безопасности во Flash Player. Наиболее частные столкновения.</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Часто вы сталкивались с ситуацией, когда ваш код не работает по непонятным причинам? Вам кажется, что всё уже проверено сотни раз и вы с уверенностью говорите себе, что здесь нет ошибок, и уже готовы биться головой о клавиатуру :) Спешу вас утешить, скорее всего ошибка не в коде.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;В чем же дело?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;А дело может быть в том, что вы нарушаете политику безопасности &lt;b&gt;Flash Player&lt;/b&gt;, сами того не зная. Иногда &lt;b&gt;Flash Player&lt;/b&gt; просто промолчит об этом :)&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Как это предупредить?&lt;/span&gt;&lt;br /&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;Если что-то не работает, а по логике должно - идите в &lt;a href="http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/index.html"&gt;справку&lt;/a&gt;. Там кроются все ответы на ваши вопросы. Вообще справка должна быть&amp;nbsp;неотъемлемым инструментом&amp;nbsp;разработчика.&lt;/div&gt;&lt;br /&gt;В этом посте я хочу рассказать о наиболее частых нарушениях политики безопасности, с которыми мы сталкиваемся.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Загрузка контента с доменов отличных, о того с которого запущена страница с .swf-файлом&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;*.load();&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Практически на весь загружаемый контент с других доменом и даже поддоменов накладываются ограничения на загрузку, отображение или исполнения сценариев (если вы загружаете исполняемый .swf-файл). Например, .swf-файл не выполнит свой сценарий, если вы загрузили его без разрешения.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;BitmapData.draw();&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Метод не отрисует дисплей объект, если в нем есть загруженный контент с другого домена без разрешения. Это касается дочерних элементов класса &lt;a href="http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/index.html"&gt;Loader&lt;/a&gt;, и даже &lt;a href="http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/index.html"&gt;TextField&lt;/a&gt;, если в нем есть картинки&amp;nbsp;вставленные&amp;nbsp;посредством&amp;nbsp;HTML-разметки.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Возможно эти ограничения&amp;nbsp;действуют&amp;nbsp;и в других методах, с которыми я не сталкивался. Так что если, что-то упустил - добавляйте в комментариях.&lt;/blockquote&gt;&lt;br /&gt;&lt;b&gt;Как получить разрешение?&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Домен, с которого вы грузите контент, должен разрешить вам использовать его. Делается это двумя способами в зависимости от типа загружаемого контента.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;1. checkPolicyFile&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Это файл, где перечислены домены, которым разрешено использовать контент. Называться такой файл должен &lt;b&gt;сrossdomain.xml&lt;/b&gt; и лежать в корне сайта. Содержимое должно выглядеть следующим образом:&lt;br /&gt;&lt;br /&gt;&lt;div style="border-bottom-color: rgb(179, 179, 179); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(179, 179, 179); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(179, 179, 179); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(179, 179, 179); border-top-style: solid; border-top-width: 1px; margin-bottom: 5px; margin-left: 5px; margin-right: 5px; margin-top: 5px; padding-bottom: 10px; padding-left: 10px; padding-right: 10px; padding-top: 10px; width: 800px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="background-color: #fbf9f5;"&gt;&amp;lt;?xml version="1.0"?&amp;gt;&lt;br /&gt;&amp;lt;cross-domain-policy&amp;gt;&lt;br /&gt;&amp;lt;allow-access-from domain="&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: yellow;"&gt;yoursite.com&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: #fbf9f5;"&gt;"/&amp;gt;&lt;br /&gt;&amp;lt;/cross-domain-policy&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;Когда .swf-файл, запущенный с вашего домена, пытается выполнить запросы на другой домен, &lt;b&gt;Flash Player&lt;/b&gt; делает автоматически делает запрос на&amp;nbsp;&lt;b&gt;сrossdomain.xml&lt;/b&gt; расположенный на другом домене. Если в нем указано разрешение для вашего домена, то &lt;b&gt;Flash Player&lt;/b&gt; разрешит в полной мере выполнять запросы.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;2.&amp;nbsp;Security.allowDomain() или&amp;nbsp;Security.allowInsecureDomain()&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Этот&amp;nbsp;способ&amp;nbsp;предусмотрен для исполняемых .swf-файлов. Если &lt;b&gt;Flash Player&lt;/b&gt; встретит в сценарии метод&amp;nbsp;&lt;a href="http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/system/Security.html#allowDomain()"&gt;Security.allowDomain()&lt;/a&gt; или&amp;nbsp;&lt;a href="http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/system/Security.html#allowInsecureDomain()"&gt;Security.allowInsecureDomain()&lt;/a&gt;&amp;nbsp;(для https-протокола)&amp;nbsp;с&amp;nbsp;параметром&amp;nbsp;равным&amp;nbsp;доменному имени вашего сайта, то он разрешает&amp;nbsp;исполнение&amp;nbsp;сценариев на вашем сайте.&lt;br /&gt;&lt;br /&gt;&lt;div style="border-bottom-color: rgb(179, 179, 179); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(179, 179, 179); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(179, 179, 179); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(179, 179, 179); border-top-style: solid; border-top-width: 1px; margin-bottom: 5px; margin-left: 5px; margin-right: 5px; margin-top: 5px; padding-bottom: 10px; padding-left: 10px; padding-right: 10px; padding-top: 10px; width: 800px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="background-color: #fbf9f5;"&gt;System.allowDomain("&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: yellow;"&gt;yoursite.com&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: #fbf9f5;"&gt;");&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Взаимодействие&amp;nbsp;с клиентским окружением&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Еще одной из частых и самых болезненых, является ситуация когда не выполняются методы никак не связанные с сетью. Болезнь заключается в том, что &lt;b&gt;Flash Player&lt;/b&gt;, просто молчит о нарушениях. Приведу список наиболее частых методов, в которых&amp;nbsp;мы сталкиваемся с этим.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;b&gt;FileReference.browse();&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Метод не выполнится, если внутри .swf-файла не было события нажатия клавиши мыши.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;SharedObject.flush();&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Метод не выполнится если размер .swf-файла встроенного на страницу меньше окна с параметрами &lt;b&gt;Flash Player&lt;/b&gt;'a (215 x 128).&lt;br /&gt;&lt;br /&gt;&lt;b&gt;LocalConnection.send();&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Метод не выполнится если вкладка со страницей, на которой запущен .swf-файл, неактивна.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Stage.displayState =&amp;nbsp;StageDisplayState.FULL_SCREEN;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Метод не&amp;nbsp;выполнится, если внутри .swf-файла не было события нажатия мыши.&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;...&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Если вы сталкивались еще с чем-то подобным, пишите в&amp;nbsp;комментарии&amp;nbsp;я дополню этот список.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Доступ к&amp;nbsp;HTML-окружению&amp;nbsp;на странице&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;.swf-файл загруженный с другого домена (даже с разрешением) не имеет доступ к HTML-окружению на вашей странице. Для этого ему нужно разрешение. Только на этот раз, вы выдаете его сами.&lt;br /&gt;&lt;br /&gt;При вставке .swf-файла на страницу необходимо указать параметр &lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;b&gt;AllowScriptAccess&lt;/b&gt; &lt;/span&gt;с&amp;nbsp;соответствующим&amp;nbsp;параметром:&lt;br /&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;always &lt;/span&gt;&lt;/b&gt;- Разрешает доступ всем .swf-файлам&lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;sameDomain &lt;/span&gt;&lt;/b&gt;- Разрешает доступ .swf-файлами, загруженным с того же домена, что и страница&lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;never &lt;/span&gt;&lt;/b&gt;- Запрещает доступ всем .swf-файлам&lt;/li&gt;&lt;/ul&gt;&lt;div style="border-bottom-color: rgb(179, 179, 179); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(179, 179, 179); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(179, 179, 179); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(179, 179, 179); border-top-style: solid; border-top-width: 1px; margin-bottom: 5px; margin-left: 5px; margin-right: 5px; margin-top: 5px; padding-bottom: 10px; padding-left: 10px; padding-right: 10px; padding-top: 10px; width: 800px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="background-color: #fbf9f5;"&gt;&amp;lt;embed &lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: yellow;"&gt;AllowScriptAccess="always"&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: #fbf9f5;"&gt; height="100" src="http://www.foreigndomain.com/example.swf" type="application/x-shockwave-flash" width="100"&amp;gt;&amp;lt;/embed&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;b&gt;Внимание:&lt;/b&gt; Учтите, когда вы открываете доступ к HTML-окружению .swf-файлам с неизвестных вам доменов, вы подвергаете всю безопасность на вашей страницы.&lt;/blockquote&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Дополнительный&amp;nbsp;материал&amp;nbsp;для изучения&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Для более детального ознакомления со всеми правилами безопасности &lt;b&gt;Flash Player&lt;/b&gt;, вы можете заглянуть официальную справку на русском языке в раздел "&lt;a href="http://help.adobe.com/ru_RU/ActionScript/3.0_ProgrammingAS3/WS5b3ccc516d4fbf351e63e3d118a9b90204-7d23.html"&gt;Безопасность проигрывателя Flash Player&lt;/a&gt;".&lt;br /&gt;&lt;br /&gt;Также смотрите &lt;a href="http://learn.adobe.com/wiki/download/attachments/64389123/CrossDomain_PolicyFile_Specification.pdf?version=1"&gt;спецификацию&lt;/a&gt; по файлу &lt;b&gt;crossdomain.xml&lt;/b&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6470399064206765359-186625138995922507?l=as3coder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://as3coder.blogspot.com/feeds/186625138995922507/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://as3coder.blogspot.com/2011/01/flash-player.html#comment-form' title='Комментарии: 4'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6470399064206765359/posts/default/186625138995922507'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6470399064206765359/posts/default/186625138995922507'/><link rel='alternate' type='text/html' href='http://as3coder.blogspot.com/2011/01/flash-player.html' title='Политика безопасности во Flash Player. Наиболее частные столкновения.'/><author><name>AS3Coder</name><uri>http://www.blogger.com/profile/14877548685763682250</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_S7Dbp6MOKn8/S3ZqfEQ54vI/AAAAAAAAAMI/j2FNwRKPohE/S220/129018458834145924.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6470399064206765359.post-2493734524229134771</id><published>2010-11-28T15:44:00.003+03:00</published><updated>2010-11-29T08:40:24.103+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='afpug'/><title type='text'>Поездка в Челябинск на RAFPUG</title><content type='html'>Ровно неделю назад я со своим коллегой Виталием приехали с &lt;b&gt;Челябинска&lt;/b&gt;, куда ездил на очередной &lt;a href="http://iheroes.ru/rafpug/che_november_2010/"&gt;RAFPUG&lt;/a&gt; проводимый компанией &lt;a href="http://iheroes.ru/"&gt;iHeroes&lt;/a&gt;. Написать отчет о поездке сразу не получилось, как всегда было много работы. И сегодня&amp;nbsp;таки&amp;nbsp;появилось&amp;nbsp;несколько свободных минут.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Прямых поездов или самолетов на 19-20 ноября из Казани в Челябинск не оказалось. Решено было ехать на машине. 1000 км туда - 1000 км обратно. Поэтому поездку можно даже назвать маленьким путешествием :)&lt;/blockquote&gt;&lt;br /&gt;Приехали мы в Челябинск с опозданием, минут на 40 и все-таки успели на первый доклад.&lt;br /&gt;&lt;br /&gt;Первым выступал &lt;b&gt;Роман Куликов&lt;/b&gt;, он представлял своё издательство &lt;a href="http://i-jet.ru/"&gt;i-Jet Media&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;img border="0" height="265" src="http://2.bp.blogspot.com/_S7Dbp6MOKn8/TPM5yV5r3CI/AAAAAAAAAY0/HpZiQmX5uqg/s400/IMG_8081.jpg" width="400" /&gt;&lt;br /&gt;&lt;br /&gt;Доклад получился&amp;nbsp;очень&amp;nbsp;насыщенным и интересным. Например было интересно узнать, что:&lt;br /&gt;&lt;div class="MsoNormal"&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Calibri,sans-serif; font-size: 15px; line-height: 17px;"&gt;«&lt;/span&gt;&lt;a href="http://i-jet.ru/otdih/_12"&gt;Счастливый фермер&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: Calibri,sans-serif; font-size: 15px; line-height: 17px;"&gt;»&lt;/span&gt;&amp;nbsp;заработал за 2009 год 20&amp;nbsp;000&amp;nbsp;000 долларов.&lt;/li&gt;&lt;li&gt;Cредняя продолжительность игрового проекта в социальных сетях - это около 6 месяцев.&lt;/li&gt;&lt;li&gt;Азиаты - одни из самых платежеспособных наций.&lt;/li&gt;&lt;li&gt;И многое другое...&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;Следующим выступал &lt;b&gt;Илья Алябушев&lt;/b&gt; из компании &lt;a href="http://flexis.ru/"&gt;Flexis&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;img border="0" height="266" src="http://1.bp.blogspot.com/_S7Dbp6MOKn8/TPM6Pin744I/AAAAAAAAAY4/0djbWbf7LEk/s400/IMG_8162.jpg" width="400" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Его доклад был посвящен методу организации работы с помощью технологии &lt;a href="http://ru.wikipedia.org/wiki/Scrum"&gt;Scrum&lt;/a&gt;. Доклад получился больше технический, с кучей новых терминов и непонятных слов :) Тем не менее у Ильи получилось в общих чертах истолковать идею &lt;b&gt;Scrum&lt;/b&gt;, за что ему огромное спасибо. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;Следующей темой собрания была «&lt;b&gt;Инди-разработка&lt;/b&gt;». Ею с нами поделился &lt;b&gt;Алексей Давыдов&lt;/b&gt; из компании &lt;a href="http://flazm.com/"&gt;Flazm&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;img border="0" height="266" src="http://3.bp.blogspot.com/_S7Dbp6MOKn8/TPM64qcTMEI/AAAAAAAAAY8/MwyyP4uSVI4/s400/IMG_8170.jpg" width="400" /&gt;&lt;br /&gt;&lt;br /&gt;Он повествовал, что же это такое&amp;nbsp;«&lt;b&gt;инди&lt;/b&gt;». Немного запутал конечно, но суть ясна: "Инди-разработчик - это тот, который работает только на себя"&amp;nbsp;:)&amp;nbsp;Рассказал о плюсах и минусах этого направления. В общем было что послушать.&lt;br /&gt;&lt;br /&gt;Следующей вышла &lt;b&gt;Анна Сенина&lt;/b&gt;, организатор встречи и представитель компании &lt;a href="http://iheroes.ru/"&gt;iHeroes&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;img border="0" height="266" src="http://3.bp.blogspot.com/_S7Dbp6MOKn8/TPM7K2BO3tI/AAAAAAAAAZA/LBVLqTR_KOg/s400/IMG_8217.jpg" width="400" /&gt;&lt;br /&gt;&lt;br /&gt;Анна рассказала о том:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;что такое &lt;a href="http://aqua3d.ru/"&gt;Аква3D&lt;/a&gt;, над которым они работают уже около года,&amp;nbsp;&lt;/li&gt;&lt;li&gt;как устроена организация работы в их команде,&amp;nbsp;&lt;/li&gt;&lt;li&gt;как они используют для этого &lt;b&gt;Scrum&lt;/b&gt;, о котором рассказывал&amp;nbsp;&lt;b&gt;Илья Алябушев.&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;Ну и самый ожидаемый доклад &lt;b&gt;Антона Волкова &lt;/b&gt;- отца 3D-движка &lt;a href="http://alternativaplatform.com/ru/alternativa3d/"&gt;Alternativa3D&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;img border="0" height="266" src="http://2.bp.blogspot.com/_S7Dbp6MOKn8/TPM7m20-3xI/AAAAAAAAAZE/sF1WZZXO5LA/s400/IMG_8286.jpg" width="400" /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;Лет пять назад, изучая Flash мне часто попадались его&amp;nbsp;исходники, и именно его доклад вызывал у меня больший интерес. Мне хотелось увидеть его живьем :) Кстати когда я зашел в зал из &lt;a href="http://alternativaplatform.com/ru/"&gt;AlternativaPlatform&lt;/a&gt; я узнал только &lt;b&gt;Александра Карповича&lt;/b&gt;, и в какой-то момент даже испугался что Волкова сегодня не будет. Но мои сомнения развеялись, чуть позже Антон приехал вместе с &lt;b&gt;Владимиром Бабушкиным&lt;/b&gt;.&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Доклад Антона получился конкретно по делу, ничего лишнего. Он рассказал о том&amp;nbsp;как становилась компания &lt;a href="http://alternativaplatform.com/ru/"&gt;AlternativaPlatform&lt;/a&gt;, как развивалось &lt;b&gt;3D &lt;/b&gt;во &lt;b&gt;FlashPlayer&lt;/b&gt;,&amp;nbsp;как они попали на &lt;a href="http://max.adobe.com/"&gt;Adobe Max&lt;/a&gt;,&amp;nbsp;какое они имеют отношению к новому плееру под кодовым именем "&lt;a href="http://labs.adobe.com/technologies/flash/molehill/"&gt;Molehill&lt;/a&gt;", как придется работать с 3D API во нем, когда он будет доступен в релизе. Показал&amp;nbsp;готовые демки на новом плеере, а также повествовал&amp;nbsp;о планах компании. В общем рассказал всё, что было интересно публике.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Из его доклада я выдели две важные вещи:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Ожидать новый плеер в &lt;b&gt;бете &lt;/b&gt;можно &lt;b&gt;весной 2011 года&lt;/b&gt;, в &lt;b&gt;релизе &lt;/b&gt;- не раньше &lt;b&gt;лета 2012&lt;/b&gt;.&lt;/li&gt;&lt;li&gt;Сейчас можно без опасений на будущее использовать 7 версию движка, т.к. &lt;b&gt;AlternativaPlatform &lt;/b&gt;обещают безболезненный переход на 8 версию.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;После доклада Антона, нам пришлось уехать чтобы успеть на ночлег в Уфе. И мы пропустили доклад &lt;b&gt;Владимира Бабушкина&lt;/b&gt; с &lt;b&gt;Евгением Сушковым&lt;/b&gt; и блиц-доклад &lt;b&gt;Максима Фирсова&lt;/b&gt;, а также выпивания в ближайшем кафе, о чем сильно жалеем :(&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;blockquote&gt;Кстати еще больше мы пожалели об этом, когда выехали из Челябинска и уже спустя час на трассе началась настоящая пурга. Дорога превратилась каток, дальше пяти метров ничего не видно. Плюс сотрудники гибдд перекрывают трассу, до приезда дорожных служб. В какой-то момент даже приходила мысль переночевать в машине на обочине. Но спустя пару часов, мы дождались дорожную службу, которая полила дорогу специальным составом и легковые машины пустили. Так при скорости 30-60 км./ч. часов за шесть часов мы все-таки добрались до&amp;nbsp;окрестностей Уфы. Переночевали, и снова в дорогу :) Вечером были в Казани.&lt;/blockquote&gt;&lt;br /&gt;Также смотрите &lt;a href="http://rafpug.groups.adobe.com/index.cfm?event=post.display&amp;amp;postid=32629"&gt;отчет&lt;/a&gt; и &lt;a href="http://iheroes.ru/rafpug/che_november_2010/RAFPUG_800.rar"&gt;фотки&lt;/a&gt; от &lt;b&gt;Анны Сениной&lt;/b&gt;. Организаторам встречи огромное спасибо :)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6470399064206765359-2493734524229134771?l=as3coder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://as3coder.blogspot.com/feeds/2493734524229134771/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://as3coder.blogspot.com/2010/11/rafpug.html#comment-form' title='Комментарии: 3'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6470399064206765359/posts/default/2493734524229134771'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6470399064206765359/posts/default/2493734524229134771'/><link rel='alternate' type='text/html' href='http://as3coder.blogspot.com/2010/11/rafpug.html' title='Поездка в Челябинск на RAFPUG'/><author><name>AS3Coder</name><uri>http://www.blogger.com/profile/14877548685763682250</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_S7Dbp6MOKn8/S3ZqfEQ54vI/AAAAAAAAAMI/j2FNwRKPohE/S220/129018458834145924.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_S7Dbp6MOKn8/TPM5yV5r3CI/AAAAAAAAAY0/HpZiQmX5uqg/s72-c/IMG_8081.jpg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6470399064206765359.post-4165242989967002996</id><published>2010-10-24T14:04:00.001+04:00</published><updated>2010-10-24T14:19:31.079+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='firefox'/><category scheme='http://www.blogger.com/atom/ns#' term='as3'/><category scheme='http://www.blogger.com/atom/ns#' term='fireflash'/><category scheme='http://www.blogger.com/atom/ns#' term='debug'/><category scheme='http://www.blogger.com/atom/ns#' term='firebug'/><title type='text'>Отладка AS3-приложений с помощью FireFlash</title><content type='html'>&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Что такое FireFlash?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;FireFlash&lt;/b&gt; - это плагин для &lt;b&gt;FireBug&lt;/b&gt;'а, с помощью которого можно легко и удобно отлаживать свои приложения.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Что такое FireBug?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;FireBug&lt;/b&gt; - это расширение для браузера &lt;a href="http://www.mozilla.com/"&gt;Mozilla Firefox&lt;/a&gt;.  Используется он для отладки web-приложений и пожалуй является самым  сильным инструментом в этой области. Попробовав раз, отказаться от него  уже не сможешь :)&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Что умеет FireFlash?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;FireFlash&lt;/b&gt; предоставляет .&lt;b&gt;swf&lt;/b&gt;-файлам на странице доступ к консоли &lt;b&gt;FireBug&lt;/b&gt;'a. С возможностями добавлять в консоль и окно Output используемого редактора &lt;b&gt;ActionScript 3.0&lt;/b&gt;&amp;nbsp;записи&amp;nbsp;разных типов:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Записи журнала&lt;/li&gt;&lt;li&gt;Информационные сообщения&lt;/li&gt;&lt;li&gt;Сообщения об опасности&lt;/li&gt;&lt;li&gt;Деревья объектов&lt;/li&gt;&lt;li&gt;...&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Как установить FireFlash?&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Первым делом нужно установить &lt;b&gt;Mozilla Firefox&lt;/b&gt;, если такого не имеется. Скачать его можно с официального сайта &lt;a href="http://www.mozilla.com/"&gt;http://www.mozilla.com/&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Во-вторых, нужно поставить плагин &lt;b&gt;FireBug &lt;/b&gt;не ниже версии 1.4.5. Установить его можно на&amp;nbsp;соответствующей&amp;nbsp;странице&amp;nbsp;&lt;a href="https://addons.mozilla.org/en-US/firefox/addon/1843/"&gt;https://addons.mozilla.org/en-US/firefox/addon/1843/&lt;/a&gt;. После установки в правом нижнем углу браузера появится&amp;nbsp;соответствующая&amp;nbsp;иконка для открытия окна &lt;b&gt;FireBug&lt;/b&gt;'a.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_S7Dbp6MOKn8/TMP_YfxfKkI/AAAAAAAAAX4/zUsSbQsJAEE/s1600/firebug.png" /&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;В-третьих нужно поставить сам &lt;b&gt;FireFlash&lt;/b&gt;. Сделать это можно также со страницы дополнений к &lt;b&gt;Mozilla Firefox&lt;/b&gt; по адресу&amp;nbsp;&lt;a href="https://addons.mozilla.org/en-US/firefox/addon/55979/"&gt;https://addons.mozilla.org/en-US/firefox/addon/55979/&lt;/a&gt;. В правом верхнем углу содержимого &lt;b&gt;FireBug&lt;/b&gt;'a вы увидите вот такую иконку.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_S7Dbp6MOKn8/TMP_fJMAjDI/AAAAAAAAAX8/wvO4SPUpX-A/s1600/fireflash.png" /&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Как обращаться к FireFlash из ActionScript 3.0?&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Для этого имеется библиотека классов &lt;b&gt;com.actionscript_flash_guru.* &lt;/b&gt;В ней имеется единственный необходимый нам класс &lt;b&gt;com.actionscript_flash_guru.fireflashlite.Console.as&lt;/b&gt;, который содержит в себе различные методы для работы с &lt;b&gt;FireFlash&lt;/b&gt;. Скачать архив с библиотекой можно с &lt;a href="http://www.actionscript-flash-guru.com/blog/21-fireflash--firebug-console-for-flash"&gt;официальной страницы&lt;/a&gt;. А также можно подписаться на уведомления об обновлении библиотеки в &lt;a href="http://www.twitter.com/fireflashupdate"&gt;Twitter&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;А можно по-подробнее?&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;pre class="code" style="background-color: #fbf9f5; border: 1px solid rgb(179, 179, 179); clear: both; font-family: Courier,monospace ! important; font-size: 12px; margin-top: 6px; overflow: auto; padding: 8px 8px 8px 20px;"&gt;&lt;span class="comment" style="color: grey; cursor: text ! important; font-family: Courier,monospace; font-size: 12px; padding: 0px ! important; text-decoration: none ! important;"&gt;/**&lt;br /&gt; * &lt;br /&gt; */&lt;/span&gt;&lt;br /&gt;&lt;span class="comment" style="color: grey; cursor: text ! important; font-family: Courier,monospace; font-size: 12px; padding: 0px ! important; text-decoration: none ! important;"&gt;/**&lt;br /&gt; * Блокирует вывод сообщений в окно Output внутри используемого FrameWork&lt;br /&gt; * Другими словами класс консоли не регистриует свои сообщения при помощи фунции trace();&lt;br /&gt; */&lt;/span&gt;&lt;br /&gt;&lt;span class="number" style="color: green; font-family: Courier,monospace; font-size: 12px;"&gt;C&lt;/span&gt;onsole&lt;span class="preprocessor" style="color: #2b91af; font-family: Courier,monospace; font-size: 12px;"&gt;.disableIdeTrace&lt;/span&gt;()&lt;span class="comment" style="color: grey; cursor: text ! important; font-family: Courier,monospace; font-size: 12px; padding: 0px ! important; text-decoration: none ! important;"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="comment" style="color: grey; cursor: text ! important; font-family: Courier,monospace; font-size: 12px; padding: 0px ! important; text-decoration: none ! important;"&gt;/**&lt;br /&gt; * &lt;br /&gt; */&lt;/span&gt;&lt;br /&gt;&lt;span class="comment" style="color: grey; cursor: text ! important; font-family: Courier,monospace; font-size: 12px; padding: 0px ! important; text-decoration: none ! important;"&gt;/**&lt;br /&gt; * Метод выводит в консоли FireBug'a содержимое объекта в виде дерева,&lt;br /&gt; * а также дублирует его в окне Output&lt;br /&gt; * &lt;br /&gt; * @param&amp;nbsp;Ссылка на объект&lt;br /&gt; * @param Количество вложенностей дерева&lt;br /&gt; * @param Сопутствующее сообщений&lt;br /&gt; */&lt;/span&gt;&lt;br /&gt;&lt;span class="number" style="color: green; font-family: Courier,monospace; font-size: 12px;"&gt;C&lt;/span&gt;onsole&lt;span class="preprocessor" style="color: #2b91af; font-family: Courier,monospace; font-size: 12px;"&gt;.dir&lt;/span&gt;(obj, &lt;span class="number" style="color: green; font-family: Courier,monospace; font-size: 12px;"&gt;3&lt;/span&gt;, &lt;span class="string" style="color: teal; font-family: Courier,monospace; font-size: 12px;"&gt;"Custom message"&lt;/span&gt;)&lt;span class="comment" style="color: grey; cursor: text ! important; font-family: Courier,monospace; font-size: 12px; padding: 0px ! important; text-decoration: none ! important;"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="comment" style="color: grey; cursor: text ! important; font-family: Courier,monospace; font-size: 12px; padding: 0px ! important; text-decoration: none ! important;"&gt;/**&lt;br /&gt; * &lt;br /&gt; */&lt;/span&gt;&lt;br /&gt;&lt;span class="comment" style="color: grey; cursor: text ! important; font-family: Courier,monospace; font-size: 12px; padding: 0px ! important; text-decoration: none ! important;"&gt;/**&lt;br /&gt; * Метод выводит в консоли FireBug'a содержимое xml-строки,&lt;br /&gt; * а также дублирует его в окне Output&lt;br /&gt; * &lt;br /&gt; * @param&amp;nbsp;Строка xml-узла&lt;br /&gt; * @param Сопутствующее сообщений&lt;br /&gt; */&lt;/span&gt;&lt;br /&gt;&lt;span class="number" style="color: green; font-family: Courier,monospace; font-size: 12px;"&gt;C&lt;/span&gt;onsole&lt;span class="preprocessor" style="color: #2b91af; font-family: Courier,monospace; font-size: 12px;"&gt;.dirxml&lt;/span&gt;(xml, &lt;span class="string" style="color: teal; font-family: Courier,monospace; font-size: 12px;"&gt;"Custom message"&lt;/span&gt;)&lt;span class="comment" style="color: grey; cursor: text ! important; font-family: Courier,monospace; font-size: 12px; padding: 0px ! important; text-decoration: none ! important;"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="comment" style="color: grey; cursor: text ! important; font-family: Courier,monospace; font-size: 12px; padding: 0px ! important; text-decoration: none ! important;"&gt;/**&lt;br /&gt; * &lt;br /&gt; */&lt;/span&gt;&lt;br /&gt;&lt;span class="comment" style="color: grey; cursor: text ! important; font-family: Courier,monospace; font-size: 12px; padding: 0px ! important; text-decoration: none ! important;"&gt;/**&lt;br /&gt; * Метод выводит в окно Output сообщение с меткой ошибки, &lt;br /&gt; * ссылкой на класс и метод инициализировавший ошибку&lt;br /&gt; * &lt;br /&gt; * @param&amp;nbsp;Строка с сообщением об ошибке&lt;br /&gt; */&lt;/span&gt;&lt;br /&gt;&lt;span class="number" style="color: green; font-family: Courier,monospace; font-size: 12px;"&gt;C&lt;/span&gt;onsole&lt;span class="preprocessor" style="color: #2b91af; font-family: Courier,monospace; font-size: 12px;"&gt;.error&lt;/span&gt;(&lt;span class="string" style="color: teal; font-family: Courier,monospace; font-size: 12px;"&gt;"Error message"&lt;/span&gt;)&lt;span class="comment" style="color: grey; cursor: text ! important; font-family: Courier,monospace; font-size: 12px; padding: 0px ! important; text-decoration: none ! important;"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="comment" style="color: grey; cursor: text ! important; font-family: Courier,monospace; font-size: 12px; padding: 0px ! important; text-decoration: none ! important;"&gt;/**&lt;br /&gt; * &lt;br /&gt; */&lt;/span&gt;&lt;br /&gt;&lt;span class="comment" style="color: grey; cursor: text ! important; font-family: Courier,monospace; font-size: 12px; padding: 0px ! important; text-decoration: none ! important;"&gt;/**&lt;br /&gt; * Метод созает таймер с заданным идентификатором и начинает отсчет.&lt;br /&gt; * Для того чтобы, остановить таймер необходимо &lt;br /&gt; * использовать метод timeEnd();&lt;br /&gt; * &lt;br /&gt; * @param Идентификатор таймера&lt;br /&gt; */&lt;/span&gt;&lt;br /&gt;&lt;span class="number" style="color: green; font-family: Courier,monospace; font-size: 12px;"&gt;C&lt;/span&gt;onsole&lt;span class="preprocessor" style="color: #2b91af; font-family: Courier,monospace; font-size: 12px;"&gt;.time&lt;/span&gt;(&lt;span class="string" style="color: teal; font-family: Courier,monospace; font-size: 12px;"&gt;"your_id"&lt;/span&gt;)&lt;span class="comment" style="color: grey; cursor: text ! important; font-family: Courier,monospace; font-size: 12px; padding: 0px ! important; text-decoration: none ! important;"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="comment" style="color: grey; cursor: text ! important; font-family: Courier,monospace; font-size: 12px; padding: 0px ! important; text-decoration: none ! important;"&gt;/**&lt;br /&gt; * &lt;br /&gt; */&lt;/span&gt;&lt;br /&gt;&lt;span class="comment" style="color: grey; cursor: text ! important; font-family: Courier,monospace; font-size: 12px; padding: 0px ! important; text-decoration: none ! important;"&gt;/**&lt;br /&gt; * Метод останавливает таймер c заданым идентификатором.&lt;br /&gt; * Выводит информационное сообщение в консоль FireBug'a&lt;br /&gt; * с указанием имени .swf-файла, идентикатора таймера и его значения.&lt;br /&gt; * А также дублирует сообщение в окно Output с соответвующей меткой&lt;br /&gt; */&lt;/span&gt;&lt;br /&gt;&lt;span class="number" style="color: green; font-family: Courier,monospace; font-size: 12px;"&gt;C&lt;/span&gt;onsole&lt;span class="preprocessor" style="color: #2b91af; font-family: Courier,monospace; font-size: 12px;"&gt;.timeEnd&lt;/span&gt;(&lt;span class="string" style="color: teal; font-family: Courier,monospace; font-size: 12px;"&gt;"your_id"&lt;/span&gt;)&lt;span class="comment" style="color: grey; cursor: text ! important; font-family: Courier,monospace; font-size: 12px; padding: 0px ! important; text-decoration: none ! important;"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="comment" style="color: grey; cursor: text ! important; font-family: Courier,monospace; font-size: 12px; padding: 0px ! important; text-decoration: none ! important;"&gt;/**&lt;br /&gt; * &lt;br /&gt; */&lt;/span&gt;&lt;br /&gt;&lt;span class="comment" style="color: grey; cursor: text ! important; font-family: Courier,monospace; font-size: 12px; padding: 0px ! important; text-decoration: none ! important;"&gt;/**&lt;br /&gt; * Метод проверяет условие, и если оно ложное &lt;br /&gt; * выводит указанное сообщение в окно Output&lt;br /&gt; * &lt;br /&gt; * @param&amp;nbsp;Условие&lt;br /&gt; * @param&amp;nbsp;Сообщение для ложного значения&lt;br /&gt; */&lt;/span&gt;&lt;br /&gt;&lt;span class="number" style="color: green; font-family: Courier,monospace; font-size: 12px;"&gt;C&lt;/span&gt;onsole&lt;span class="preprocessor" style="color: #2b91af; font-family: Courier,monospace; font-size: 12px;"&gt;.assert&lt;/span&gt;(false, &lt;span class="string" style="color: teal; font-family: Courier,monospace; font-size: 12px;"&gt;"Messages for the false values"&lt;/span&gt;)&lt;span class="comment" style="color: grey; cursor: text ! important; font-family: Courier,monospace; font-size: 12px; padding: 0px ! important; text-decoration: none ! important;"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="comment" style="color: grey; cursor: text ! important; font-family: Courier,monospace; font-size: 12px; padding: 0px ! important; text-decoration: none ! important;"&gt;/**&lt;br /&gt; * &lt;br /&gt; */&lt;/span&gt;&lt;br /&gt;&lt;span class="comment" style="color: grey; cursor: text ! important; font-family: Courier,monospace; font-size: 12px; padding: 0px ! important; text-decoration: none ! important;"&gt;/**&lt;br /&gt; * Метод выводит в окно Output сообщение с&lt;br /&gt; * ссылкой на класс и метод инициализировавший вызов&lt;br /&gt; * &lt;br /&gt; * @param&amp;nbsp;Строка с сообщением об ошибке&lt;br /&gt; */&lt;/span&gt;&lt;br /&gt;&lt;span class="number" style="color: green; font-family: Courier,monospace; font-size: 12px;"&gt;C&lt;/span&gt;onsole&lt;span class="preprocessor" style="color: #2b91af; font-family: Courier,monospace; font-size: 12px;"&gt;.stackTrace&lt;/span&gt;()&lt;span class="comment" style="color: grey; cursor: text ! important; font-family: Courier,monospace; font-size: 12px; padding: 0px ! important; text-decoration: none ! important;"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="comment" style="color: grey; cursor: text ! important; font-family: Courier,monospace; font-size: 12px; padding: 0px ! important; text-decoration: none ! important;"&gt;/**&lt;br /&gt; * &lt;br /&gt; */&lt;/span&gt;&lt;br /&gt;&lt;span class="comment" style="color: grey; cursor: text ! important; font-family: Courier,monospace; font-size: 12px; padding: 0px ! important; text-decoration: none ! important;"&gt;/**&lt;br /&gt; * Метод выводит простое сообщение в консоль FireBug'a, &lt;br /&gt; * а также дублирует его в окно Output с соответствующей меткой&lt;br /&gt; * &lt;br /&gt; * @param Текстовое сообщение&lt;br /&gt; */&lt;/span&gt;&lt;br /&gt;&lt;span class="number" style="color: green; font-family: Courier,monospace; font-size: 12px;"&gt;C&lt;/span&gt;onsole&lt;span class="preprocessor" style="color: #2b91af; font-family: Courier,monospace; font-size: 12px;"&gt;.log&lt;/span&gt;(&lt;span class="string" style="color: teal; font-family: Courier,monospace; font-size: 12px;"&gt;"Simple message"&lt;/span&gt;)&lt;span class="comment" style="color: grey; cursor: text ! important; font-family: Courier,monospace; font-size: 12px; padding: 0px ! important; text-decoration: none ! important;"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="comment" style="color: grey; cursor: text ! important; font-family: Courier,monospace; font-size: 12px; padding: 0px ! important; text-decoration: none ! important;"&gt;/**&lt;br /&gt; * &lt;br /&gt; */&lt;/span&gt;&lt;br /&gt;&lt;span class="comment" style="color: grey; cursor: text ! important; font-family: Courier,monospace; font-size: 12px; padding: 0px ! important; text-decoration: none ! important;"&gt;/**&lt;br /&gt; * Метод выводит информационное сообщение в консоль &lt;br /&gt; * FireBug'a с соответствующей иконкой, а также дублирует &lt;br /&gt; * его в окно Output с соответствующей меткой&lt;br /&gt; * &lt;br /&gt; * @param Информационное сообщение&lt;br /&gt; */&lt;/span&gt;&lt;br /&gt;&lt;span class="number" style="color: green; font-family: Courier,monospace; font-size: 12px;"&gt;C&lt;/span&gt;onsole&lt;span class="preprocessor" style="color: #2b91af; font-family: Courier,monospace; font-size: 12px;"&gt;.info&lt;/span&gt;(&lt;span class="string" style="color: teal; font-family: Courier,monospace; font-size: 12px;"&gt;"Information message"&lt;/span&gt;)&lt;span class="comment" style="color: grey; cursor: text ! important; font-family: Courier,monospace; font-size: 12px; padding: 0px ! important; text-decoration: none ! important;"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="comment" style="color: grey; cursor: text ! important; font-family: Courier,monospace; font-size: 12px; padding: 0px ! important; text-decoration: none ! important;"&gt;/**&lt;br /&gt; * &lt;br /&gt; */&lt;/span&gt;&lt;br /&gt;&lt;span class="comment" style="color: grey; cursor: text ! important; font-family: Courier,monospace; font-size: 12px; padding: 0px ! important; text-decoration: none ! important;"&gt;/**&lt;br /&gt; * Метод выводит сообщение об опасности в консоль &lt;br /&gt; * FireBug'a с соответствующей иконкой, а также дублирует &lt;br /&gt; * его в окно Output с соответствующей меткой&lt;br /&gt; * &lt;br /&gt; * @param Cообщение об опасности&lt;br /&gt; */&lt;/span&gt;&lt;br /&gt;&lt;span class="number" style="color: green; font-family: Courier,monospace; font-size: 12px;"&gt;C&lt;/span&gt;onsole&lt;span class="preprocessor" style="color: #2b91af; font-family: Courier,monospace; font-size: 12px;"&gt;.warn&lt;/span&gt;(&lt;span class="string" style="color: teal; font-family: Courier,monospace; font-size: 12px;"&gt;"Warning message!"&lt;/span&gt;)&lt;span class="comment" style="color: grey; cursor: text ! important; font-family: Courier,monospace; font-size: 12px; padding: 0px ! important; text-decoration: none ! important;"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="comment" style="color: grey; cursor: text ! important; font-family: Courier,monospace; font-size: 12px; padding: 0px ! important; text-decoration: none ! important;"&gt;/**&lt;br /&gt; * &lt;br /&gt; */&lt;/span&gt;&lt;br /&gt;&lt;span class="comment" style="color: grey; cursor: text ! important; font-family: Courier,monospace; font-size: 12px; padding: 0px ! important; text-decoration: none ! important;"&gt;/**&lt;br /&gt; * Метод дублирует поведение метода log();&lt;br /&gt; */&lt;/span&gt;&lt;br /&gt;&lt;span class="number" style="color: green; font-family: Courier,monospace; font-size: 12px;"&gt;C&lt;/span&gt;onsole&lt;span class="preprocessor" style="color: #2b91af; font-family: Courier,monospace; font-size: 12px;"&gt;.debug&lt;/span&gt;(&lt;span class="string" style="color: teal; font-family: Courier,monospace; font-size: 12px;"&gt;"Simple message"&lt;/span&gt;)&lt;span class="comment" style="color: grey; cursor: text ! important; font-family: Courier,monospace; font-size: 12px; padding: 0px ! important; text-decoration: none ! important;"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="comment" style="color: grey; cursor: text ! important; font-family: Courier,monospace; font-size: 12px; padding: 0px ! important; text-decoration: none ! important;"&gt;/**&lt;br /&gt; * &lt;br /&gt; */&lt;/span&gt;&lt;br /&gt;&lt;span class="comment" style="color: grey; cursor: text ! important; font-family: Courier,monospace; font-size: 12px; padding: 0px ! important; text-decoration: none ! important;"&gt;/**&lt;br /&gt; * Метод добавляет в консоли FireBug'а блок для группы&lt;br /&gt; * с заданным названием, а также дублирует соответсвующую &lt;br /&gt; * запись в окне Output&lt;br /&gt; * &lt;br /&gt; * @param&amp;nbsp;Названия для группы&lt;br /&gt; */&lt;/span&gt;&lt;br /&gt;&lt;span class="number" style="color: green; font-family: Courier,monospace; font-size: 12px;"&gt;C&lt;/span&gt;onsole&lt;span class="preprocessor" style="color: #2b91af; font-family: Courier,monospace; font-size: 12px;"&gt;.group&lt;/span&gt;(&lt;span class="string" style="color: teal; font-family: Courier,monospace; font-size: 12px;"&gt;"Group name"&lt;/span&gt;)&lt;span class="comment" style="color: grey; cursor: text ! important; font-family: Courier,monospace; font-size: 12px; padding: 0px ! important; text-decoration: none ! important;"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="comment" style="color: grey; cursor: text ! important; font-family: Courier,monospace; font-size: 12px; padding: 0px ! important; text-decoration: none ! important;"&gt;/**&lt;br /&gt; * &lt;br /&gt; */&lt;/span&gt;&lt;br /&gt;&lt;span class="comment" style="color: grey; cursor: text ! important; font-family: Courier,monospace; font-size: 12px; padding: 0px ! important; text-decoration: none ! important;"&gt;/**&lt;br /&gt; * Метод дублирует поведение метода Console.group();&lt;br /&gt; * только блок будет иметь закрытое состояние&lt;br /&gt; */&lt;/span&gt;&lt;br /&gt;&lt;span class="number" style="color: green; font-family: Courier,monospace; font-size: 12px;"&gt;C&lt;/span&gt;onsole&lt;span class="preprocessor" style="color: #2b91af; font-family: Courier,monospace; font-size: 12px;"&gt;.groupCollapsed&lt;/span&gt;(&lt;span class="string" style="color: teal; font-family: Courier,monospace; font-size: 12px;"&gt;"Group name"&lt;/span&gt;)&lt;span class="comment" style="color: grey; cursor: text ! important; font-family: Courier,monospace; font-size: 12px; padding: 0px ! important; text-decoration: none ! important;"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="comment" style="color: grey; cursor: text ! important; font-family: Courier,monospace; font-size: 12px; padding: 0px ! important; text-decoration: none ! important;"&gt;/**&lt;br /&gt; * &lt;br /&gt; */&lt;/span&gt;&lt;br /&gt;&lt;span class="comment" style="color: grey; cursor: text ! important; font-family: Courier,monospace; font-size: 12px; padding: 0px ! important; text-decoration: none ! important;"&gt;/**&lt;br /&gt; * Метод закрывает блок, открытый ранее&lt;br /&gt; * Используется только после вызова методов &lt;br /&gt; * Console.group(); и Console.groupCollapsed();&lt;br /&gt; */&lt;/span&gt;&lt;br /&gt;&lt;span class="number" style="color: green; font-family: Courier,monospace; font-size: 12px;"&gt;C&lt;/span&gt;onsole&lt;span class="preprocessor" style="color: #2b91af; font-family: Courier,monospace; font-size: 12px;"&gt;.groupEnd&lt;/span&gt;()&lt;span class="comment" style="color: grey; cursor: text ! important; font-family: Courier,monospace; font-size: 12px; padding: 0px ! important; text-decoration: none ! important;"&gt;;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;А как-же пример?&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Откройте консоль &lt;b&gt;FireBug&lt;/b&gt;'a и понажимайте на кнопки из примера. Вы должны увидеть&amp;nbsp;результат примеров.&lt;/div&gt;&lt;br /&gt;&lt;object align="middle" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" height="200" id="FireFlashExample" width="500"&gt; &lt;param name="allowScriptAccess" value="always" /&gt;&lt;param name="allowFullScreen" value="false" /&gt;&lt;param name="movie" value="http://sites.google.com/site/as3coder/files/FireFlashExample.swf" /&gt;&lt;param name="quality" value="high" /&gt;&lt;param name="bgcolor" value="#F0F0F0" /&gt;&lt;embed src="http://sites.google.com/site/as3coder/files/FireFlashExample.swf" quality="high" bgcolor="#F0F0F0" width="500" height="200" name="FireFlashExample" align="middle" allowScriptAccess="always" allowFullScreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Дополнительно&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Более подробно ознакомиться с &lt;b&gt;FireFlash &lt;/b&gt;можно на его &lt;a href="http://www.actionscript-flash-guru.com/blog/21-fireflash--firebug-console-for-flash"&gt;официальной странице&lt;/a&gt;.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Огромное спасибо за новый инструмент&amp;nbsp;&lt;a href="http://www.actionscript-flash-guru.com/"&gt;Nicholas Dunbar&lt;/a&gt;, надеюсь его работа прижевется в руках разработчиков &lt;b&gt;ActionScript&lt;/b&gt;-приложений. А также&amp;nbsp;спасибо&amp;nbsp;&lt;a href="http://flastar.ru/blog/"&gt;Flastar&lt;/a&gt;'у за &lt;a href="http://flastar.ru/blog/flastarposts/505"&gt;информацию&lt;/a&gt;&amp;nbsp;о&amp;nbsp;существовании инструмента.&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6470399064206765359-4165242989967002996?l=as3coder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://as3coder.blogspot.com/feeds/4165242989967002996/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://as3coder.blogspot.com/2010/10/as3-fireflash.html#comment-form' title='Комментарии: 3'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6470399064206765359/posts/default/4165242989967002996'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6470399064206765359/posts/default/4165242989967002996'/><link rel='alternate' type='text/html' href='http://as3coder.blogspot.com/2010/10/as3-fireflash.html' title='Отладка AS3-приложений с помощью FireFlash'/><author><name>AS3Coder</name><uri>http://www.blogger.com/profile/14877548685763682250</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_S7Dbp6MOKn8/S3ZqfEQ54vI/AAAAAAAAAMI/j2FNwRKPohE/S220/129018458834145924.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_S7Dbp6MOKn8/TMP_YfxfKkI/AAAAAAAAAX4/zUsSbQsJAEE/s72-c/firebug.png' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6470399064206765359.post-1350734093906105988</id><published>2010-10-06T11:49:00.000+04:00</published><updated>2010-10-06T11:49:41.356+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='as3'/><category scheme='http://www.blogger.com/atom/ns#' term='начинающим'/><category scheme='http://www.blogger.com/atom/ns#' term='labs'/><category scheme='http://www.blogger.com/atom/ns#' term='как?'/><title type='text'>Проверка орфографии в ActionScript 3.0</title><content type='html'>24 сентября 2010 года на сайте &lt;a href="http://labs.adobe.com/"&gt;лаборатории&lt;/a&gt; Adobe обновился проект "&lt;a href="http://labs.adobe.com/technologies/squiggly/"&gt;Squiggly&lt;/a&gt;".&amp;nbsp;Обновили проект до 4-ой пререлизной версии.&amp;nbsp;О нем я услышал впервые, и очень им заинтересовался.&amp;nbsp;Теперь хочу подделиться с вами.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Что такое проект "Squiggly"?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Это набор .swc-библиотек для работы с орфографией во &lt;b&gt;Flash&lt;/b&gt;, Flex и AIR проектах. Название переводится как "&lt;b&gt;волнистые&lt;/b&gt;" с намеком на то, что неправильные слова подчеркиваются именно этой линией.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Что он дает?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Возможности анализа текста в &lt;b&gt;ActionScript 3.0&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Какие возможности?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Проверка орфографии и правил языка, варианты исправления неправильных слов.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;На чем основан проект?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;За основу взят проект "&lt;a href="http://ru.wikipedia.org/wiki/Hunspell"&gt;Hunspell&lt;/a&gt;".&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Что это&amp;nbsp;означает?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Это означает, что нам можно использовать уже готовые словари из других программ, основанных на этой же основе. Таких как: &lt;a href="http://ru.openoffice.org/"&gt;OpenOffice&lt;/a&gt;, &lt;a href="http://www.mozilla-russia.org/"&gt;Mozilla FireFox&lt;/a&gt;, &lt;a href="http://www.opera.com/"&gt;Opera&lt;/a&gt; и многих других. Например, словари от Mozill'ы можно найти &lt;a href="https://addons.mozilla.org/ru/firefox/language-tools/"&gt;здесь&lt;/a&gt;. Но прежде чем использовать словари сторонних программ, пожалуйста ознакомьтесь с лицензионными соглашениями.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Как это работает?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Рассмотрим по-подробнее чистый &lt;b&gt;ActionScript 3.0&lt;/b&gt; проект. Загружаем &lt;a href="http://labs.adobe.com/downloads/squiggly.html"&gt;архив&lt;/a&gt; с библиотеками. Нам&amp;nbsp;понадобиться&amp;nbsp;только одна из них: &lt;b&gt;AdobeSpellingEngine.swc&lt;/b&gt;&amp;nbsp;(Остальные&amp;nbsp;предназначены&amp;nbsp;для Flex-проектов). Подключаем её у нашему проекту.&lt;br /&gt;&lt;br /&gt;Первым делом нужно загрузить словари с орфографией и правилами.&lt;br /&gt;&lt;span class="Apple-style-span" style="-webkit-text-size-adjust: none; font-family: Tahoma, Helvetica, sans-serif; font-size: 12px;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;pre class="code" style="background-color: #fbf9f5; border-bottom-color: rgb(179, 179, 179); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(179, 179, 179); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(179, 179, 179); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(179, 179, 179); border-top-style: solid; border-top-width: 1px; clear: both; font-family: Courier, monospace !important; font-size: 12px; margin-top: 6px; overflow-x: auto; overflow-y: auto; padding-bottom: 8px; padding-left: 20px; padding-right: 8px; padding-top: 8px;"&gt;&lt;span class="comment" style="color: grey; cursor: text !important; font-family: Courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;//&lt;/span&gt;&lt;br /&gt;&lt;span class="comment" style="color: grey; cursor: text !important; font-family: Courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;// Создаем экземпляр словаря&lt;/span&gt;&lt;br /&gt;dictionary = &lt;span class="keyword" style="color: blue; font-family: Courier, monospace; font-size: 12px;"&gt;new&lt;/span&gt; HunSpellDictionary();&lt;br /&gt;&lt;span class="comment" style="color: grey; cursor: text !important; font-family: Courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;//&lt;/span&gt;&lt;br /&gt;&lt;span class="comment" style="color: grey; cursor: text !important; font-family: Courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;// Добавляем обработчик события загрузки библиотек&lt;/span&gt;&lt;br /&gt;dictionary.addEventListener(Event.COMPLETE, onDictanionaryComplete, &lt;span class="keyword" style="color: blue; font-family: Courier, monospace; font-size: 12px;"&gt;false&lt;/span&gt;, &lt;span class="number" style="color: green; font-family: Courier, monospace; font-size: 12px;"&gt;0&lt;/span&gt;, &lt;span class="keyword" style="color: blue; font-family: Courier, monospace; font-size: 12px;"&gt;true&lt;/span&gt;);&lt;br /&gt;&lt;span class="comment" style="color: grey; cursor: text !important; font-family: Courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;//&lt;/span&gt;&lt;br /&gt;&lt;span class="comment" style="color: grey; cursor: text !important; font-family: Courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;// Грузим библиотеки&lt;/span&gt;&lt;br /&gt;dictionary.load(&lt;span class="string" style="color: teal; font-family: Courier, monospace; font-size: 12px;"&gt;"dictionaries/en_US/en_US.aff"&lt;/span&gt;, &lt;span class="string" style="color: teal; font-family: Courier, monospace; font-size: 12px;"&gt;"dictionaries/en_US/en_US.dic"&lt;/span&gt;);&lt;/pre&gt;&lt;br /&gt;После того, как словари загружены, в обработчике нужно создать объект который будет проверять орфографию слов.&lt;br /&gt;&lt;span class="Apple-style-span" style="-webkit-text-size-adjust: none; font-family: Tahoma, Helvetica, sans-serif; font-size: 12px;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;pre class="code" style="background-color: #fbf9f5; border-bottom-color: rgb(179, 179, 179); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(179, 179, 179); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(179, 179, 179); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(179, 179, 179); border-top-style: solid; border-top-width: 1px; clear: both; font-family: Courier, monospace !important; font-size: 12px; margin-top: 6px; overflow-x: auto; overflow-y: auto; padding-bottom: 8px; padding-left: 20px; padding-right: 8px; padding-top: 8px;"&gt;&lt;span class="comment" style="color: grey; cursor: text !important; font-family: Courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;/**&lt;br /&gt; * Метод обрабатывает событие успешной загрузки библиотек для словаря&lt;br /&gt; * Создает экземпляр объекта для проверки слов&lt;br /&gt; */&lt;/span&gt;&lt;br /&gt;&lt;span class="keyword" style="color: blue; font-family: Courier, monospace; font-size: 12px;"&gt;private&lt;/span&gt; function onDictanionaryComplete (e:Event):&lt;span class="keyword" style="color: blue; font-family: Courier, monospace; font-size: 12px;"&gt;void&lt;/span&gt;&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;span class="comment" style="color: grey; cursor: text !important; font-family: Courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;//&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;span class="comment" style="color: grey; cursor: text !important; font-family: Courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;// Создаем экземпляр объекта для проверки слов, в параметре указываем ссылку на словарь&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;spell_checker = &lt;span class="keyword" style="color: blue; font-family: Courier, monospace; font-size: 12px;"&gt;new&lt;/span&gt; SpellChecker(dictionary);&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;Чтобы проверить какое-то слов нужно вызвать у проверяющего объекта метод&amp;nbsp;&lt;b&gt;checkWord();&lt;/b&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="-webkit-text-size-adjust: none; font-family: Tahoma, Helvetica, sans-serif; font-size: 12px;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;pre class="code" style="background-color: #fbf9f5; border-bottom-color: rgb(179, 179, 179); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(179, 179, 179); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(179, 179, 179); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(179, 179, 179); border-top-style: solid; border-top-width: 1px; clear: both; font-family: Courier, monospace !important; font-size: 12px; margin-top: 6px; overflow-x: auto; overflow-y: auto; padding-bottom: 8px; padding-left: 20px; padding-right: 8px; padding-top: 8px;"&gt;spell_checker&lt;span class="preprocessor" style="color: #2b91af; font-family: Courier, monospace; font-size: 12px;"&gt;.checkWord&lt;/span&gt;(&lt;span class="string" style="color: teal; font-family: Courier, monospace; font-size: 12px;"&gt;"heloo"&lt;/span&gt;)&lt;span class="comment" style="color: grey; cursor: text !important; font-family: Courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;Чтобы получить список возможных исправлений для слова имеется метод&amp;nbsp;&lt;b&gt;getSuggestions();&lt;/b&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="-webkit-text-size-adjust: none; font-family: Tahoma, Helvetica, sans-serif; font-size: 12px;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;pre class="code" style="background-color: #fbf9f5; border-bottom-color: rgb(179, 179, 179); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(179, 179, 179); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(179, 179, 179); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(179, 179, 179); border-top-style: solid; border-top-width: 1px; clear: both; font-family: Courier, monospace !important; font-size: 12px; margin-top: 6px; overflow-x: auto; overflow-y: auto; padding-bottom: 8px; padding-left: 20px; padding-right: 8px; padding-top: 8px;"&gt;spell_checker&lt;span class="preprocessor" style="color: #2b91af; font-family: Courier, monospace; font-size: 12px;"&gt;.getSuggestions&lt;/span&gt;(&lt;span class="string" style="color: teal; font-family: Courier, monospace; font-size: 12px;"&gt;"heloo"&lt;/span&gt;)&lt;span class="comment" style="color: grey; cursor: text !important; font-family: Courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;А как проверить содержимое текстового поля и подчеркнуть неправильные слова?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Алгоритм примерно такой:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Разбиваем строку содержимого на список слов (В элементах списка нужно иметь значение слова, индекс первого символа и последнего).&lt;/li&gt;&lt;li&gt;В цикле пробежаться по списку.&lt;/li&gt;&lt;li&gt;Определить ошибочное слово.&lt;/li&gt;&lt;li&gt;Зная индексы крайних символов с помощью метода &lt;a href="http://help.adobe.com/ru_RU/AS3LCR/Flash_10.0/flash/text/TextField.html#getCharBoundaries()"&gt;TextField.getCharBoundaries()&lt;/a&gt; вычислить координаты слова&lt;/li&gt;&lt;li&gt;Наложить на текстовое поле новый слой, в котором нарисовать волниcтые линии.&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;А пример?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;object align="middle" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" height="100" id="main" width="400"&gt; &lt;param name="allowScriptAccess" value="sameDomain" /&gt;&lt;param name="allowFullScreen" value="false" /&gt;&lt;param name="movie" value="https://sites.google.com/site/as3coder/files/MyFirstSquigglyProject.swf" /&gt;&lt;param name="quality" value="high" /&gt;&lt;param name="bgcolor" value="#F0F0F0" /&gt;&lt;embed src="https://sites.google.com/site/as3coder/files/MyFirstSquigglyProject.swf" quality="high" bgcolor="#F0F0F0" width="400" height="100" name="main" align="middle" allowScriptAccess="sameDomain" allowFullScreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Дополнительная информация&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://labs.adobe.com/technologies/squiggly/releasenotes.html"&gt;Squiggly Release Notes&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://labs.adobe.com/technologies/squiggly/demo/#"&gt;Try the online demo to become familiar with the functionality provided by Squiggly&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6470399064206765359-1350734093906105988?l=as3coder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://as3coder.blogspot.com/feeds/1350734093906105988/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://as3coder.blogspot.com/2010/10/actionscript-30.html#comment-form' title='Комментарии: 5'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6470399064206765359/posts/default/1350734093906105988'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6470399064206765359/posts/default/1350734093906105988'/><link rel='alternate' type='text/html' href='http://as3coder.blogspot.com/2010/10/actionscript-30.html' title='Проверка орфографии в ActionScript 3.0'/><author><name>AS3Coder</name><uri>http://www.blogger.com/profile/14877548685763682250</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_S7Dbp6MOKn8/S3ZqfEQ54vI/AAAAAAAAAMI/j2FNwRKPohE/S220/129018458834145924.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6470399064206765359.post-2661876872702108455</id><published>2010-09-17T11:58:00.000+04:00</published><updated>2010-09-17T11:58:06.845+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='as3'/><category scheme='http://www.blogger.com/atom/ns#' term='iPhone'/><category scheme='http://www.blogger.com/atom/ns#' term='Adobe'/><category scheme='http://www.blogger.com/atom/ns#' term='FlashDevelop'/><category scheme='http://www.blogger.com/atom/ns#' term='Apple'/><category scheme='http://www.blogger.com/atom/ns#' term='air'/><title type='text'>Разработка приложений для iPhone на ActionScript 3.0 во FlashDevelop (Packager for iPhone)</title><content type='html'>&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Немного истории&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;За несколько дней до выхода последней на текущий момент среды разработки &lt;b&gt;Flash&lt;/b&gt;-приложений &lt;a href="http://www.adobe.com/products/flash/"&gt;Adobe Flash CS5&lt;/a&gt;, компания &lt;a href="http://www.apple.com/ru/"&gt;Apple&lt;/a&gt; выпустила запрет на разработку приложений для телефонов &lt;a href="http://www.apple.com/ru/iphone/"&gt;iPhone&lt;/a&gt;, используя сторонние технологии. А это означало то, что самая ожидаемая возможность новой платформы - портирование &lt;b&gt;Flash&lt;/b&gt;-приложений на iOS (операционная&amp;nbsp;система&amp;nbsp;телефонов &lt;b&gt;iPhone &lt;/b&gt;и планшетов &lt;a href="http://www.apple.com/ru/ipad/"&gt;iPad&lt;/a&gt;) использоваться не может. Для сообщества Flash-разработчиков это было настоящим ударом. Вокруг того события было много &lt;a href="http://www.google.ru/search?sourceid=chrome&amp;amp;ie=UTF-8&amp;amp;q=flash+cs5+iphone#sclient=psy&amp;amp;hl=ru&amp;amp;lr=lang_ru&amp;amp;newwindow=1&amp;amp;tbs=lr%3Alang_1ru&amp;amp;q=apple+vs+adobe&amp;amp;aq=0&amp;amp;aqi=g2&amp;amp;aql=&amp;amp;oq=apple+vs+ad&amp;amp;gs_rfai=&amp;amp;pbx=1&amp;amp;fp=5f8ab8df7d87d59a"&gt;шума&lt;/a&gt; и обсуждений...&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.adobe.com/"&gt;Adobe&lt;/a&gt; ничего не оставалось и пришлось смириться с этим. Они заявили, что прекращают все&amp;nbsp;инвестиции&amp;nbsp;в разработку &lt;a href="http://labs.adobe.com/technologies/packagerforiphone/"&gt;Packager for iPhone&lt;/a&gt; и&amp;nbsp;сконцентрируют&amp;nbsp;своё внимание на мобильной платформе &lt;a href="http://www.android.com/"&gt;Android&lt;/a&gt;. Кстати у них это неплохо получилось: &lt;a href="http://labs.adobe.com/technologies/air2/android/"&gt;AIR&lt;/a&gt;&amp;nbsp;и &lt;a href="http://kb2.adobe.com/cps/860/cpsid_86018.html"&gt;FlashPlayer&lt;/a&gt; уже есть на Android.&lt;br /&gt;&lt;br /&gt;9 сентября 2010 года компания Apple &lt;a href="http://www.apple.com/pr/library/2010/09/09statement.html"&gt;заявляет&lt;/a&gt; об отмене ограничений на разработку приложений для iOS используя сторонние технологии. Для разработчиков &lt;b&gt;Flash&lt;/b&gt;-платформы это стало радостной новостью. Adobe видимо тоже это обрадовало, и на забытой странице &lt;a href="http://labs.adobe.com/technologies/packagerforiphone/"&gt;Packager for iPhone&lt;/a&gt; появилось специальное сообщение от 9 сентября о том, что Adobe возобнавляет работы над проектом &lt;b&gt;Packager for iPhone&lt;/b&gt;. Я попробовал перевести его:&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma,Helvetica,sans-serif; font-size: 12px;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="quote" style="border: 1px dashed rgb(204, 204, 204); margin: 10px; padding: 10px;"&gt;&lt;span class="Apple-style-span" style="font-family: Georgia,'Times New Roman',serif;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Недавнее заявление Apple о том, что он снял ограничения на принципы разработки третьими сторонами имеет прямые последствия для Packager для iPhone. Функция доступна для использования разработчиками уже сегодня и сейчас мы возобновим работу по развитию этой функции в будущих выпусках. Это отличная новость для разработчиков, и мы слышим от них, что новые приложения AIR для устройств iOS уже&amp;nbsp;утверждены&amp;nbsp;на Apple App Store. Мы хотим отметить, что ограничения на работу Flash содержимого в браузерах iOS устройств остается в силе.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Tahoma,Helvetica,sans-serif; font-size: 12px; margin: 0px 0px 12px; padding: 0px;"&gt;&lt;/div&gt;&lt;div style="font-family: Tahoma,Helvetica,sans-serif; font-size: 12px; margin: 0px 0px 12px; padding: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman'; font-size: x-large;"&gt;Packager for iPhone&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;Из названия видно, что это упаковщик. Что же именно он упаковывает? А упаковывает он AIR-приложения. Т.е. мы будем разрабатывать AIR-приложения, после чего портировать их в родные для &lt;b&gt;iOS&lt;/b&gt; инсталяторы&amp;nbsp;приложения IPA файлы. Естественно нам будут доступны не все возмодности AIR. Именно поэтому &lt;b&gt;Adobe &lt;/b&gt;собрал отдельную версию &lt;b&gt;AIR SDK&lt;/b&gt; и назвал её «&lt;b&gt;Packager for iPhone»&lt;/b&gt;, который также умеет конвертировать приложения AIR в IPA.&lt;br /&gt;&lt;br /&gt;Использование&amp;nbsp;упаковщика доступно нам в двух вариантах:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Встроенные функции во &lt;b&gt;Flash CS5&lt;/b&gt;&lt;/li&gt;&lt;li&gt;Отлельная библиотека &lt;b&gt;AIR SDK&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;В данном посте я хочу показать пример разработки AIR-приложений для &lt;b&gt;iPhone&lt;/b&gt;, используя&amp;nbsp;&lt;b&gt;FlashDevelop&amp;nbsp;&lt;/b&gt;совместно с&amp;nbsp;&lt;b&gt;AIR SDK&lt;/b&gt;.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Настроим FlashDevelop&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;О том, что такое &lt;a href="http://www.flashdevelop.org/"&gt;FlashDevelop&lt;/a&gt;, как его установить и настроить, я говорить не буду. Если у вас его еще нету, то смотрите пост "&lt;a href="http://as3coder.blogspot.com/2009/09/flashdevelop.html"&gt;FlashDevelop: установка и настройка&lt;/a&gt;". Кроме того, во избежания ошибок компилятора, советую обновить Flex SDK до версии 4.0.1. Найти последнюю версию сборки можно на &lt;a href="http://opensource.adobe.com/wiki/display/flexsdk/Download+Flex+4"&gt;сайте&lt;/a&gt; проекта.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Первым делом нужно скачать &lt;b&gt;Packager for iPhone&lt;/b&gt;. &lt;a href="http://labs.adobe.com/downloads/packagerforiphone.html"&gt;Ссылку &lt;/a&gt;можно найти на &lt;a href="http://labs.adobe.com/technologies/packagerforiphone/"&gt;официальной странице&lt;/a&gt; проекта. После загрузки нужно распаковать данный архив в постоянную директорию. Например у меня он лежит по адресу:&amp;nbsp;&lt;i&gt;C:\Program Files\Adobe\Adobe Packager for iPhone&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;Теперь открываем FlashDevelop и в Tools &amp;gt; Custom Arguments... заводим новый аргумент с именем&amp;nbsp;&lt;b&gt;PackagerForiPhonePath&lt;/b&gt;. В значении указываем&amp;nbsp;выше выбранный&amp;nbsp;путь до библиотеки нашего упаковщика.&lt;br /&gt;&lt;br /&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_S7Dbp6MOKn8/TJMRKWH8z3I/AAAAAAAAAWs/ebw6X6K-Z3Y/s1600/2010-09-16+16+57+16.png" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Загружаем подготовленный мной &lt;a href="https://sites.google.com/site/as3coder/files/410ActionScript3-PackagerforiPhoneProjector.zip?attredirects=0&amp;amp;d=1"&gt;образ проекта&lt;/a&gt;. Кладем его в Tools &amp;gt; Application Data... &amp;gt; Projects. Если всё сделано правильно, должен появиться новый типа проекта "&lt;b&gt;Packager for iPhone Projector&lt;/b&gt;"&lt;br /&gt;&lt;br /&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_S7Dbp6MOKn8/TJMRb0JcmKI/AAAAAAAAAW0/IXdhHrZjrbw/s1600/2010-09-16+17+04+46.png" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Это и есть наш проект для разработки AIR-приложений, которые&amp;nbsp;впоследствии&amp;nbsp;можно будет портировать в IPA-файлы. В следующих постах я буду обновлять образ проекта. На данный момент он имеет только те функции, которые необходимы в рамках данного поста.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Создадим новый проект&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Идем в Project &amp;gt; New Project, называем наш проект "My first application for iPhone", выбираем тип проекта "&lt;b&gt;Packager for iPhone Projector&lt;/b&gt;", жмем "OK". Получаем новый проект.&lt;br /&gt;&lt;br /&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_S7Dbp6MOKn8/TJMRo9K7C_I/AAAAAAAAAW8/3EUb1XDnvBc/s1600/2010-09-16+17+08+10.png" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Сразу пробуем. Нажимаем F5. И видим окно нашего приложения с размерами для iPhone.&lt;br /&gt;&lt;br /&gt;&lt;img border="0" height="320" src="http://3.bp.blogspot.com/_S7Dbp6MOKn8/TJMR11I6J8I/AAAAAAAAAXE/iieLoY_q1T4/s320/2010-09-16+17+18+31.png" width="212" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Здесь мы можем даже проэмулировать поворот девайса. Для этого выбираем Device &amp;gt; Rotate Left или Rotate Right. Окно приложения изменит размеры соотвественно.&lt;br /&gt;&lt;br /&gt;&lt;img border="0" height="233" src="http://2.bp.blogspot.com/_S7Dbp6MOKn8/TJMSEQ47-1I/AAAAAAAAAXM/9GXYkvfLw90/s320/2010-09-16+17+19+02.png" width="320" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Теперь подробнее расмотрим файлы проекта.&lt;br /&gt;&lt;br /&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_S7Dbp6MOKn8/TJMSRufzd_I/AAAAAAAAAXU/dZBdP4R88Fc/s320/2010-09-16+17+42+39.png" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Так как это AIR-приложение мы имеем всё тоже что и в обычном AIR-проекте. Остановимся только на&amp;nbsp;&lt;b&gt;application.xml&lt;/b&gt;. Он имеет небольшие дополнения к стандартным&amp;nbsp;дескрипторам.&lt;/div&gt;&lt;pre class="code" style="width:80px;"&gt;&amp;lt;?xml version=&lt;span class="string"&gt;'1.0'&lt;/span&gt; encoding=&lt;span class="string"&gt;'UTF-8'&lt;/span&gt;?&amp;gt;&lt;br /&gt;&amp;lt;application xmlns=&lt;span class="string"&gt;'http://ns.adobe.com/air/application/2.0'&lt;/span&gt;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;!--&amp;nbsp;&amp;nbsp;--&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;!-- The application ID uniquely identifies your application. &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; The recommended form &lt;span class="keyword"&gt;is&lt;/span&gt; a dot-delimited, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; reverse-DNS-style &lt;span class="keyword"&gt;string&lt;/span&gt;, such &lt;span class="keyword"&gt;as&lt;/span&gt; &lt;span class="string"&gt;'com.company.AppName'&lt;/span&gt;. &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; The compiler uses &lt;span class="keyword"&gt;this&lt;/span&gt; &lt;span class="keyword"&gt;value&lt;/span&gt; &lt;span class="keyword"&gt;as&lt;/span&gt; the bundle ID &lt;span class="keyword"&gt;for&lt;/span&gt; the iPhone application. --&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;id&amp;gt;TestProject&amp;lt;/id&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;!--&amp;nbsp;&amp;nbsp;--&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;!-- The name used &lt;span class="keyword"&gt;for&lt;/span&gt; the iPhone installer file. &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Do not include a plus sign (+) character &lt;span class="keyword"&gt;in&lt;/span&gt; the filename. --&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;filename&amp;gt;TestProject&amp;lt;/filename&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;!--&amp;nbsp;&amp;nbsp;--&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;!-- The name of the application displayed &lt;span class="keyword"&gt;in&lt;/span&gt; the iTunes application and &lt;span class="keyword"&gt;in&lt;/span&gt; the iPhone. &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Do not include a plus sign (+) character &lt;span class="keyword"&gt;in&lt;/span&gt; the name --&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;name&amp;gt;Test Project&amp;lt;/name&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;!--&amp;nbsp;&amp;nbsp;--&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;!-- Helps users to determine which version of your application they are installing. &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; The version &lt;span class="keyword"&gt;is&lt;/span&gt; used &lt;span class="keyword"&gt;as&lt;/span&gt; the CFBundleVersion of the iPhone application. &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; It must be &lt;span class="keyword"&gt;in&lt;/span&gt; a format similar to nnnnn[.nn[.nn]] &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="keyword"&gt;where&lt;/span&gt; n &lt;span class="keyword"&gt;is&lt;/span&gt; a digit &lt;span class="number"&gt;0&lt;/span&gt;-&lt;span class="number"&gt;9&lt;/span&gt; and brackets indicate optional components, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; such &lt;span class="keyword"&gt;as&lt;/span&gt; &lt;span class="number"&gt;1&lt;/span&gt;, &lt;span class="number"&gt;1.0&lt;/span&gt;, or &lt;span class="number"&gt;1.0&lt;/span&gt;.&lt;span class="number"&gt;1&lt;/span&gt;. iPhone versions must contain only digits and &lt;span class="keyword"&gt;decimal&lt;/span&gt; points. &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; iPhone versions can contain up to two &lt;span class="keyword"&gt;decimal&lt;/span&gt; points. --&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;version&amp;gt;&lt;span class="number"&gt;1.0&lt;/span&gt;&amp;lt;/version&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;!--&amp;nbsp;&amp;nbsp;--&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;!-- The element contains the following child elements to specify the properties &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="keyword"&gt;for&lt;/span&gt; of the initial appearance of the application --&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;initialWindow&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;!--&amp;nbsp;&amp;nbsp;--&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;!-- The rendering mode used by the application. There are three possible settings:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;- cpu—The application uses the CPU to render all display objects. &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;No hardware acceleration &lt;span class="keyword"&gt;is&lt;/span&gt; used.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;- gpu—The application uses the iPhone GPU to composite bitmaps.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;- auto—This feature has not been implemented. --&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;renderMode&amp;gt;gpu&amp;lt;/renderMode&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;!--&amp;nbsp;&amp;nbsp;--&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;!-- Identifies the root SWF file to compile &lt;span class="keyword"&gt;into&lt;/span&gt; the iPhone application --&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;content&amp;gt;TestProject.swf&amp;lt;/content&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;!--&amp;nbsp;&amp;nbsp;--&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;!-- Specifies that the application uses the entire screen of the iPhone --&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;fullScreen&amp;gt;&lt;span class="keyword"&gt;false&lt;/span&gt;&amp;lt;/fullScreen&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;!--&amp;nbsp;&amp;nbsp;--&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;!-- Specifies that the initial aspect ratio of the application &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="keyword"&gt;is&lt;/span&gt; &lt;span class="keyword"&gt;in&lt;/span&gt; portrait mode (rather than landscape). &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Note the Default.png file used to define the initial window of the application &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; should be &lt;span class="number"&gt;320&lt;/span&gt; pixels wide and &lt;span class="number"&gt;480&lt;/span&gt; pixels high, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; regardless of &lt;span class="keyword"&gt;this&lt;/span&gt; setting. --&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;aspectRatio&amp;gt;portrait&amp;lt;/aspectRatio&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;!--&amp;nbsp;&amp;nbsp;--&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;!-- Specifies whether the orientation of content &lt;span class="keyword"&gt;in&lt;/span&gt; the application automatically &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; reorients &lt;span class="keyword"&gt;as&lt;/span&gt; the device itself changes physical orientation --&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;autoOrients&amp;gt;&lt;span class="keyword"&gt;true&lt;/span&gt;&amp;lt;/autoOrients&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/initialWindow&amp;gt;&lt;br /&gt;&amp;lt;/application&amp;gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;На данный момент в нем не полный список дескрипторов, а только необходимый для разработки и отладки.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;В следующих версиях образа проекта я буду добавлять их по необходимости. Ну если не втерпеж, полный список можно найти в официальном справочнике "&lt;a href="http://help.adobe.com/en_US/as3/iphone/WS789ea67d3e73a8b2-48bca492124b39ac5e2-7ffb.html"&gt;Setting iPhone application properties in the application descriptor file&lt;/a&gt;"&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Пробуем что-нибудь написать&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Я написал вот такой&amp;nbsp;небольшой&amp;nbsp;код:&lt;br /&gt;&lt;div style="background-color: white; font-family: Tahoma,Helvetica,sans-serif; font-size: 12px; margin: 5px; padding: 0px; width: 800px;"&gt;&lt;pre class="code" style="background-color: #fbf9f5; border: 1px solid rgb(179, 179, 179); clear: both; font-family: Courier,monospace ! important; font-size: 12px; margin-top: 6px; overflow: auto; padding: 8px 8px 8px 20px;"&gt;package &lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;import flash.display.StageAlign;&lt;br /&gt;&amp;nbsp;&amp;nbsp;import flash.display.StageScaleMode;&lt;br /&gt;&amp;nbsp;&amp;nbsp;import flash.display.Stage;&lt;br /&gt;&amp;nbsp;&amp;nbsp;import flash.display.Sprite;&lt;br /&gt;&amp;nbsp;&amp;nbsp;import flash.events.Event;&lt;br /&gt;&amp;nbsp;&amp;nbsp;import flash.events.StageOrientationEvent;&lt;br /&gt;&amp;nbsp;&amp;nbsp;import flash.text.TextField;&lt;br /&gt;&amp;nbsp;&amp;nbsp;import flash.text.TextFieldAutoSize;&lt;br /&gt;&amp;nbsp;&amp;nbsp;import flash.text.TextFormatAlign;&lt;br /&gt;&amp;nbsp;&amp;nbsp;import flash.text.TextFormat;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;span class="comment" style="color: grey; cursor: text ! important; font-family: Courier,monospace; font-size: 12px; padding: 0px ! important; text-decoration: none ! important;"&gt;/**&lt;br /&gt;&amp;nbsp;&amp;nbsp; * ...&lt;br /&gt;&amp;nbsp;&amp;nbsp; * @author AS3Coder&lt;br /&gt;&amp;nbsp;&amp;nbsp; */&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;span class="keyword" style="color: blue; font-family: Courier,monospace; font-size: 12px;"&gt;public&lt;/span&gt; &lt;span class="keyword" style="color: blue; font-family: Courier,monospace; font-size: 12px;"&gt;class&lt;/span&gt; Main extends Sprite &lt;br /&gt;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword" style="color: blue; font-family: Courier,monospace; font-size: 12px;"&gt;private&lt;/span&gt; &lt;span class="keyword" style="color: blue; font-family: Courier,monospace; font-size: 12px;"&gt;var&lt;/span&gt; message_txt:TextField;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="comment" style="color: grey; cursor: text ! important; font-family: Courier,monospace; font-size: 12px; padding: 0px ! important; text-decoration: none ! important;"&gt;//&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;function Main():&lt;span class="keyword" style="color: blue; font-family: Courier,monospace; font-size: 12px;"&gt;void&lt;/span&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;addEventListener(Event.ADDED_TO_STAGE, onAddToStage, &lt;span class="keyword" style="color: blue; font-family: Courier,monospace; font-size: 12px;"&gt;false&lt;/span&gt;, &lt;span class="number" style="color: green; font-family: Courier,monospace; font-size: 12px;"&gt;0&lt;/span&gt;, &lt;span class="keyword" style="color: blue; font-family: Courier,monospace; font-size: 12px;"&gt;true&lt;/span&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="comment" style="color: grey; cursor: text ! important; font-family: Courier,monospace; font-size: 12px; padding: 0px ! important; text-decoration: none ! important;"&gt;//&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword" style="color: blue; font-family: Courier,monospace; font-size: 12px;"&gt;private&lt;/span&gt; function create ():&lt;span class="keyword" style="color: blue; font-family: Courier,monospace; font-size: 12px;"&gt;void&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;message_txt = &lt;span class="keyword" style="color: blue; font-family: Courier,monospace; font-size: 12px;"&gt;new&lt;/span&gt; TextField();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;message_txt.autoSize = TextFieldAutoSize.LEFT;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;message_txt.defaultTextFormat = &lt;span class="keyword" style="color: blue; font-family: Courier,monospace; font-size: 12px;"&gt;new&lt;/span&gt; TextFormat(&lt;span class="string" style="color: teal; font-family: Courier,monospace; font-size: 12px;"&gt;"Tahoma"&lt;/span&gt;, &lt;span class="number" style="color: green; font-family: Courier,monospace; font-size: 12px;"&gt;11&lt;/span&gt;, &lt;span class="number" style="color: green; font-family: Courier,monospace; font-size: 12px;"&gt;0&lt;/span&gt;, &lt;span class="keyword" style="color: blue; font-family: Courier,monospace; font-size: 12px;"&gt;false&lt;/span&gt;, &lt;span class="keyword" style="color: blue; font-family: Courier,monospace; font-size: 12px;"&gt;false&lt;/span&gt;, &lt;span class="keyword" style="color: blue; font-family: Courier,monospace; font-size: 12px;"&gt;false&lt;/span&gt;, &lt;span class="keyword" style="color: blue; font-family: Courier,monospace; font-size: 12px;"&gt;null&lt;/span&gt;, &lt;span class="keyword" style="color: blue; font-family: Courier,monospace; font-size: 12px;"&gt;null&lt;/span&gt;, TextFormatAlign.CENTER);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;stage.addChild(message_txt);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;stage.dispatchEvent(&lt;span class="keyword" style="color: blue; font-family: Courier,monospace; font-size: 12px;"&gt;new&lt;/span&gt; StageOrientationEvent(StageOrientationEvent.ORIENTATION_CHANGE));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="comment" style="color: grey; cursor: text ! important; font-family: Courier,monospace; font-size: 12px; padding: 0px ! important; text-decoration: none ! important;"&gt;//&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword" style="color: blue; font-family: Courier,monospace; font-size: 12px;"&gt;private&lt;/span&gt; function onAddToStage (e:Event):&lt;span class="keyword" style="color: blue; font-family: Courier,monospace; font-size: 12px;"&gt;void&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;removeEventListener(Event.ADDED_TO_STAGE, onAddToStage, &lt;span class="keyword" style="color: blue; font-family: Courier,monospace; font-size: 12px;"&gt;false&lt;/span&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="comment" style="color: grey; cursor: text ! important; font-family: Courier,monospace; font-size: 12px; padding: 0px ! important; text-decoration: none ! important;"&gt;//&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;stage.align = StageAlign.TOP_LEFT;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;stage.scaleMode = StageScaleMode.NO_SCALE;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;stage.addEventListener(StageOrientationEvent.ORIENTATION_CHANGE, onStageOrientationChange, &lt;span class="keyword" style="color: blue; font-family: Courier,monospace; font-size: 12px;"&gt;false&lt;/span&gt;, &lt;span class="number" style="color: green; font-family: Courier,monospace; font-size: 12px;"&gt;0&lt;/span&gt;, &lt;span class="keyword" style="color: blue; font-family: Courier,monospace; font-size: 12px;"&gt;true&lt;/span&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="comment" style="color: grey; cursor: text ! important; font-family: Courier,monospace; font-size: 12px; padding: 0px ! important; text-decoration: none ! important;"&gt;//&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;create();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="comment" style="color: grey; cursor: text ! important; font-family: Courier,monospace; font-size: 12px; padding: 0px ! important; text-decoration: none ! important;"&gt;//&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword" style="color: blue; font-family: Courier,monospace; font-size: 12px;"&gt;private&lt;/span&gt; function onStageOrientationChange (e:StageOrientationEvent):&lt;span class="keyword" style="color: blue; font-family: Courier,monospace; font-size: 12px;"&gt;void&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;message_txt.text = &lt;span class="string" style="color: teal; font-family: Courier,monospace; font-size: 12px;"&gt;"My first application for iPhone\nStage orientation: "&lt;/span&gt; + stage.orientation;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;message_txt.x = stage.stageWidth * .&lt;span class="number" style="color: green; font-family: Courier,monospace; font-size: 12px;"&gt;5&lt;/span&gt; - message_txt.width * .&lt;span class="number" style="color: green; font-family: Courier,monospace; font-size: 12px;"&gt;5&lt;/span&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;message_txt.y = stage.stageHeight * .&lt;span class="number" style="color: green; font-family: Courier,monospace; font-size: 12px;"&gt;5&lt;/span&gt; - message_txt.height * .&lt;span class="number" style="color: green; font-family: Courier,monospace; font-size: 12px;"&gt;5&lt;/span&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;/pre&gt;&lt;/div&gt;Результат получился такой:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_S7Dbp6MOKn8/TJMSc_6EBMI/AAAAAAAAAXc/zD2nDKzB5GY/s1600/2010-09-16+18+04+05.png"&gt;&lt;img border="0" height="320" src="http://1.bp.blogspot.com/_S7Dbp6MOKn8/TJMSc_6EBMI/AAAAAAAAAXc/zD2nDKzB5GY/s320/2010-09-16+18+04+05.png" width="211" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Попробуем повернуть:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_S7Dbp6MOKn8/TJMSulHzbiI/AAAAAAAAAXk/QHaxocwN5xk/s1600/2010-09-16+18+04+43.png"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_S7Dbp6MOKn8/TJMSulHzbiI/AAAAAAAAAXk/QHaxocwN5xk/s320/2010-09-16+18+04+43.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Работает :)&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span"&gt;Если вы еще не имели опыт разработки AIR-приложений, то вам сюда "&lt;/span&gt;&lt;a href="http://as3coder.blogspot.com/2010/04/air-flashdevelop.html"&gt;Создание AIR-приложения во FlashDevelop&lt;/a&gt;&lt;span class="Apple-style-span"&gt;".&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Компиляция IPA-файлов&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Упаковка IPA-файлов - это отдельная задача, которая требует реального устройства и получения сертификатов от Apple. Поэтому я отпущу пока эту тему. Как только у меня будет весь необходимый материал, я обязательно опишу по шагам всё решение этой задачи.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&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;ul&gt;&lt;li&gt;Какие классы можно использовать в AIR-приложениях для iPhone, а какие &lt;a href="http://help.adobe.com/en_US/as3/iphone/WS789ea67d3e73a8b24b55b57a124b32b5b57-7fff.html"&gt;нельзя&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://help.adobe.com/en_US/as3/iphone/WS789ea67d3e73a8b24b55b57a124b32b5b57-7ffe.html"&gt;Особенности разработки под мобильные устройства и использования&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;В довесок хочу сказать, что Apple также обещала в скором времени выпустить свод правил для приложений, публикуемых в &lt;a href="http://www.apple.com/iphone/apps-for-iphone/"&gt;App Store&lt;/a&gt;. Так что ждем. А пока читаем публикацию Роста на эту тему: «&lt;a href="http://flash-ripper.com/flash-on-ipad-guidelines"&gt;Flash на iPad и "таблетках": о чем надо знать разработчикам&lt;/a&gt;».&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6470399064206765359-2661876872702108455?l=as3coder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://as3coder.blogspot.com/feeds/2661876872702108455/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://as3coder.blogspot.com/2010/09/iphone-actionscript-30-flashdevelop.html#comment-form' title='Комментарии: 7'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6470399064206765359/posts/default/2661876872702108455'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6470399064206765359/posts/default/2661876872702108455'/><link rel='alternate' type='text/html' href='http://as3coder.blogspot.com/2010/09/iphone-actionscript-30-flashdevelop.html' title='Разработка приложений для iPhone на ActionScript 3.0 во FlashDevelop (Packager for iPhone)'/><author><name>AS3Coder</name><uri>http://www.blogger.com/profile/14877548685763682250</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_S7Dbp6MOKn8/S3ZqfEQ54vI/AAAAAAAAAMI/j2FNwRKPohE/S220/129018458834145924.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_S7Dbp6MOKn8/TJMRKWH8z3I/AAAAAAAAAWs/ebw6X6K-Z3Y/s72-c/2010-09-16+16+57+16.png' height='72' width='72'/><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6470399064206765359.post-2362429866997859701</id><published>2010-09-06T14:29:00.001+04:00</published><updated>2010-09-06T14:29:23.913+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='flash player'/><category scheme='http://www.blogger.com/atom/ns#' term='как?'/><title type='text'>Как очистить информацию, накопленную FlashPlayer'ом</title><content type='html'>Очень часто мы используем возможности&amp;nbsp;&lt;a href="http://as3coder.blogspot.com/2010/08/sharedobject.html"&gt;SharedObject&lt;/a&gt; для хранения какой-то временной информации на компьютере пользователя, так называемый &lt;b&gt;кэш&lt;span class="Apple-style-span" style="font-weight: normal;"&gt; &lt;/span&gt;&lt;/b&gt;FlashPlayer'a. Иногда возникают ситуации, когда что-то сохранилось и это нужно очистить.&lt;br /&gt;&lt;br /&gt;Я, как разработчик, пойду в директорию &lt;i&gt;\AppData\Roaming\Macromedia\Flash Player\#SharedObjects\&lt;/i&gt;, найду соответсвующую папку и потеру её. Но если такую же операцию необходимо будет выполнить клиенту, то такие действия могут показаться ему «дикими».&lt;br /&gt;&lt;br /&gt;&lt;div&gt;Так вот для этих целей у Adobe имеется специальный&amp;nbsp;&lt;b&gt;менеджер настроек Adobe Flash Player&lt;/b&gt;, который доступен по адресу&amp;nbsp;&lt;a href="http://www.macromedia.com/support/documentation/ru/flashplayer/help/settings_manager07.html"&gt;http://www.macromedia.com/support/documentation/ru/flashplayer/help/settings_manager07.html&lt;/a&gt;. Кстати в последних версиях плеера, по-моему с 10 версии, в контекстном меню появилась ссылка на эту страницу под названием «Глобальные настройки», раньше её не было.&lt;/div&gt;&lt;br /&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_S7Dbp6MOKn8/TITAvpCd2fI/AAAAAAAAAWQ/WFpZT-gzu0Y/s320/2010-09-06+14+18+17.png" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;Для управления хранимой информации посредством SharedObject нам необходимо открыть вкладку "&lt;a href="http://www.macromedia.com/support/documentation/ru/flashplayer/help/settings_manager07.html"&gt;Параметры хранения веб-сайтов&lt;/a&gt;"&lt;/div&gt;&lt;br /&gt;&lt;img border="0" height="344" src="http://2.bp.blogspot.com/_S7Dbp6MOKn8/TITBCH6H_iI/AAAAAAAAAWY/VYOBAjxQEv8/s640/2010-09-06+14+22+27.png" width="640" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;Здесь мы можем увидеть:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Какие сайты хранят информацию на вашем компьютере.&lt;/li&gt;&lt;li&gt;Сколько можно и сколько уже использует дискового&amp;nbsp;пространства&amp;nbsp;тот или иной сайт&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;Здесь же можно и удалить всю информацию для отдельного домена или для всех сразу.&amp;nbsp;Мне кажется, такой способ очистки информации клиентам понравится больше.&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6470399064206765359-2362429866997859701?l=as3coder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://as3coder.blogspot.com/feeds/2362429866997859701/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://as3coder.blogspot.com/2010/09/flashplayer.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6470399064206765359/posts/default/2362429866997859701'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6470399064206765359/posts/default/2362429866997859701'/><link rel='alternate' type='text/html' href='http://as3coder.blogspot.com/2010/09/flashplayer.html' title='Как очистить информацию, накопленную FlashPlayer&apos;ом'/><author><name>AS3Coder</name><uri>http://www.blogger.com/profile/14877548685763682250</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_S7Dbp6MOKn8/S3ZqfEQ54vI/AAAAAAAAAMI/j2FNwRKPohE/S220/129018458834145924.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_S7Dbp6MOKn8/TITAvpCd2fI/AAAAAAAAAWQ/WFpZT-gzu0Y/s72-c/2010-09-06+14+18+17.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6470399064206765359.post-1229921356817405847</id><published>2010-08-27T17:50:00.000+04:00</published><updated>2010-08-27T17:50:26.457+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='as3'/><category scheme='http://www.blogger.com/atom/ns#' term='начинающим'/><title type='text'>Распознавание лиц на изображении в ActionScript 3.0</title><content type='html'>&lt;div style="-webkit-text-size-adjust: none; background-color: white; font-family: Tahoma, Helvetica, sans-serif; font-size: 12px; margin-bottom: 5px; margin-left: 5px; margin-right: 5px; margin-top: 5px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;div class="quote" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: dashed; border-bottom-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: dashed; border-left-width: 1px; border-right-color: rgb(204, 204, 204); border-right-style: dashed; border-right-width: 1px; border-top-color: rgb(204, 204, 204); border-top-style: dashed; border-top-width: 1px; font-size: 12px; margin-bottom: 10px; margin-left: 10px; margin-right: 10px; margin-top: 10px; padding-bottom: 10px; padding-left: 10px; padding-right: 10px; padding-top: 10px;"&gt;&lt;span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"&gt;Продолжение темы: "&lt;a href="http://as3coder.blogspot.com/2010/08/web.html"&gt;Сохранение изображения с Web-камеры&lt;/a&gt;"&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman';"&gt;&lt;span class="Apple-style-span" style="-webkit-text-size-adjust: auto; font-size: medium;"&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma, Helvetica, sans-serif; font-size: small;"&gt;&lt;span class="Apple-style-span" style="-webkit-text-size-adjust: none; font-size: 12px;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;На многих фотоаппаратах, даже самых простых "мыльницах" появилась такая функция, как&amp;nbsp;&lt;b&gt;распознавание&amp;nbsp;лиц&lt;/b&gt;. Иногда, это действительно удобно и даже необходимо.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;А ведь и мы имеем доступ к Web-камере во FlashPlayer, почему бы и нам не реализовать такой механизм?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Первый над этим вопросом&amp;nbsp;видимо&amp;nbsp;задумался&amp;nbsp;&lt;a href="http://maaash.jp/"&gt;Ohtsuka Masakazu&lt;/a&gt;, и &lt;a href="http://maaash.jp/as3/as3marilena-object-detection-in-as3/"&gt;портировал&lt;/a&gt; библиотеку компьютерного зрения&amp;nbsp;&lt;a href="http://opencv.willowgarage.com/wiki/"&gt;OpenCV&lt;/a&gt; написанную на &lt;b&gt;C++&lt;/b&gt;&amp;nbsp;на &lt;b&gt;ActionScript 3.0&lt;/b&gt; и опубликовал её на &lt;a href="http://www.libspark.org/wiki/mash/Marilena"&gt;Spark project&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Работает механизм следующим образом: ему подсовывают .&lt;b&gt;xml&lt;/b&gt;-файлы, в которых описываются необходимые свойства для распознавания тех или иных объектов, после чего идет поиск на изображении. Размер такого .xml-файла &lt;b&gt;для распознавания лиц&lt;/b&gt;&amp;nbsp;составляет что-то около&amp;nbsp;1 Мб и загружать его по сети не очень корректно. Тогда&amp;nbsp;&lt;a href="http://maaash.jp/"&gt;Ohtsuka Masakazu&lt;/a&gt;&amp;nbsp;запаковал его в &lt;b&gt;.zip&lt;/b&gt;-архив, который получился в 100 Кб. И уже загрузив архив, использую&amp;nbsp;библиотеку&amp;nbsp;&lt;a href="http://codeazur.com.br/lab/fzip/"&gt;FZip&lt;/a&gt;, он его распаковывал внутри &lt;b&gt;FlashPlayer&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Казалось, всё прекрасно работает и можно с радостью использовать&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Но не тут-то было. Лишний запрос на запакованный .&lt;b&gt;xml&lt;/b&gt;-файл, лишний код для его распаковки - всё это не понравилось&amp;nbsp;&lt;a href="http://www.quasimondo.com/"&gt;Mario Klingemann&lt;/a&gt;. Он избавился от загрузки внешнего .xml-файла переписав его содержимое в отдельный класс сократив его размер до 50 Кб. Также он провел некоторые&amp;nbsp;оптимизации&amp;nbsp;внутренних&amp;nbsp;алгоритмов библиотеки.&lt;br /&gt;&lt;br /&gt;Еще глубже в алгоритмы этого механизма окунулся&amp;nbsp;&lt;a href="http://blog.inspirit.ru/"&gt;Eugene Zatepyakin&lt;/a&gt;. Он добавил&amp;nbsp;распознавание&amp;nbsp;глаз, носа и губ. Подробнее смотрите &lt;a href="http://blog.inspirit.ru/?p=416"&gt;здесь&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Как всем эти пользоваться?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Больше всего мне понравился вариант от&amp;nbsp;&lt;a href="http://www.quasimondo.com/"&gt;Mario Klingemann&lt;/a&gt;. Для примера я буду использовать &lt;a href="http://www.quasimondo.com/examples/face_detection/Marilena_mod10.zip"&gt;исходники&lt;/a&gt; библиотеки после его оптимизации.&lt;br /&gt;&lt;br /&gt;Импортируем пакет классов&amp;nbsp;&lt;b&gt;jp.maaash&lt;/b&gt;. Создаем экземпляр класса &lt;b&gt;ObjectDetector&lt;/b&gt; и&amp;nbsp;подписываемся&amp;nbsp;на событие &lt;b&gt;ObjectDetectorEvent.DETECTION_COMPLETE&lt;/b&gt;.&lt;br /&gt;&lt;span class="Apple-style-span" style="-webkit-text-size-adjust: none; font-family: Tahoma, Helvetica, sans-serif; font-size: 12px;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;pre class="code" style="background-color: #fbf9f5; border-bottom-color: rgb(179, 179, 179); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(179, 179, 179); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(179, 179, 179); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(179, 179, 179); border-top-style: solid; border-top-width: 1px; clear: both; font-family: Courier, monospace !important; font-size: 12px; margin-top: 6px; overflow-x: auto; overflow-y: auto; padding-bottom: 8px; padding-left: 20px; padding-right: 8px; padding-top: 8px;"&gt;&lt;span style="color: black; font-family: Courier, monospace; font-size: 12px;"&gt;import jp&lt;/span&gt;&lt;span class="preprocessor" style="color: black; font-family: Courier, monospace; font-size: 12px;"&gt;.maaash&lt;/span&gt;&lt;span style="color: black; font-family: Courier, monospace; font-size: 12px;"&gt;.*&lt;/span&gt;&lt;span class="comment" style="color: black; cursor: text !important; font-family: Courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;;&lt;/span&gt;&lt;span style="color: black; font-family: Courier, monospace; font-size: 12px;"&gt;&lt;br /&gt;...&lt;br /&gt;var detector:ObjectDetector = new ObjectDetector()&lt;/span&gt;&lt;span class="comment" style="color: black; cursor: text !important; font-family: Courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;;&lt;/span&gt;&lt;span style="color: black; font-family: Courier, monospace; font-size: 12px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="number" style="color: black; font-family: Courier, monospace; font-size: 12px;"&gt;d&lt;/span&gt;&lt;span class="number" style="color: black; font-family: Courier, monospace; font-size: 12px;"&gt;e&lt;/span&gt;&lt;span style="color: black; font-family: Courier, monospace; font-size: 12px;"&gt;tector&lt;/span&gt;&lt;span class="preprocessor" style="color: black; font-family: Courier, monospace; font-size: 12px;"&gt;.addEventListener&lt;/span&gt;&lt;span style="color: black; font-family: Courier, monospace; font-size: 12px;"&gt;(ObjectDetectorEvent&lt;/span&gt;&lt;span class="preprocessor" style="color: black; font-family: Courier, monospace; font-size: 12px;"&gt;.DETECTION&lt;/span&gt;&lt;span style="color: black; font-family: Courier, monospace; font-size: 12px;"&gt;_COMPLETE, onDetectorComplete)&lt;/span&gt;&lt;span class="comment" style="color: black; cursor: text !important; font-family: Courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;Теперь мы можем попросить наш детектор распознать лица на заданном изображении.&amp;nbsp;Вызываем у него метод &lt;b&gt;detect &lt;/b&gt;c единственным параметром - ссылкой на данные изображения типа &lt;a href="http://help.adobe.com/ru_RU/AS3LCR/Flash_10.0/flash/display/BitmapData.html"&gt;flash.bitmap.BitmapData&lt;/a&gt;.&lt;br /&gt;&lt;span class="Apple-style-span" style="-webkit-text-size-adjust: none; font-family: Tahoma, Helvetica, sans-serif; font-size: 12px;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;pre class="code" style="background-color: #fbf9f5; border-bottom-color: rgb(179, 179, 179); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(179, 179, 179); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(179, 179, 179); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(179, 179, 179); border-top-style: solid; border-top-width: 1px; clear: both; font-family: Courier, monospace !important; font-size: 12px; margin-top: 6px; overflow-x: auto; overflow-y: auto; padding-bottom: 8px; padding-left: 20px; padding-right: 8px; padding-top: 8px;"&gt;detector.detect(bitmapData) &lt;span class="comment" style="color: grey; cursor: text !important; font-family: Courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;// bitmapData - данные изображения, на котором следует которое следует распознать лица&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;После того, как распознавание закончится, детектор отправит&amp;nbsp;соответствующее&amp;nbsp;событие&amp;nbsp;&lt;b&gt;ObjectDetectorEvent.DETECTION_COMPLETE&lt;/b&gt;, в теле которого будет список&amp;nbsp;распознанных&amp;nbsp;областей.&lt;br /&gt;&lt;span class="Apple-style-span" style="-webkit-text-size-adjust: none; font-family: Tahoma, Helvetica, sans-serif; font-size: 12px;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;pre class="code" style="background-color: #fbf9f5; border-bottom-color: rgb(179, 179, 179); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(179, 179, 179); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(179, 179, 179); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(179, 179, 179); border-top-style: solid; border-top-width: 1px; clear: both; font-family: Courier, monospace !important; font-size: 12px; margin-top: 6px; overflow-x: auto; overflow-y: auto; padding-bottom: 8px; padding-left: 20px; padding-right: 8px; padding-top: 8px;"&gt;&lt;span class="keyword" style="color: black; font-family: Courier, monospace; font-size: 12px;"&gt;private&lt;/span&gt;&lt;span style="color: black; font-family: Courier, monospace; font-size: 12px;"&gt; &lt;/span&gt;&lt;span class="keyword" style="color: black; font-family: Courier, monospace; font-size: 12px;"&gt;function&lt;/span&gt;&lt;span style="color: black; font-family: Courier, monospace; font-size: 12px;"&gt; onDetectorComplete (e:ObjectDetectorEvent):void&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="keyword" style="color: black; font-family: Courier, monospace; font-size: 12px;"&gt;var&lt;/span&gt;&lt;span style="color: black; font-family: Courier, monospace; font-size: 12px;"&gt; arr:&lt;/span&gt;&lt;span class="keyword" style="color: black; font-family: Courier, monospace; font-size: 12px;"&gt;Array&lt;/span&gt;&lt;span style="color: black; font-family: Courier, monospace; font-size: 12px;"&gt; = e.rects; &lt;/span&gt;&lt;span class="comment" style="color: black; cursor: text !important; font-family: Courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;// Список распознаных областей&lt;/span&gt;&lt;span style="color: black; font-family: Courier, monospace; font-size: 12px;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;...&lt;br /&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;object align="middle" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" height="355" id="main" width="440"&gt; &lt;param name="allowScriptAccess" value="sameDomain" /&gt;&lt;param name="allowFullScreen" value="false" /&gt;&lt;param name="movie" value="http://sites.google.com/site/as3coder/files/AS3CoderDetectImage.swf" /&gt;&lt;param name="quality" value="high" /&gt;&lt;param name="bgcolor" value="#F0F0F0" /&gt;&lt;embed src="http://sites.google.com/site/as3coder/files/AS3CoderDetectImage.swf" quality="high" bgcolor="#F0F0F0" width="440" height="355" name="main" align="middle" allowScriptAccess="sameDomain" allowFullScreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6470399064206765359-1229921356817405847?l=as3coder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://as3coder.blogspot.com/feeds/1229921356817405847/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://as3coder.blogspot.com/2010/08/actionscript-30.html#comment-form' title='Комментарии: 16'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6470399064206765359/posts/default/1229921356817405847'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6470399064206765359/posts/default/1229921356817405847'/><link rel='alternate' type='text/html' href='http://as3coder.blogspot.com/2010/08/actionscript-30.html' title='Распознавание лиц на изображении в ActionScript 3.0'/><author><name>AS3Coder</name><uri>http://www.blogger.com/profile/14877548685763682250</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_S7Dbp6MOKn8/S3ZqfEQ54vI/AAAAAAAAAMI/j2FNwRKPohE/S220/129018458834145924.jpg'/></author><thr:total>16</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6470399064206765359.post-7635355598404363915</id><published>2010-08-25T11:55:00.001+04:00</published><updated>2010-08-25T13:51:54.933+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='as3'/><category scheme='http://www.blogger.com/atom/ns#' term='начинающим'/><title type='text'>Сохранение изображения с Web-камеры</title><content type='html'>&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;1. Обращение к камере&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Для работы с web-камерами во &lt;b&gt;FlashPlayer &lt;/b&gt;имеется специальный класс &lt;a href="http://help.adobe.com/ru_RU/AS3LCR/Flash_10.0/flash/media/Camera.html"&gt;flash.media.Camera&lt;/a&gt;. Чтобы получить список доступных камер на компьютере необходимо спросить его у статического свойства &lt;a href="http://help.adobe.com/ru_RU/AS3LCR/Flash_10.0/flash/media/Camera.html#names"&gt;names&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;pre class="code" style="background-color: #fbf9f5; border-bottom-color: rgb(179, 179, 179); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(179, 179, 179); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(179, 179, 179); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(179, 179, 179); border-top-style: solid; border-top-width: 1px; clear: both; font-family: Courier, monospace !important; font-size: 12px; margin-top: 6px; overflow-x: auto; overflow-y: auto; padding-bottom: 8px; padding-left: 20px; padding-right: 8px; padding-top: 8px;"&gt;&lt;span class="keyword" style="color: black; font-family: Courier, monospace; font-size: 12px;"&gt;var&lt;/span&gt;&lt;span style="color: black; font-family: Courier, monospace; font-size: 12px;"&gt; &lt;/span&gt;&lt;span class="keyword" style="color: black; font-family: Courier, monospace; font-size: 12px;"&gt;list&lt;/span&gt;&lt;span style="color: black; font-family: Courier, monospace; font-size: 12px;"&gt;:&lt;/span&gt;&lt;span class="keyword" style="color: black; font-family: Courier, monospace; font-size: 12px;"&gt;Array&lt;/span&gt; = Camera.names;&lt;/pre&gt;Теперь чтобы обратиться к конкретной камере, нужно вызвать статический метод &lt;a href="http://help.adobe.com/ru_RU/AS3LCR/Flash_10.0/flash/media/Camera.html#getCamera()"&gt;getCamera&lt;/a&gt;, где в качестве&amp;nbsp;параметра&amp;nbsp;передается имя камеры из полученного выше списка. Метод вернет экземпляр класса&amp;nbsp;&lt;b&gt;flash.media.Camera&lt;/b&gt;.&lt;br /&gt;&lt;span class="Apple-style-span" style="-webkit-text-size-adjust: none; font-family: Tahoma, Helvetica, sans-serif; font-size: 12px;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;pre class="code" style="background-color: #fbf9f5; border-bottom-color: rgb(179, 179, 179); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(179, 179, 179); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(179, 179, 179); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(179, 179, 179); border-top-style: solid; border-top-width: 1px; clear: both; font-family: Courier, monospace !important; font-size: 12px; margin-top: 6px; overflow-x: auto; overflow-y: auto; padding-bottom: 8px; padding-left: 20px; padding-right: 8px; padding-top: 8px;"&gt;var camera:Camera = Camera.getCamera(list[0]);&lt;/pre&gt;Но как &lt;a href="http://the33cows.com/flex/2007/11/06/25/"&gt;заметил&lt;/a&gt; Илья Панин, обращение к камере в &lt;b&gt;ActionScript 3.0&lt;/b&gt; работает не так, как это описано выше. Казалось бы всё правильно и взято из официальной &lt;a href="http://help.adobe.com/ru_RU/AS3LCR/Flash_10.0/"&gt;справки&lt;/a&gt;. Но это не так. В&amp;nbsp;качестве&amp;nbsp;параметра методу &lt;b&gt;getCamera &lt;/b&gt;необходимо передавать индекс камеры, а не её название, причем в виде строки.&lt;br /&gt;&lt;span class="Apple-style-span" style="-webkit-text-size-adjust: none; font-family: Tahoma, Helvetica, sans-serif; font-size: 12px;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;pre class="code" style="background-color: #fbf9f5; border-bottom-color: rgb(179, 179, 179); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(179, 179, 179); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(179, 179, 179); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(179, 179, 179); border-top-style: solid; border-top-width: 1px; clear: both; font-family: Courier, monospace !important; font-size: 12px; margin-top: 6px; overflow-x: auto; overflow-y: auto; padding-bottom: 8px; padding-left: 20px; padding-right: 8px; padding-top: 8px;"&gt;&lt;span class="keyword" style="color: black; font-family: Courier, monospace; font-size: 12px;"&gt;var&lt;/span&gt; camera:Camera = Camera.getCamera(index.toString()); &lt;span class="comment" style="color: grey; cursor: text !important; font-family: Courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;// index - порядковый номер камеры&lt;/span&gt;&lt;/pre&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;2. Вывод изображения с камеры на сцену&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Изображение с камеры - это видео-поток, и для его воспроизведения воспользуется классом &amp;nbsp;&amp;nbsp;&lt;a href="http://help.adobe.com/ru_RU/AS3LCR/Flash_10.0/flash/media/Video.html"&gt;flash.media.Video&lt;/a&gt;.&amp;nbsp;Создаем экземпляр класса и добавляем его на сцену.&amp;nbsp;В конструкторе указывается ширина и высота видео.&lt;br /&gt;&lt;br /&gt;&lt;pre class="code" style="background-color: #fbf9f5; border-bottom-color: rgb(179, 179, 179); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(179, 179, 179); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(179, 179, 179); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(179, 179, 179); border-top-style: solid; border-top-width: 1px; clear: both; font-family: Courier, monospace !important; font-size: 12px; margin-top: 6px; overflow-x: auto; overflow-y: auto; padding-bottom: 8px; padding-left: 20px; padding-right: 8px; padding-top: 8px;"&gt;var video:Video = new Video(320, 240);&lt;br /&gt;addChild(video);&lt;/pre&gt;Теперь чтобы отобразить в экземпляре полученного видео изображение с камеры необходимо её просто прикрепить. Вызываем метод &lt;a href="http://help.adobe.com/ru_RU/AS3LCR/Flash_10.0/flash/media/Video.html#attachCamera()"&gt;attachCamera&lt;/a&gt;, где в&amp;nbsp;качестве&amp;nbsp;параметра указываем ссылку на камеру.&lt;br /&gt;&lt;span class="Apple-style-span" style="-webkit-text-size-adjust: none; font-family: Tahoma, Helvetica, sans-serif; font-size: 12px;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;pre class="code" style="background-color: #fbf9f5; border-bottom-color: rgb(179, 179, 179); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(179, 179, 179); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(179, 179, 179); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(179, 179, 179); border-top-style: solid; border-top-width: 1px; clear: both; font-family: Courier, monospace !important; font-size: 12px; margin-top: 6px; overflow-x: auto; overflow-y: auto; padding-bottom: 8px; padding-left: 20px; padding-right: 8px; padding-top: 8px;"&gt;video.attachCamera(camera);&lt;/pre&gt;После того, как мы попытаемся что-нибудь сделать с изображением с камеры (показать его на сцене, отправить на сервер) &lt;b&gt;FlashPlayer&lt;/b&gt; попросит разрешение на это действие у пользователя. Появится диалоговое окно с&amp;nbsp;соответствующим&amp;nbsp;вопросом.&lt;br /&gt;&lt;br /&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_S7Dbp6MOKn8/THTFxdRm2DI/AAAAAAAAAV0/OuvWilWYuec/s320/2010-08-25+11+27+25.png" /&gt;&lt;br /&gt;&lt;br /&gt;После выбора одного из пунктов камера отправляет событие &lt;a href="http://help.adobe.com/ru_RU/AS3LCR/Flash_10.0/flash/events/StatusEvent.html"&gt;flash.event.StatusEvent&lt;/a&gt; типа &lt;a href="http://help.adobe.com/ru_RU/AS3LCR/Flash_10.0/flash/events/StatusEvent.html#STATUS"&gt;STATUS&lt;/a&gt;. В обработчике этого события можно даже узнать о выборе пользователя. У экземпляра камеры имеется свойство &lt;a href="http://help.adobe.com/ru_RU/AS3LCR/Flash_10.0/flash/media/Camera.html#muted"&gt;muted&lt;/a&gt;, которое говорит запретил ли пользователь использовать&amp;nbsp;соответствующую&amp;nbsp;камеру.&lt;br /&gt;&lt;br /&gt;После того, как изображение с камеры разрешено показать на сцене в экземпляре класса &lt;b&gt;flash.media.Video&lt;/b&gt;, необходимо некоторое время для активации камеры. После полной активации камеры она отправляет событие &lt;a href="http://help.adobe.com/ru_RU/AS3LCR/Flash_10.0/flash/events/ActivityEvent.html"&gt;flash.event.ActivityEvent&lt;/a&gt; типа &lt;a href="http://help.adobe.com/ru_RU/AS3LCR/Flash_10.0/flash/events/ActivityEvent.html#ACTIVITY"&gt;ACTIVITY&lt;/a&gt;.&lt;br /&gt;&lt;div style="-webkit-text-size-adjust: none; background-color: white; font-family: Tahoma, Helvetica, sans-serif; font-size: 12px; margin-bottom: 5px; margin-left: 5px; margin-right: 5px; margin-top: 5px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;div class="atten" style="background-color: #eaebee; border-bottom-color: rgb(216, 221, 229); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(216, 221, 229); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(216, 221, 229); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(216, 221, 229); border-top-style: solid; border-top-width: 1px; margin-bottom: 10px; margin-top: 10px; padding-bottom: 10px; padding-left: 10px; padding-right: 10px; padding-top: 10px;"&gt;&lt;span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="color: #444444;"&gt;Еще одной важной особенностью работы с камерой во &lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #444444;"&gt;FlashPlayer&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span" style="color: #444444;"&gt;&amp;nbsp;является то, что одновременно показать изображение с неё в разных окнах плеера не получится. Попробуйте открыть эту страницу в двух разных браузерах. Во втором изображение с камеры вы не увидите, пока не закроете первое открытое окно.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman';"&gt;&lt;span class="Apple-style-span" style="-webkit-text-size-adjust: auto; font-size: medium;"&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma, Helvetica, sans-serif; font-size: small;"&gt;&lt;span class="Apple-style-span" style="-webkit-text-size-adjust: none; font-size: 12px;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;3. Сохранение изображения со сцены&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Экземпляр класса &lt;b&gt;flash.media.Video&lt;/b&gt; является потомком класса &lt;a href="http://help.adobe.com/ru_RU/AS3LCR/Flash_10.0/flash/display/DisplayObject.html"&gt;flash.display.DisplayObject&lt;/a&gt; и в любой момент времени, например по нажатию соответствующей кнопки, мы можем преобразовать изображение с камеры в данные класса &lt;a href="http://help.adobe.com/ru_RU/AS3LCR/Flash_10.0/flash/display/BitmapData.html"&gt;flash.display.BitmapData&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Для этого необходимо создать экземпляр&amp;nbsp;&lt;b&gt;flash.display.BitmapData&lt;/b&gt;. В конструкторе&amp;nbsp;указываем&amp;nbsp;ширину и высоту. Вызываем метод &lt;a href="http://help.adobe.com/ru_RU/AS3LCR/Flash_10.0/flash/display/BitmapData.html#draw()"&gt;draw&lt;/a&gt;, с единственным параметром - ссылкой на экземпляр нашего видео.&lt;br /&gt;&lt;span class="Apple-style-span" style="-webkit-text-size-adjust: none; font-family: Tahoma, Helvetica, sans-serif; font-size: 12px;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;pre class="code" style="background-color: #fbf9f5; border-bottom-color: rgb(179, 179, 179); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(179, 179, 179); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(179, 179, 179); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(179, 179, 179); border-top-style: solid; border-top-width: 1px; clear: both; font-family: Courier, monospace !important; font-size: 12px; margin-top: 6px; overflow-x: auto; overflow-y: auto; padding-bottom: 8px; padding-left: 20px; padding-right: 8px; padding-top: 8px;"&gt;&lt;span style="color: black; font-family: Courier, monospace !important; font-size: 12px;"&gt;var bitmapdata:BitmapData = new BitmapData(video&lt;/span&gt;&lt;span class="preprocessor" style="color: black; font-family: Courier, monospace !important; font-size: 12px;"&gt;.width&lt;/span&gt;&lt;span style="color: black; font-family: Courier, monospace !important; font-size: 12px;"&gt;, video&lt;/span&gt;&lt;span class="preprocessor" style="color: black; font-family: Courier, monospace !important; font-size: 12px;"&gt;.height&lt;/span&gt;&lt;span style="color: black; font-family: Courier, monospace !important; font-size: 12px;"&gt;)&lt;/span&gt;&lt;span class="comment" style="color: black; cursor: text !important; font-family: Courier, monospace !important; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;;&lt;/span&gt;&lt;span style="color: black; font-family: Courier, monospace !important; font-size: 12px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="number" style="color: black; font-family: Courier, monospace !important; font-size: 12px;"&gt;b&lt;/span&gt;&lt;span style="color: black; font-family: Courier, monospace !important; font-size: 12px;"&gt;itmapdata&lt;/span&gt;&lt;span class="preprocessor" style="color: black; font-family: Courier, monospace !important; font-size: 12px;"&gt;.draw&lt;/span&gt;&lt;span style="color: black; font-family: Courier, monospace !important; font-size: 12px;"&gt;(video)&lt;/span&gt;&lt;span class="comment" style="color: black; cursor: text !important; font-family: Courier, monospace !important; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;;&lt;/span&gt;&lt;/pre&gt;Теперь с помощью любого энкодера мы можем преобразовать полученные данные в бинарный файл изображения. Например используя &lt;a href="http://as3corelib.googlecode.com/svn/trunk/src/com/adobe/images/PNGEncoder.as"&gt;com.adobe.images.PNGEncoder&lt;/a&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;после преобразования, мы получим экземпляр класса &lt;a href="http://help.adobe.com/ru_RU/AS3LCR/Flash_10.0/flash/utils/ByteArray.html"&gt;flash.utils.ByteArray&lt;/a&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="-webkit-text-size-adjust: none; font-family: Tahoma, Helvetica, sans-serif; font-size: 12px;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;pre class="code" style="background-color: #fbf9f5; border-bottom-color: rgb(179, 179, 179); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(179, 179, 179); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(179, 179, 179); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(179, 179, 179); border-top-style: solid; border-top-width: 1px; clear: both; font-family: Courier, monospace !important; font-size: 12px; margin-top: 6px; overflow-x: auto; overflow-y: auto; padding-bottom: 8px; padding-left: 20px; padding-right: 8px; padding-top: 8px;"&gt;var brr:ByteArray = PNGEncoder.encode(bitmapdata);&lt;/pre&gt;Осталось только сохранить полученный файл на диск. Используем для этого класс &lt;a href="http://help.adobe.com/ru_RU/AS3LCR/Flash_10.0/flash/net/FileReference.html"&gt;flash.net.FileReference&lt;/a&gt;. Создаем экземпляр и вызываем метод &lt;a href="http://help.adobe.com/ru_RU/AS3LCR/Flash_10.0/flash/net/FileReference.html#save()"&gt;save&lt;/a&gt;, с двумя параметрами: бинарные данные файла, имя файла.&lt;br /&gt;&lt;span class="Apple-style-span" style="-webkit-text-size-adjust: none; font-family: Tahoma, Helvetica, sans-serif; font-size: 12px;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;pre class="code" style="background-color: #fbf9f5; border-bottom-color: rgb(179, 179, 179); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(179, 179, 179); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(179, 179, 179); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(179, 179, 179); border-top-style: solid; border-top-width: 1px; clear: both; font-family: Courier, monospace !important; font-size: 12px; margin-top: 6px; overflow-x: auto; overflow-y: auto; padding-bottom: 8px; padding-left: 20px; padding-right: 8px; padding-top: 8px;"&gt;&lt;span style="color: black; font-family: Courier, monospace !important; font-size: 12px;"&gt;var file:FileReference = new FileReference()&lt;/span&gt;&lt;span class="comment" style="color: black; cursor: text !important; font-family: Courier, monospace !important; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;;&lt;/span&gt;&lt;span style="color: black; font-family: Courier, monospace !important; font-size: 12px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="number" style="color: black; font-family: Courier, monospace !important; font-size: 12px;"&gt;f&lt;/span&gt;&lt;span style="color: black; font-family: Courier, monospace !important; font-size: 12px;"&gt;ile&lt;/span&gt;&lt;span class="preprocessor" style="color: black; font-family: Courier, monospace !important; font-size: 12px;"&gt;.save&lt;/span&gt;&lt;span style="color: black; font-family: Courier, monospace !important; font-size: 12px;"&gt;(brr, &lt;/span&gt;&lt;span class="string" style="color: black; font-family: Courier, monospace !important; font-size: 12px;"&gt;"image.png"&lt;/span&gt;&lt;span style="color: black; font-family: Courier, monospace !important; font-size: 12px;"&gt;)&lt;/span&gt;&lt;span class="comment" style="color: black; cursor: text !important; font-family: Courier, monospace !important; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;;&lt;/span&gt;&lt;/pre&gt;Подробнее о сохранении изображения смотрите в &lt;a href="http://as3coder.blogspot.com/2010/03/actionscript-30.html"&gt;предыдущем посте&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;4.&amp;nbsp;Пример&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;object align="middle" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" height="350" id="main" width="360"&gt; &lt;param name="allowScriptAccess" value="sameDomain" /&gt;&lt;param name="allowFullScreen" value="false" /&gt;&lt;param name="movie" value="http://sites.google.com/site/as3coder/files/AS3CoderSaveImageFromCamera.swf" /&gt;&lt;param name="quality" value="high" /&gt;&lt;param name="bgcolor" value="#F0F0F0" /&gt;&lt;embed src="http://sites.google.com/site/as3coder/files/AS3CoderSaveImageFromCamera.swf" quality="high" bgcolor="#F0F0F0" width="360" height="350" name="main" align="middle" allowScriptAccess="sameDomain" allowFullScreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;5.&amp;nbsp;Как распознавать лица на изображении?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Об этом я напишу в следующем посте. Хочу только сказать огромное спасибо за реализацию этой возможности &lt;a href="http://maaash.jp/"&gt;Ohtsuka Masakazu&lt;/a&gt; и &lt;a href="http://www.quasimondo.com/"&gt;Mario Klingemann&lt;/a&gt;, а также&amp;nbsp;&lt;a href="http://blog.inspirit.ru/"&gt;Eugene Zatepyakin&lt;/a&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6470399064206765359-7635355598404363915?l=as3coder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://as3coder.blogspot.com/feeds/7635355598404363915/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://as3coder.blogspot.com/2010/08/web.html#comment-form' title='Комментарии: 9'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6470399064206765359/posts/default/7635355598404363915'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6470399064206765359/posts/default/7635355598404363915'/><link rel='alternate' type='text/html' href='http://as3coder.blogspot.com/2010/08/web.html' title='Сохранение изображения с Web-камеры'/><author><name>AS3Coder</name><uri>http://www.blogger.com/profile/14877548685763682250</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_S7Dbp6MOKn8/S3ZqfEQ54vI/AAAAAAAAAMI/j2FNwRKPohE/S220/129018458834145924.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_S7Dbp6MOKn8/THTFxdRm2DI/AAAAAAAAAV0/OuvWilWYuec/s72-c/2010-08-25+11+27+25.png' height='72' width='72'/><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6470399064206765359.post-3494762821674863323</id><published>2010-08-11T14:27:00.005+04:00</published><updated>2010-08-13T11:08:16.072+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='as3'/><category scheme='http://www.blogger.com/atom/ns#' term='начинающим'/><title type='text'>SharedObject. Сохранение данных на компьютере пользователя.</title><content type='html'>&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Что такое SharedObject?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;SharedObject &lt;/b&gt;- это название &lt;a href="http://help.adobe.com/ru_RU/AS3LCR/Flash_10.0/"&gt;класса&lt;/a&gt;, с помощью которого .&lt;b&gt;swf&lt;/b&gt;-файл может записывать и читать различные данные на компьютере пользователя. Способ записи данных &lt;b&gt;SharedObject &lt;/b&gt;имеет сходство с записью файлов &lt;a href="http://citforum.ru/internet/html/cookie.shtml"&gt;сookie &lt;/a&gt;в браузерах.&lt;br /&gt;&lt;br /&gt;&lt;div style="-webkit-text-size-adjust: none; background-color: white; font-family: Tahoma, Helvetica, sans-serif; font-size: 12px; margin-bottom: 5px; margin-left: 5px; margin-right: 5px; margin-top: 5px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;div class="quote" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: dashed; border-bottom-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: dashed; border-left-width: 1px; border-right-color: rgb(204, 204, 204); border-right-style: dashed; border-right-width: 1px; border-top-color: rgb(204, 204, 204); border-top-style: dashed; border-top-width: 1px; font-family: Tahoma, Helvetica, sans-serif; font-size: 12px; margin-bottom: 10px; margin-left: 10px; margin-right: 10px; margin-top: 10px; padding-bottom: 10px; padding-left: 10px; padding-right: 10px; padding-top: 10px;"&gt;&lt;span class="Apple-style-span" style="-webkit-text-size-adjust: auto;"&gt;&lt;span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Кроме того,&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;SharedObject&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;может сохранять данные и на сервере. Используется данная возможность в&amp;nbsp;основном&amp;nbsp;в тесной интеграции с&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.adobe.com/ru/products/flashmediaserver/" style="color: #999999; text-decoration: none;"&gt;&lt;span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Flash Media Server&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;'ом. Рассматривать в рамках этого поста, возможность работы&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;SharedObject&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;с сервером я не буду. Поговорим только о возможностях работы с локальной системой.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman';"&gt;&lt;span class="Apple-style-span" style="-webkit-text-size-adjust: auto; font-size: medium;"&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Как же это работает?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Работает это&amp;nbsp;следующим&amp;nbsp;образом: один .&lt;b&gt;swf&lt;/b&gt;-файл может записать любую информацию на клиентском компьютере &lt;b&gt;только для себя&lt;/b&gt;, и прочитать&amp;nbsp;её&amp;nbsp;позже сможет &lt;b&gt;только тот же&lt;/b&gt; .swf-файл, который её записал.&lt;br /&gt;&lt;br /&gt;Чтобы записать данные нужно:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Получить или создать экземпляр уникального контейнера&lt;/li&gt;&lt;li&gt;Записать в свойство экземпляра "&lt;a href="http://help.adobe.com/ru_RU/AS3LCR/Flash_10.0/flash/net/SharedObject.html#data"&gt;data&lt;/a&gt;" необходимые данные&lt;/li&gt;&lt;li&gt;Сохранить данные экземпляра на локальный диск компьютера&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="-webkit-text-size-adjust: none; font-family: Tahoma, Helvetica, sans-serif; font-size: 12px;"&gt;&lt;pre class="code" style="background-color: #fbf9f5; border-bottom-color: rgb(179, 179, 179); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(179, 179, 179); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(179, 179, 179); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(179, 179, 179); border-top-style: solid; border-top-width: 1px; clear: both; font-family: Courier, monospace !important; font-size: 12px; margin-top: 6px; overflow-x: auto; overflow-y: auto; padding-bottom: 8px; padding-left: 20px; padding-right: 8px; padding-top: 8px;"&gt;var so:SharedObject = SharedObject&lt;span class="preprocessor" style="color: #2b91af; font-family: Courier, monospace; font-size: 12px;"&gt;.getLocal&lt;/span&gt;(&lt;span class="string" style="color: teal; font-family: Courier, monospace; font-size: 12px;"&gt;"as3coder-player"&lt;/span&gt;)&lt;span class="comment" style="color: grey; cursor: text !important; font-family: Courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;;&lt;/span&gt;&lt;br /&gt;so&lt;span class="preprocessor" style="color: #2b91af; font-family: Courier, monospace; font-size: 12px;"&gt;.data&lt;/span&gt;&lt;span class="preprocessor" style="color: #2b91af; font-family: Courier, monospace; font-size: 12px;"&gt;.volume&lt;/span&gt; = &lt;span class="number" style="color: green; font-family: Courier, monospace; font-size: 12px;"&gt;100&lt;/span&gt;&lt;span class="comment" style="color: grey; cursor: text !important; font-family: Courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;;&lt;/span&gt;&lt;br /&gt;so&lt;span class="preprocessor" style="color: #2b91af; font-family: Courier, monospace; font-size: 12px;"&gt;.flush&lt;/span&gt;()&lt;span class="comment" style="color: grey; cursor: text !important; font-family: Courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;;&lt;/span&gt;&lt;/pre&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;При следующем открытии, .&lt;b&gt;swf&lt;/b&gt;-файл может прочитать ранее записанные им данные.&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;Получить экземпляр уникального контейнера&lt;/li&gt;&lt;li&gt;Получить необходимые данные у свойства экземпляра "&lt;a href="http://help.adobe.com/ru_RU/AS3LCR/Flash_10.0/flash/net/SharedObject.html#data"&gt;data&lt;/a&gt;"&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="-webkit-text-size-adjust: none; font-family: Tahoma, Helvetica, sans-serif; font-size: 12px;"&gt;&lt;pre class="code" style="background-color: #fbf9f5; border-bottom-color: rgb(179, 179, 179); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(179, 179, 179); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(179, 179, 179); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(179, 179, 179); border-top-style: solid; border-top-width: 1px; clear: both; font-family: Courier, monospace !important; font-size: 12px; margin-top: 6px; overflow-x: auto; overflow-y: auto; padding-bottom: 8px; padding-left: 20px; padding-right: 8px; padding-top: 8px;"&gt;var so:SharedObject = SharedObject&lt;span class="preprocessor" style="color: #2b91af; font-family: Courier, monospace; font-size: 12px;"&gt;.getLocal&lt;/span&gt;(&lt;span class="string" style="color: teal; font-family: Courier, monospace; font-size: 12px;"&gt;"as3coder-player"&lt;/span&gt;)&lt;span class="comment" style="color: grey; cursor: text !important; font-family: Courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;;&lt;/span&gt;&lt;br /&gt;var volume:Number = so&lt;span class="preprocessor" style="color: #2b91af; font-family: Courier, monospace; font-size: 12px;"&gt;.data&lt;/span&gt;&lt;span class="preprocessor" style="color: #2b91af; font-family: Courier, monospace; font-size: 12px;"&gt;.volume&lt;/span&gt;&lt;span class="comment" style="color: grey; cursor: text !important; font-family: Courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;;&lt;/span&gt;&lt;/pre&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Где и как хранятся данные на локальном диске пользователя?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Данные записываются&amp;nbsp;в&amp;nbsp;файлы с расширением "&lt;b&gt;sol&lt;/b&gt;" в формате &lt;a href="http://en.wikipedia.org/wiki/Action_Message_Format"&gt;AMF&lt;/a&gt;. Найти их можно в директории:&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-style: normal;"&gt;Windows:&amp;nbsp;&lt;/span&gt;C:\Users\&amp;lt;Имя пользователя&amp;gt;\AppData\Roaming\Macromedia\Flash Player\#SharedObjects\&amp;lt;Случайное число&amp;gt;\&amp;lt;Имя домена&amp;gt;\&amp;lt;Путь до .swf-файла&amp;gt;\&amp;lt;Имя контейнера&amp;gt;.sol&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Mac OS X: &lt;i&gt;~/Library/Preferences/Macromedia/Flash Player/#SharedObjects/&amp;lt;Случайное число&amp;gt;/&amp;lt;Имя домена&amp;gt;/&amp;lt;Путь к .swf-файлу&amp;gt;/&amp;lt;Имя контейнера&amp;gt;.sol&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Для Windows это выглядит так:&lt;br /&gt;&lt;br /&gt;&lt;img border="0" height="367" src="http://3.bp.blogspot.com/_S7Dbp6MOKn8/TGJg2RdpjRI/AAAAAAAAAVU/JzlhR95CtFo/s400/2010-08-11+12+31+51.png" width="400" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Чем открывать .sol-файлы?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Прочитать содержимое .&lt;b&gt;sol&lt;/b&gt;-файлов можно, открыв их использую встроенную во &lt;a href="http://www.flashdevelop.org/wikidocs/index.php?title=Main_Page"&gt;FlashDevelop &lt;/a&gt;утилиту написанную на C# под названием "SharedObject Reader"&lt;br /&gt;&lt;br /&gt;&lt;img border="0" height="266" src="http://1.bp.blogspot.com/_S7Dbp6MOKn8/TGJmzqa6DAI/AAAAAAAAAVc/YlctETZ2jVc/s400/2010-08-11+13+00+28.png" width="400" /&gt;&lt;br /&gt;Также можно найти автономную версию этой программы, написанную на Python, "&lt;a href="http://www.sephiroth.it/python/SOLReader.zip"&gt;SOLReader&lt;/a&gt;".&lt;br /&gt;&lt;br /&gt;Но как оказалось, в последних версиях &lt;b&gt;FlashDevelop &lt;/b&gt;эта программа не работает. Если кто знает почему или как можно её отремонтировать пожалуйста сообщите в комментариях.&lt;br /&gt;&lt;br /&gt;В качестве альтернативы нашлась другая утилита. Называется "&lt;a href="http://sourceforge.net/projects/soleditor/"&gt;.sol Editor&lt;/a&gt;". Умеет не только читать но и писать в .&lt;b&gt;sol&lt;/b&gt;-файлах. Интересно конечно :) Но как это применить на практике пока не придумаю.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;А как же безопасность?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Естественно &lt;a href="http://www.adobe.com/"&gt;Adobe&lt;/a&gt; позаботились о&amp;nbsp;безопасности&amp;nbsp;такого взаимодействия .&lt;b&gt;swf&lt;/b&gt;-файла с файловой системой пользователя и наложили ограничение на объем записываемых данных. По умолчанию он равен 100 Кб. Но пользователь сам вправе решить, насколько он доверяет определенному домену, и может увеличить, уменьшить, либо вообще убрать это ограничение. Сделать это можно в параметрах &lt;b&gt;Adobe Flash Player&lt;/b&gt;:&lt;br /&gt;&lt;br /&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_S7Dbp6MOKn8/TGJum3A85RI/AAAAAAAAAVk/c9xPOTPFEhM/s320/2010-08-11+13+33+20.png" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_S7Dbp6MOKn8/TGJuxaNuIfI/AAAAAAAAAVs/DQTMl4lhTwY/s320/2010-08-11+13+34+53.png" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Где и как использовать?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Это вопрос фантазии. Например, в своих медиа-плеерах я записываю громкость звука, чтобы пользователь её постоянно не убавлял или не прибавлял когда заходил заново.&lt;br /&gt;&amp;nbsp;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6470399064206765359-3494762821674863323?l=as3coder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://as3coder.blogspot.com/feeds/3494762821674863323/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://as3coder.blogspot.com/2010/08/sharedobject.html#comment-form' title='Комментарии: 5'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6470399064206765359/posts/default/3494762821674863323'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6470399064206765359/posts/default/3494762821674863323'/><link rel='alternate' type='text/html' href='http://as3coder.blogspot.com/2010/08/sharedobject.html' title='SharedObject. Сохранение данных на компьютере пользователя.'/><author><name>AS3Coder</name><uri>http://www.blogger.com/profile/14877548685763682250</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_S7Dbp6MOKn8/S3ZqfEQ54vI/AAAAAAAAAMI/j2FNwRKPohE/S220/129018458834145924.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_S7Dbp6MOKn8/TGJg2RdpjRI/AAAAAAAAAVU/JzlhR95CtFo/s72-c/2010-08-11+12+31+51.png' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6470399064206765359.post-1536974878742340111</id><published>2010-07-30T16:04:00.001+04:00</published><updated>2010-08-02T17:38:33.002+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='afpug'/><title type='text'>Августовская встреча RAFPUG в Перми</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_S7Dbp6MOKn8/TFK-2b_aSZI/AAAAAAAAAVA/B9RCSQqBQfc/s1600/star.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_S7Dbp6MOKn8/TFK-2b_aSZI/AAAAAAAAAVA/B9RCSQqBQfc/s320/star.png" /&gt;&lt;/a&gt;&lt;/div&gt;7 августа в &lt;a href="http://maps.google.com/maps?f=q&amp;amp;source=s_q&amp;amp;hl=ru&amp;amp;geocode=&amp;amp;q=%D0%A0%D0%BE%D1%81%D1%81%D0%B8%D1%8F,+%D0%9F%D0%B5%D1%80%D0%BC%D1%8C&amp;amp;sll=37.0625,-95.677068&amp;amp;sspn=53.300127,79.013672&amp;amp;ie=UTF8&amp;amp;hq=&amp;amp;hnear=%D0%B3%D0%BE%D1%80%D0%BE%D0%B4+%D0%9F%D0%B5%D1%80%D0%BC%D1%8C,+%D0%9F%D0%B5%D1%80%D0%BC%D1%81%D0%BA%D0%B8%D0%B9+%D0%BA%D1%80%D0%B0%D0%B9,+%D0%A0%D0%BE%D1%81%D1%81%D0%B8%D1%8F&amp;amp;z=10"&gt;Перми&lt;/a&gt;&amp;nbsp;пройдет очередная встреча &lt;b&gt;RAFPUG &lt;/b&gt;(Russian Adobe Flash Platform User Group). Хозяевами встречи будут &lt;a href="http://alternativaplatform.com/ru/"&gt;AlternativaPlatform&lt;/a&gt; и &lt;a href="http://iheroes.ru/"&gt;iHeroes&lt;/a&gt;. Они расскажут вам всё о создании трехмерных браузерных игр. Также на встрече будет менеджер группы Артемий Малкин из &lt;a href="http://flexis.ru/"&gt;Flexis&lt;/a&gt;'a, который расскажет о будущем Flash-платформы. Все подробности смотрите &lt;a href="http://iheroes.ru/rafpug/"&gt;здесь&lt;/a&gt;&amp;nbsp;или &lt;a href="http://iheroes.ru/rafpug/a3d/"&gt;здесь&lt;/a&gt;.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6470399064206765359-1536974878742340111?l=as3coder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://as3coder.blogspot.com/feeds/1536974878742340111/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://as3coder.blogspot.com/2010/07/rafpug.html#comment-form' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6470399064206765359/posts/default/1536974878742340111'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6470399064206765359/posts/default/1536974878742340111'/><link rel='alternate' type='text/html' href='http://as3coder.blogspot.com/2010/07/rafpug.html' title='Августовская встреча RAFPUG в Перми'/><author><name>AS3Coder</name><uri>http://www.blogger.com/profile/14877548685763682250</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_S7Dbp6MOKn8/S3ZqfEQ54vI/AAAAAAAAAMI/j2FNwRKPohE/S220/129018458834145924.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_S7Dbp6MOKn8/TFK-2b_aSZI/AAAAAAAAAVA/B9RCSQqBQfc/s72-c/star.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6470399064206765359.post-5074635684912498384</id><published>2010-07-07T10:46:00.001+04:00</published><updated>2010-07-07T10:46:48.092+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='начинающим'/><category scheme='http://www.blogger.com/atom/ns#' term='ASDoc'/><category scheme='http://www.blogger.com/atom/ns#' term='FlashDevelop'/><title type='text'>ASDoc. Сборка справки во FlashDevelop.</title><content type='html'>Часто ли с вашим кодом работают&amp;nbsp;сторонние&amp;nbsp;разработчики? Если да, то этот пост для вас :)&lt;br /&gt;&lt;br /&gt;Работая с чужим кодом всегда возникает много вопросов: "Что? Куда? Почему?". Как правило, на эти ответы должна отвечать справка, которая распространяется вместе с кодом.&lt;br /&gt;&lt;br /&gt;Компилировать свой код в .swc-библиотеки мы &lt;a href="http://as3coder.blogspot.com/2009/12/swc-flashdevelop.html"&gt;научились&lt;/a&gt;, теперь научимся легко и быстро собирать справки для них.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;ASDoc&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Разработчикам &lt;b&gt;ActionScript 3.0&lt;/b&gt; очень повезло. Для них уже имеется готовая утилита для сборки справки,&amp;nbsp;поставляемая&amp;nbsp;вместе с FlexSDK. Называется она &lt;b&gt;ASDoc&lt;/b&gt;. Найти её можно в директории FlexSDK в поддиректории "&lt;b&gt;bin&lt;/b&gt;".&lt;br /&gt;&lt;br /&gt;Работает утилита из под командной строки. В параметрах принимает необходимые настройки и собирает справку&amp;nbsp;на основе&amp;nbsp;комментариев&amp;nbsp;в исходном коде. В результате мы имеем папку "&lt;b&gt;doc&lt;/b&gt;" c .html-файлами. Внешне справка&amp;nbsp;выглядит&amp;nbsp;также как &lt;a href="http://help.adobe.com/ru_RU/AS3LCR/Flash_10.0/index.html"&gt;официальная&lt;/a&gt; на сайте Adobe.&lt;br /&gt;&lt;br /&gt;Подробнее читайте в &lt;a href="http://livedocs.adobe.com/flex/3/html/asdoc_1.html"&gt;справке&lt;/a&gt; по Flex:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://livedocs.adobe.com/flex/3/html/asdoc_2.html#187884"&gt;Об утилите&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://livedocs.adobe.com/flex/3/html/asdoc_3.html#189145"&gt;Как грамотно писать комментарии к коду&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://livedocs.adobe.com/flex/3/html/asdoc_9.html#142061"&gt;Как запускать утилиту и какие параметры используются&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Сборка справки во FlashDevelop&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Естественно работать с утилитой &lt;b&gt;ASDoc &lt;/b&gt;через командную строку неудобно, и во многих средах разработки есть свой "визард" для более удобной работы с &lt;b&gt;ASDoc&lt;/b&gt;. И &lt;b&gt;FlashDevelop &lt;/b&gt;не исключение.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Для этого у него имеется программа "&lt;b&gt;Documentation Generator&lt;/b&gt;", которая находится в Tools &amp;gt; Flash Tools.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;a href="http://2.bp.blogspot.com/_S7Dbp6MOKn8/TDQf9xngumI/AAAAAAAAAT4/5f2SVHHmrco/s1600/2010-07-07+10+22+30.png" imageanchor="1"&gt;&lt;img border="0" height="248" src="http://2.bp.blogspot.com/_S7Dbp6MOKn8/TDQf9xngumI/AAAAAAAAAT4/5f2SVHHmrco/s400/2010-07-07+10+22+30.png" width="400" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;Рассмотрим по-подробнее:&lt;br /&gt;&lt;br /&gt;Во вкладке "Project" указывается заголовок справки, классы которые нужно описать или пропустить, директория куда всё сложить, и версия&amp;nbsp;&lt;b&gt;ActionScript&amp;nbsp;&lt;/b&gt;кода. Здесь можно собирать справку и для ActionScript 2.0, но в рамках данного поста мы это пропустим.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_S7Dbp6MOKn8/TDQgTln7rII/AAAAAAAAAUA/TSwjBpH6jPY/s1600/2010-07-07+10+19+14.png" imageanchor="1"&gt;&lt;img border="0" height="328" src="http://4.bp.blogspot.com/_S7Dbp6MOKn8/TDQgTln7rII/AAAAAAAAAUA/TSwjBpH6jPY/s640/2010-07-07+10+19+14.png" width="640" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;В "Settings" указывается путь к директории с утилитой &lt;b&gt;ASDoc&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_S7Dbp6MOKn8/TDQhbs1QMjI/AAAAAAAAAUI/Jxig2jV18_Q/s1600/2010-07-07+10+19+55.png" imageanchor="1"&gt;&lt;img border="0" height="276" src="http://1.bp.blogspot.com/_S7Dbp6MOKn8/TDQhbs1QMjI/AAAAAAAAAUI/Jxig2jV18_Q/s400/2010-07-07+10+19+55.png" width="400" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;В "Output" выводится информация и процессе сборки справки.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_S7Dbp6MOKn8/TDQhsWNYfdI/AAAAAAAAAUQ/Cb3Rgw8TaUA/s1600/2010-07-07+10+20+49.png" imageanchor="1"&gt;&lt;img border="0" height="275" src="http://4.bp.blogspot.com/_S7Dbp6MOKn8/TDQhsWNYfdI/AAAAAAAAAUQ/Cb3Rgw8TaUA/s400/2010-07-07+10+20+49.png" width="400" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;И самое удобное, что все это можно сохранить в проект, который потом можно открыть.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_S7Dbp6MOKn8/TDQh10Q57lI/AAAAAAAAAUY/ONlTzH7eD1k/s1600/2010-07-07+10+21+14.png" imageanchor="1"&gt;&lt;img border="0" height="45" src="http://3.bp.blogspot.com/_S7Dbp6MOKn8/TDQh10Q57lI/AAAAAAAAAUY/ONlTzH7eD1k/s400/2010-07-07+10+21+14.png" width="400" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Если что-то&amp;nbsp;непонятно, имеется справка :)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_S7Dbp6MOKn8/TDQiBk-5onI/AAAAAAAAAUg/k3AwGijJSTc/s1600/2010-07-07+10+21+53.png" imageanchor="1"&gt;&lt;img border="0" height="51" src="http://2.bp.blogspot.com/_S7Dbp6MOKn8/TDQiBk-5onI/AAAAAAAAAUg/k3AwGijJSTc/s400/2010-07-07+10+21+53.png" width="400" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Осталось нажать кнопку "Generate!"&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6470399064206765359-5074635684912498384?l=as3coder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://as3coder.blogspot.com/feeds/5074635684912498384/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://as3coder.blogspot.com/2010/07/asdoc-flashdevelop.html#comment-form' title='Комментарии: 3'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6470399064206765359/posts/default/5074635684912498384'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6470399064206765359/posts/default/5074635684912498384'/><link rel='alternate' type='text/html' href='http://as3coder.blogspot.com/2010/07/asdoc-flashdevelop.html' title='ASDoc. Сборка справки во FlashDevelop.'/><author><name>AS3Coder</name><uri>http://www.blogger.com/profile/14877548685763682250</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_S7Dbp6MOKn8/S3ZqfEQ54vI/AAAAAAAAAMI/j2FNwRKPohE/S220/129018458834145924.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_S7Dbp6MOKn8/TDQf9xngumI/AAAAAAAAAT4/5f2SVHHmrco/s72-c/2010-07-07+10+22+30.png' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6470399064206765359.post-3787488918469431193</id><published>2010-06-01T09:40:00.000+04:00</published><updated>2010-06-01T09:40:31.255+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mindmap'/><title type='text'>Что такое «MindMap»? И с чем его едят?</title><content type='html'>На февральской встрече &lt;a href="http://as3coder.blogspot.com/2010/02/burafpuf-belarus-ukraine-russian-flash.html"&gt;BURAFPUG&lt;/a&gt;, во время блиц-докладов, я заикнулся про работу c &lt;b&gt;MindMap&lt;/b&gt;. Меня попросили рассказать об этом по-подробнее, по-моему это был &lt;a href="http://flash-ripper.com/"&gt;Рост&lt;/a&gt;. На тот момент, я почему-то подумал, что все знают что это такое, и сразу перешел к рассказу о том, как это реализуется во &lt;b&gt;Flash&lt;/b&gt;'e. На днях я понял, что спрашивали меня тогда именно: "Что это такое?". Постараюсь кратко и понятно рассказать об этом.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Что такое MindMap?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;MindMap &lt;/b&gt;- это некий формат записи мыслей человека. Выглядит это как накиданные на плоскость блоки текста связанные между собой линиями. Внешне напоминают карты,&amp;nbsp;отсюда&amp;nbsp;в названии формата имеется "&lt;b&gt;Map&lt;/b&gt;". "&lt;b&gt;Mind&lt;/b&gt;" - это мысли. Наглядно:&lt;br /&gt;&lt;br /&gt;&lt;img border="0" height="228" src="http://1.bp.blogspot.com/_S7Dbp6MOKn8/TASbCQvl_RI/AAAAAAAAATw/w7FDd6pybqo/s1600/Untitled+map+2.png" width="743" /&gt;&lt;br /&gt;&lt;br /&gt;На самом деле, этот формат записи очень удобен. Если есть какие-то идеи, то такие карты неплохо помогают развивать эти идеи в разные стороны. В офлайне полно различных тренингов для развития мышления и памяти, где в основе лежат эти самые карты.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Как и где использовать такие карты?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Использовать такие карты очень легко и удобно&amp;nbsp;на любом этапе разработки проекта. Начиная от оценки проекта, до описания архитектуры и процесса разработки&amp;nbsp;приложения.&lt;br /&gt;&lt;br /&gt;&lt;img border="0" height="386" src="http://4.bp.blogspot.com/_S7Dbp6MOKn8/TASYOnhDx7I/AAAAAAAAATg/c2iNpk-4VE8/s1600/Untitled+map.png" width="680" /&gt;&lt;br /&gt;&lt;br /&gt;Также я использую &lt;b&gt;MindMap &lt;/b&gt;в повседневной жизни. Очень часто я в своем блокноте использую именно такой формат записи.&lt;br /&gt;&lt;br /&gt;&lt;img border="0" height="258" src="http://2.bp.blogspot.com/_S7Dbp6MOKn8/TASZROuH-OI/AAAAAAAAATo/k0xebIvVmyo/s1600/Untitled+map+1.png" width="652" /&gt;&lt;br /&gt;&lt;br /&gt;Для рисования карт сейчас полно как бесплатных, так и платных, как онлайн (реализованных кстати на &lt;b&gt;Flash&lt;/b&gt;), так и десктопных приложений.&lt;br /&gt;&lt;br /&gt;Список программ для рисования &lt;b&gt;MindMap&lt;/b&gt; уже &lt;a href="http://www.dzinepress.com/2010/03/40-ultimate-useful-mind-mapping-tools/"&gt;есть&lt;/a&gt;. В качестве бесплатной могу порекомендовать &lt;a href="http://freemind.sourceforge.net/wiki/index.php/Main_Page"&gt;FreeMind&lt;/a&gt;. Если не устраивает, то очень неплохая платная - &lt;a href="http://www.mindjet.com/"&gt;Mindjet&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Дополнительная информация&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;В последнее время на эту появляется все больше информации. Потому-что это действительно интересная и удобная вещь. Стоит один раз попробовать, и уже не сможешь от неё отказаться. Приведу небольшой список полезных ресурсов на эту тему:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.mind-map.ru/"&gt;Интеллект-карты&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.mindmap.ru/"&gt;Mind map, Карты разума, ума, памяти, интеллекта и мышления&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://xn--%20%20%20-zyhaa3agcopkh5amracn8a0ba9hi2b39ara8082v/"&gt;Диаграмма связей — Википедия&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://habrahabr.ru/tag/mindmaps/"&gt;mindmaps / Метки / Хабрахабр&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6470399064206765359-3787488918469431193?l=as3coder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://as3coder.blogspot.com/feeds/3787488918469431193/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://as3coder.blogspot.com/2010/06/mindmap.html#comment-form' title='Комментарии: 4'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6470399064206765359/posts/default/3787488918469431193'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6470399064206765359/posts/default/3787488918469431193'/><link rel='alternate' type='text/html' href='http://as3coder.blogspot.com/2010/06/mindmap.html' title='Что такое «MindMap»? И с чем его едят?'/><author><name>AS3Coder</name><uri>http://www.blogger.com/profile/14877548685763682250</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_S7Dbp6MOKn8/S3ZqfEQ54vI/AAAAAAAAAMI/j2FNwRKPohE/S220/129018458834145924.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_S7Dbp6MOKn8/TASbCQvl_RI/AAAAAAAAATw/w7FDd6pybqo/s72-c/Untitled+map+2.png' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6470399064206765359.post-6678052831084884193</id><published>2010-05-28T10:12:00.007+04:00</published><updated>2010-06-28T09:27:19.170+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SVG'/><category scheme='http://www.blogger.com/atom/ns#' term='Отсебятина'/><category scheme='http://www.blogger.com/atom/ns#' term='Flash'/><title type='text'>SVG vs Flash</title><content type='html'>Работая над очередным проектом столкнулся с&amp;nbsp;необходимостью&amp;nbsp;отображения &lt;b&gt;Flash&lt;/b&gt;-приложения на мобильных&amp;nbsp;устройствах. Если на &lt;a href="http://www.android.com/"&gt;Android &lt;/a&gt;в ближайшем будущем &lt;a href="http://labs.adobe.com/wiki/index.php/Flash_Player_10.1_for_Android"&gt;поддержка Flash Player'a&lt;/a&gt; ожидается, то как быть с остальными устройствами?&lt;br /&gt;&lt;br /&gt;Ответ пришел незамедлительно: "&lt;b&gt;SVG + Javascript&lt;/b&gt;".&lt;br /&gt;&lt;br /&gt;От HTML-кодеров я часто слышу резкие изречения сравнения &lt;b&gt;Flash &lt;/b&gt;и &lt;b&gt;SVG &lt;/b&gt;как технологий, в пользу второго. О том, что &lt;b&gt;SVG &lt;/b&gt;не требует плагинов и ничем не уступает &lt;b&gt;Flash&lt;/b&gt;'y. На нем можно рисовать векторные изображения, писать код на JavaScript, делать анимацию и многое другое.&lt;br /&gt;&lt;br /&gt;Уже не первый год &lt;b&gt;SVG &lt;/b&gt;&lt;a href="http://www.google.ru/search?hl=ru&amp;amp;q=svg+vs+flash&amp;amp;btnG=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA+%D0%B2+Google&amp;amp;lr="&gt;ставят&lt;/a&gt; в конкуренты к &lt;b&gt;Flash&lt;/b&gt;'y, хают одно и&amp;nbsp;лелеют&amp;nbsp;другое. И так как у меня появилась такая возможность&amp;nbsp;поработать и с тем и с другим, я хочу сделать небольшой обзор.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Является ли SVG и Flash конкурентами?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Ответ: «Нет». Поясню.&lt;br /&gt;&lt;br /&gt;На мой взгляд &lt;b&gt;SVG &lt;/b&gt;не является конкурентной технологией. &lt;b&gt;Flash &lt;/b&gt;имеет ряд возможностей, которых нету в первом. К такому мнению я пришел начав миграцию моего &lt;b&gt;Flash&lt;/b&gt;-проекта на &lt;b&gt;SVG&lt;/b&gt;. Всё-таки кросс-платформенность для flasher'ов немного непривычно.&lt;br /&gt;&lt;br /&gt;Но, &lt;b&gt;SVG &lt;/b&gt;- это очень круто, и это действительно перспективная технология со своими преимуществами. Эта мысль меня посетила по окончанию миграции, когда я увидел результат работы &lt;b&gt;SVG&lt;/b&gt;-приложения.&lt;br /&gt;&lt;br /&gt;Вообще выбор технологии, должен зависеть от задачи. Например у меня задача стояла, чтобы web-приложение одинаково работало и выглядело на домашних копьютерах и на мобильных&amp;nbsp;устройствах. И теперь используя две технологии (вместо какой-то одной) моё приложение работает на всех&amp;nbsp;устройствах.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Flash и SVG - это скорее друзья :)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Мне не составило особого труда переписать моё приложение с ActionScript на JavaScript, который используется в &lt;b&gt;SVG&lt;/b&gt;. Не составило труда перенести статичную графику. Вообще всё прошло гладко.&lt;br /&gt;&lt;br /&gt;Обе&amp;nbsp;технологии&amp;nbsp;дополняют&amp;nbsp;друг&amp;nbsp;друга.&amp;nbsp;Недостатки&amp;nbsp;&lt;b&gt;Flash&lt;/b&gt;'a можно с легкостью заменить преимуществами &lt;b&gt;SVG&lt;/b&gt;. И наоборот. Использование обеих технологий придаст вашему проекту уникальную гибкость.&lt;br /&gt;&lt;br /&gt;Вот, что я вынес для себя:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt; &lt;td width="100px"&gt;&lt;/td&gt; &lt;td style="padding-left: 40px;" width="200px"&gt;&lt;b&gt;Flash&lt;/b&gt;&lt;/td&gt; &lt;td style="padding-left: 40px;" width="200px"&gt;&lt;b&gt;SVG&lt;/b&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td valign="top"&gt;Преимущества&lt;/td&gt; &lt;td valign="top"&gt;&lt;ul&gt;&lt;li&gt;Работа с камерой и микрофоном&lt;/li&gt;&lt;li&gt;Работа со звуком и видео&lt;/li&gt;&lt;li&gt;Загрузка и выгрузка файлов&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt; &lt;td valign="top"&gt;&lt;ul&gt;&lt;li&gt;Не требует дополнительных плагинов&lt;/li&gt;&lt;li&gt;Работает во всех мобильных устройствах &lt;/li&gt;&lt;/ul&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td valign="top"&gt;Недостатки&lt;/td&gt; &lt;td valign="top"&gt;&lt;ul&gt;&lt;li&gt;Требует плагин Adobe Flash Player&lt;/li&gt;&lt;li&gt;Не&amp;nbsp;поддерживается&amp;nbsp;большинством мобильных&amp;nbsp;устройств&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt; &lt;td valign="top"&gt;&lt;ul&gt;&lt;li&gt;Не работает в Internet Explorer&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt; &lt;/tr&gt;&lt;/tbody&gt; &lt;/table&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Вывод&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Не нужно привязываться к технологиям.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;P.S&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Точно такая же ситуация и с HTML5... Но об этом в другой раз.&lt;br /&gt;&amp;nbsp;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6470399064206765359-6678052831084884193?l=as3coder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://as3coder.blogspot.com/feeds/6678052831084884193/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://as3coder.blogspot.com/2010/05/svg-vs-flash.html#comment-form' title='Комментарии: 5'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6470399064206765359/posts/default/6678052831084884193'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6470399064206765359/posts/default/6678052831084884193'/><link rel='alternate' type='text/html' href='http://as3coder.blogspot.com/2010/05/svg-vs-flash.html' title='SVG vs Flash'/><author><name>AS3Coder</name><uri>http://www.blogger.com/profile/14877548685763682250</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_S7Dbp6MOKn8/S3ZqfEQ54vI/AAAAAAAAAMI/j2FNwRKPohE/S220/129018458834145924.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6470399064206765359.post-4539414658780754122</id><published>2010-05-20T09:58:00.008+04:00</published><updated>2010-05-20T10:08:30.395+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='as3'/><category scheme='http://www.blogger.com/atom/ns#' term='начинающим'/><title type='text'>Создание Excel-документа на ActionScript 3.0</title><content type='html'>Недавно в одном из моих проектов при работе с различными схемами и диаграммами появилась необходимость экспорта данных в&amp;nbsp;распространенный&amp;nbsp;и&amp;nbsp;удобочитаемый&amp;nbsp;формат. Выбор&amp;nbsp;автоматически&amp;nbsp;пал на документы &lt;b&gt;Microsoft Excel&lt;/b&gt;. Оказалось:&lt;br /&gt;&lt;div style="background-color: white; font-family: Tahoma, Helvetica, sans-serif; font-size: 12px; margin-bottom: 5px; margin-left: 5px; margin-right: 5px; margin-top: 5px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;div class="code" style="background-color: #fbf9f5; border-bottom-color: rgb(179, 179, 179); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(179, 179, 179); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(179, 179, 179); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(179, 179, 179); border-top-style: solid; border-top-width: 1px; clear: both; font-size: 12px; margin-top: 6px; padding-bottom: 8px; padding-left: 20px; padding-right: 8px; padding-top: 8px;"&gt;&lt;span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"&gt;Начиная с 10-ой версии Flash Player можно собирать&amp;nbsp;Excel-документы без участия сервера.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma, Helvetica, sans-serif; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 12px;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;с чем хочу с вами поделится.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Немного теории.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;В качестве &lt;b&gt;Excel&lt;/b&gt;-документов я рассматриваю документы созданные в &lt;a href="http://office.microsoft.com/ru-ru/excel/FX100487621049.aspx"&gt;Microsoft Excel 2007&lt;/a&gt; с расширением &lt;b&gt;.xlsx&lt;/b&gt;. Именно с этой версии Microsoft открыла свой формат электронных таблиц. И теперь - это не&amp;nbsp;файл&amp;nbsp;с бинарными записями, а .zip-архив с набором .xml-документов.&lt;br /&gt;&lt;br /&gt;Таким образом для создания &lt;b&gt;.xlsx&lt;/b&gt;-документов нам необходимо записать данные в .xml-документы, затем собрать их в .zip-архив и в завершении заменить его расширение на "&lt;b&gt;.xlsx&lt;/b&gt;".&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Что мы имеем во Flash Player?&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Полноценная работа с xml-разметкой (пакет классов &lt;a href="http://help.adobe.com/ru_RU/AS3LCR/Flash_10.0/flash/xml/package-detail.html"&gt;flash.xml&lt;/a&gt;). Мы можем с&amp;nbsp;легкостью&amp;nbsp;записывать наши данные в .xml-документы.&lt;/li&gt;&lt;li&gt;Работа с бинарными данными (класс &lt;a href="http://help.adobe.com/ru_RU/AS3LCR/Flash_10.0/flash/utils/ByteArray.html"&gt;flash.utils.ByteArray&lt;/a&gt;), с помощью которой можно организовать сборку zip-архива.&lt;/li&gt;&lt;li&gt;Сохранение бинарных данных на компьютер пользователя (класс &lt;a href="http://help.adobe.com/ru_RU/AS3LCR/Flash_10.0/flash/net/FileReference.html"&gt;flash.net.FileReference&lt;/a&gt;).&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;Всё что нам необходимо, мы имеем. Поэтому перейдем к практике.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Запись данных в XML&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;Первым делом нужно разобраться с содержимом &lt;b&gt;.xlsx&lt;/b&gt;-документа, а именно с .xml-документами. Для этого я в &lt;a href="http://office.microsoft.com/ru-ru/excel/FX100487621049.aspx"&gt;Microsoft Excel 2007&lt;/a&gt; создал новый документ,&amp;nbsp;сделал некоторые записи,&lt;br /&gt;&lt;br /&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_S7Dbp6MOKn8/S_N_JnFOd6I/AAAAAAAAATQ/HqdPMpwPp5o/s320/2010-05-19+10+02+56.png" /&gt;&lt;br /&gt;&lt;br /&gt;сохранил, поменял расширение на .zip и&amp;nbsp;увидел&amp;nbsp;такую вот структуру с каталогами и файлами.&lt;br /&gt;&lt;br /&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_S7Dbp6MOKn8/S_OBKvdr6hI/AAAAAAAAATY/CCC-bz4v9kQ/s320/2010-05-19+09+57+06.png" /&gt;&lt;br /&gt;&lt;br /&gt;Свои записи (Ivan, Ivanov, Ivanovich) я нашел в файле xl/sharedString.xml. Насколько я понял, это хранилище для текстовой&amp;nbsp;информации.&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma, Helvetica, sans-serif; font-size: 12px;"&gt;&lt;/span&gt;&lt;pre class="code" style="background-color: #fbf9f5; border-bottom-color: rgb(179, 179, 179); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(179, 179, 179); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(179, 179, 179); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(179, 179, 179); border-top-style: solid; border-top-width: 1px; clear: both; font-family: Courier, monospace !important; font-size: 12px; margin-top: 6px; overflow-x: auto; overflow-y: auto; padding-bottom: 8px; padding-left: 20px; padding-right: 8px; padding-top: 8px;"&gt;&lt;span class="tag" style="font-family: Courier, monospace; font-size: 12px;"&gt;&amp;lt;&lt;span class="title" style="color: teal; font-family: Courier, monospace; font-size: 12px;"&gt;sst&lt;/span&gt;&lt;span class="tag_internal" style="font-family: Courier, monospace; font-size: 12px;"&gt;&lt;span class="attribute" style="font-family: Courier, monospace; font-size: 12px;"&gt; xmlns=&lt;span class="value" style="color: teal; font-family: Courier, monospace; font-size: 12px;"&gt;"http://schemas.openxmlformats.org/spreadsheetml/2006/main"&lt;/span&gt;&lt;/span&gt;&lt;span class="attribute" style="font-family: Courier, monospace; font-size: 12px;"&gt; count=&lt;span class="value" style="color: teal; font-family: Courier, monospace; font-size: 12px;"&gt;"3"&lt;/span&gt;&lt;/span&gt;&lt;span class="attribute" style="font-family: Courier, monospace; font-size: 12px;"&gt; uniqueCount=&lt;span class="value" style="color: teal; font-family: Courier, monospace; font-size: 12px;"&gt;"3"&lt;/span&gt;&lt;/span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;span class="tag" style="font-family: Courier, monospace; font-size: 12px;"&gt;&amp;lt;&lt;span class="title" style="color: teal; font-family: Courier, monospace; font-size: 12px;"&gt;si&lt;/span&gt;&lt;span class="tag_internal" style="font-family: Courier, monospace; font-size: 12px;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="tag" style="font-family: Courier, monospace; font-size: 12px;"&gt;&amp;lt;&lt;span class="tag_internal" style="font-family: Courier, monospace; font-size: 12px;"&gt;t&amp;gt;&lt;/span&gt;&lt;/span&gt;Ivanov&lt;span class="tag" style="font-family: Courier, monospace; font-size: 12px;"&gt;&amp;lt;&lt;span class="tag_internal" style="font-family: Courier, monospace; font-size: 12px;"&gt;t&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="tag" style="font-family: Courier, monospace; font-size: 12px;"&gt;&amp;lt;&lt;span class="title" style="color: teal; font-family: Courier, monospace; font-size: 12px;"&gt;si&lt;/span&gt;&lt;span class="tag_internal" style="font-family: Courier, monospace; font-size: 12px;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;span class="tag" style="font-family: Courier, monospace; font-size: 12px;"&gt;&amp;lt;&lt;span class="title" style="color: teal; font-family: Courier, monospace; font-size: 12px;"&gt;si&lt;/span&gt;&lt;span class="tag_internal" style="font-family: Courier, monospace; font-size: 12px;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="tag" style="font-family: Courier, monospace; font-size: 12px;"&gt;&amp;lt;&lt;span class="tag_internal" style="font-family: Courier, monospace; font-size: 12px;"&gt;t&amp;gt;&lt;/span&gt;&lt;/span&gt;Ivan&lt;span class="tag" style="font-family: Courier, monospace; font-size: 12px;"&gt;&amp;lt;&lt;span class="tag_internal" style="font-family: Courier, monospace; font-size: 12px;"&gt;t&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="tag" style="font-family: Courier, monospace; font-size: 12px;"&gt;&amp;lt;&lt;span class="title" style="color: teal; font-family: Courier, monospace; font-size: 12px;"&gt;si&lt;/span&gt;&lt;span class="tag_internal" style="font-family: Courier, monospace; font-size: 12px;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;span class="tag" style="font-family: Courier, monospace; font-size: 12px;"&gt;&amp;lt;&lt;span class="title" style="color: teal; font-family: Courier, monospace; font-size: 12px;"&gt;si&lt;/span&gt;&lt;span class="tag_internal" style="font-family: Courier, monospace; font-size: 12px;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="tag" style="font-family: Courier, monospace; font-size: 12px;"&gt;&amp;lt;&lt;span class="tag_internal" style="font-family: Courier, monospace; font-size: 12px;"&gt;t&amp;gt;&lt;/span&gt;&lt;/span&gt;Ivanovich&lt;span class="tag" style="font-family: Courier, monospace; font-size: 12px;"&gt;&amp;lt;&lt;span class="tag_internal" style="font-family: Courier, monospace; font-size: 12px;"&gt;t&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="tag" style="font-family: Courier, monospace; font-size: 12px;"&gt;&amp;lt;&lt;span class="title" style="color: teal; font-family: Courier, monospace; font-size: 12px;"&gt;si&lt;/span&gt;&lt;span class="tag_internal" style="font-family: Courier, monospace; font-size: 12px;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="tag" style="font-family: Courier, monospace; font-size: 12px;"&gt;&amp;lt;&lt;span class="title" style="color: teal; font-family: Courier, monospace; font-size: 12px;"&gt;sst&lt;/span&gt;&lt;span class="tag_internal" style="font-family: Courier, monospace; font-size: 12px;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;Далее я открыл файл xl/worksheets/sheet1.xml и действительно в описание столбца увидел ссылку (а точнее индекс) на содержимое из&amp;nbsp;xl/sharedString.xml.&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma, Helvetica, sans-serif; font-size: 12px;"&gt;&lt;/span&gt;&lt;pre class="code" style="background-color: #fbf9f5; border-bottom-color: rgb(179, 179, 179); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(179, 179, 179); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(179, 179, 179); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(179, 179, 179); border-top-style: solid; border-top-width: 1px; clear: both; font-family: Courier, monospace !important; font-size: 12px; margin-top: 6px; overflow-x: auto; overflow-y: auto; padding-bottom: 8px; padding-left: 20px; padding-right: 8px; padding-top: 8px;"&gt;...&lt;br /&gt;&lt;span class="tag" style="font-family: Courier, monospace; font-size: 12px;"&gt;&amp;lt;&lt;span class="title" style="color: teal; font-family: Courier, monospace; font-size: 12px;"&gt;row&lt;/span&gt;&lt;span class="tag_internal" style="font-family: Courier, monospace; font-size: 12px;"&gt;&lt;span class="attribute" style="font-family: Courier, monospace; font-size: 12px;"&gt; r=&lt;span class="value" style="color: teal; font-family: Courier, monospace; font-size: 12px;"&gt;"1"&lt;/span&gt;&lt;/span&gt;&lt;span class="attribute" style="font-family: Courier, monospace; font-size: 12px;"&gt; spans=&lt;span class="value" style="color: teal; font-family: Courier, monospace; font-size: 12px;"&gt;"1:3"&lt;/span&gt;&lt;/span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;span class="tag" style="font-family: Courier, monospace; font-size: 12px;"&gt;&amp;lt;&lt;span class="tag_internal" style="font-family: Courier, monospace; font-size: 12px;"&gt;c&lt;span class="attribute" style="font-family: Courier, monospace; font-size: 12px;"&gt; r=&lt;span class="value" style="color: teal; font-family: Courier, monospace; font-size: 12px;"&gt;"A1"&lt;/span&gt;&lt;/span&gt;&lt;span class="attribute" style="font-family: Courier, monospace; font-size: 12px;"&gt; t=&lt;span class="value" style="color: teal; font-family: Courier, monospace; font-size: 12px;"&gt;"s"&lt;/span&gt;&lt;/span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="tag" style="font-family: Courier, monospace; font-size: 12px;"&gt;&amp;lt;&lt;span class="tag_internal" style="font-family: Courier, monospace; font-size: 12px;"&gt;v&amp;gt;&lt;/span&gt;&lt;/span&gt;0&lt;span class="tag" style="font-family: Courier, monospace; font-size: 12px;"&gt;&amp;lt;&lt;span class="tag_internal" style="font-family: Courier, monospace; font-size: 12px;"&gt;v&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="tag" style="font-family: Courier, monospace; font-size: 12px;"&gt;&amp;lt;&lt;span class="tag_internal" style="font-family: Courier, monospace; font-size: 12px;"&gt;c&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="tag" style="font-family: Courier, monospace; font-size: 12px;"&gt;&amp;lt;&lt;span class="title" style="color: teal; font-family: Courier, monospace; font-size: 12px;"&gt;row&lt;/span&gt;&lt;span class="tag_internal" style="font-family: Courier, monospace; font-size: 12px;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;...&lt;/pre&gt;Для начала&amp;nbsp;этой информации нам достаточно.&lt;br /&gt;&lt;br /&gt;Рассматривать подробно все возможности записи .xml-документов&amp;nbsp;внутри &lt;b&gt;.xlsx&lt;/b&gt;-файлов я не буду. Ознакомится с ними можно&amp;nbsp;прочитав книгу "&lt;a href="http://share.dewil.ru/doc/OpenXML/OXML_BOOK_RU.pdf"&gt;OpenXML. Кратко и доступно&lt;/a&gt;", автором которой является Воутер Ван Вугт.&lt;br /&gt;&lt;br /&gt;Скажу только то, что благодаря такой открытой структуре &lt;b&gt;.xlsx&lt;/b&gt;-документа, вы сможете с легкостью записывать не только&amp;nbsp;текстовую&amp;nbsp;информацию, но и изображения, диаграммы и все остальные объекты &lt;b&gt;Microsoft Excel&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Сборка XML-документов в ZIP-архив&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Теперь когда с записью в .xml-документы&amp;nbsp;разобрались&amp;nbsp;давайте попробуем их собрать в архив. Писать архиватор мы не будем, используем готовый. Меньше всего проблем у меня возникло с библиотекой &lt;a href="http://codeazur.com.br/lab/fzip/"&gt;FZip&lt;/a&gt;, так что используем её.&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma, Helvetica, sans-serif; font-size: 12px;"&gt;&lt;/span&gt;&lt;pre class="code" style="background-color: #fbf9f5; border-bottom-color: rgb(179, 179, 179); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(179, 179, 179); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(179, 179, 179); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(179, 179, 179); border-top-style: solid; border-top-width: 1px; clear: both; font-family: Courier, monospace !important; font-size: 12px; margin-top: 6px; overflow-x: auto; overflow-y: auto; padding-bottom: 8px; padding-left: 20px; padding-right: 8px; padding-top: 8px;"&gt;...&lt;br /&gt;var zip:FZip = new FZip()&lt;span class="comment" style="color: grey; cursor: text !important; font-family: Courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;;&lt;/span&gt;&lt;br /&gt;zip&lt;span class="preprocessor" style="color: #2b91af; font-family: Courier, monospace; font-size: 12px;"&gt;.addFile&lt;/span&gt;(&lt;span class="string" style="color: teal; font-family: Courier, monospace; font-size: 12px;"&gt;"_rels/.rels"&lt;/span&gt;, Templates._RELS)&lt;span class="comment" style="color: grey; cursor: text !important; font-family: Courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;;&lt;/span&gt;&lt;br /&gt;zip&lt;span class="preprocessor" style="color: #2b91af; font-family: Courier, monospace; font-size: 12px;"&gt;.addFile&lt;/span&gt;(&lt;span class="string" style="color: teal; font-family: Courier, monospace; font-size: 12px;"&gt;"docProps/app.xml"&lt;/span&gt;, Templates&lt;span class="preprocessor" style="color: #2b91af; font-family: Courier, monospace; font-size: 12px;"&gt;.APP&lt;/span&gt;_XML)&lt;span class="comment" style="color: grey; cursor: text !important; font-family: Courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;;&lt;/span&gt;&lt;br /&gt;zip&lt;span class="preprocessor" style="color: #2b91af; font-family: Courier, monospace; font-size: 12px;"&gt;.addFile&lt;/span&gt;(&lt;span class="string" style="color: teal; font-family: Courier, monospace; font-size: 12px;"&gt;"docProps/core.xml"&lt;/span&gt;, Templates&lt;span class="preprocessor" style="color: #2b91af; font-family: Courier, monospace; font-size: 12px;"&gt;.CORE&lt;/span&gt;_XML)&lt;span class="comment" style="color: grey; cursor: text !important; font-family: Courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;;&lt;/span&gt;&lt;br /&gt;zip&lt;span class="preprocessor" style="color: #2b91af; font-family: Courier, monospace; font-size: 12px;"&gt;.addFile&lt;/span&gt;(&lt;span class="string" style="color: teal; font-family: Courier, monospace; font-size: 12px;"&gt;"xl/_rels/workbook.xml.rels"&lt;/span&gt;, Templates&lt;span class="preprocessor" style="color: #2b91af; font-family: Courier, monospace; font-size: 12px;"&gt;.WORKBOOK&lt;/span&gt;_XML_RELS)&lt;span class="comment" style="color: grey; cursor: text !important; font-family: Courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;;&lt;/span&gt;&lt;br /&gt;zip&lt;span class="preprocessor" style="color: #2b91af; font-family: Courier, monospace; font-size: 12px;"&gt;.addFile&lt;/span&gt;(&lt;span class="string" style="color: teal; font-family: Courier, monospace; font-size: 12px;"&gt;"xl/theme/theme1.xml"&lt;/span&gt;, Templates&lt;span class="preprocessor" style="color: #2b91af; font-family: Courier, monospace; font-size: 12px;"&gt;.THEME&lt;/span&gt;&lt;span class="number" style="color: green; font-family: Courier, monospace; font-size: 12px;"&gt;1&lt;/span&gt;)&lt;span class="comment" style="color: grey; cursor: text !important; font-family: Courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;;&lt;/span&gt;&lt;br /&gt;zip&lt;span class="preprocessor" style="color: #2b91af; font-family: Courier, monospace; font-size: 12px;"&gt;.addFile&lt;/span&gt;(&lt;span class="string" style="color: teal; font-family: Courier, monospace; font-size: 12px;"&gt;"xl/worksheets/_rels/sheet1.xml.rels"&lt;/span&gt;, Templates&lt;span class="preprocessor" style="color: #2b91af; font-family: Courier, monospace; font-size: 12px;"&gt;.SHEET&lt;/span&gt;&lt;span class="number" style="color: green; font-family: Courier, monospace; font-size: 12px;"&gt;1&lt;/span&gt;_XML_RELS)&lt;span class="comment" style="color: grey; cursor: text !important; font-family: Courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;;&lt;/span&gt;&lt;br /&gt;zip&lt;span class="preprocessor" style="color: #2b91af; font-family: Courier, monospace; font-size: 12px;"&gt;.addFile&lt;/span&gt;(&lt;span class="string" style="color: teal; font-family: Courier, monospace; font-size: 12px;"&gt;"xl/worksheets/sheet1.xml"&lt;/span&gt;, Templates&lt;span class="preprocessor" style="color: #2b91af; font-family: Courier, monospace; font-size: 12px;"&gt;.SHEET&lt;/span&gt;&lt;span class="number" style="color: green; font-family: Courier, monospace; font-size: 12px;"&gt;1&lt;/span&gt;_XML)&lt;span class="comment" style="color: grey; cursor: text !important; font-family: Courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;;&lt;/span&gt;&lt;br /&gt;zip&lt;span class="preprocessor" style="color: #2b91af; font-family: Courier, monospace; font-size: 12px;"&gt;.addFile&lt;/span&gt;(&lt;span class="string" style="color: teal; font-family: Courier, monospace; font-size: 12px;"&gt;"xl/sharedStrings.xml"&lt;/span&gt;, Templates&lt;span class="preprocessor" style="color: #2b91af; font-family: Courier, monospace; font-size: 12px;"&gt;.SHARED&lt;/span&gt;_STRING_XML)&lt;span class="comment" style="color: grey; cursor: text !important; font-family: Courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;;&lt;/span&gt;&lt;br /&gt;zip&lt;span class="preprocessor" style="color: #2b91af; font-family: Courier, monospace; font-size: 12px;"&gt;.addFile&lt;/span&gt;(&lt;span class="string" style="color: teal; font-family: Courier, monospace; font-size: 12px;"&gt;"xl/styles.xml"&lt;/span&gt;, Templates&lt;span class="preprocessor" style="color: #2b91af; font-family: Courier, monospace; font-size: 12px;"&gt;.STYLES&lt;/span&gt;_XML)&lt;span class="comment" style="color: grey; cursor: text !important; font-family: Courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;;&lt;/span&gt;&lt;br /&gt;zip&lt;span class="preprocessor" style="color: #2b91af; font-family: Courier, monospace; font-size: 12px;"&gt;.addFile&lt;/span&gt;(&lt;span class="string" style="color: teal; font-family: Courier, monospace; font-size: 12px;"&gt;"xl/workbook.xml"&lt;/span&gt;, Templates&lt;span class="preprocessor" style="color: #2b91af; font-family: Courier, monospace; font-size: 12px;"&gt;.WORKBOOK&lt;/span&gt;_XML)&lt;span class="comment" style="color: grey; cursor: text !important; font-family: Courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;;&lt;/span&gt;&lt;br /&gt;zip&lt;span class="preprocessor" style="color: #2b91af; font-family: Courier, monospace; font-size: 12px;"&gt;.addFile&lt;/span&gt;(&lt;span class="string" style="color: teal; font-family: Courier, monospace; font-size: 12px;"&gt;"[content_types].xml"&lt;/span&gt;, Templates&lt;span class="preprocessor" style="color: #2b91af; font-family: Courier, monospace; font-size: 12px;"&gt;.CONTENT&lt;/span&gt;_TYPES_XML)&lt;span class="comment" style="color: grey; cursor: text !important; font-family: Courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;;&lt;/span&gt;&lt;br /&gt;//&lt;br /&gt;var brr:ByteArray = new ByteArray()&lt;span class="comment" style="color: grey; cursor: text !important; font-family: Courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;;&lt;/span&gt;&lt;br /&gt;zip&lt;span class="preprocessor" style="color: #2b91af; font-family: Courier, monospace; font-size: 12px;"&gt;.serialize&lt;/span&gt;(brr, true)&lt;span class="comment" style="color: grey; cursor: text !important; font-family: Courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;;&lt;/span&gt;&lt;br /&gt;...&lt;/pre&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Сохранение на компьютер пользователя&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Сохранить, собранный архив на локальный диск пользователя, можно при помощи класса &lt;a href="http://help.adobe.com/ru_RU/AS3LCR/Flash_10.0/flash/net/FileReference.html"&gt;flash.net.FileReference&lt;/a&gt;. Начиная с 10 версии &lt;b&gt;FlashPlayer&lt;/b&gt;'a у этого класса появился метод save, который перед сохранением показывает диалоговое окно с выбор место сохранения. Вызываем его и в первом параметре пишем имя сохраняемого файла по умолчанию с расширением "&lt;b&gt;xlsx&lt;/b&gt;".&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma, Helvetica, sans-serif; font-size: 12px;"&gt;&lt;/span&gt;&lt;pre class="code" style="background-color: #fbf9f5; border-bottom-color: rgb(179, 179, 179); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(179, 179, 179); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(179, 179, 179); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(179, 179, 179); border-top-style: solid; border-top-width: 1px; clear: both; font-family: Courier, monospace !important; font-size: 12px; margin-top: 6px; overflow-x: auto; overflow-y: auto; padding-bottom: 8px; padding-left: 20px; padding-right: 8px; padding-top: 8px;"&gt;...&lt;br /&gt;var file:FileReference = new FileReference()&lt;span class="comment" style="color: grey; cursor: text !important; font-family: Courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="number" style="color: green; font-family: Courier, monospace; font-size: 12px;"&gt;f&lt;/span&gt;ile&lt;span class="preprocessor" style="color: #2b91af; font-family: Courier, monospace; font-size: 12px;"&gt;.save&lt;/span&gt;(&lt;span class="string" style="color: teal; font-family: Courier, monospace; font-size: 12px;"&gt;"excel_file.xlsx"&lt;/span&gt;, brr)&lt;span class="comment" style="color: grey; cursor: text !important; font-family: Courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;;&lt;/span&gt;&lt;br /&gt;...&lt;/pre&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Пример&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;object align="middle" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" height="138" id="main" width="400"&gt; &lt;param name="allowScriptAccess" value="sameDomain" /&gt;&lt;param name="allowFullScreen" value="false" /&gt;&lt;param name="movie" value="http://sites.google.com/site/as3coder/files/AS3CoderExcel.swf" /&gt;&lt;param name="quality" value="high" /&gt;&lt;param name="bgcolor" value="#F0F0F0" /&gt;&lt;embed src="http://sites.google.com/site/as3coder/files/AS3CoderExcel.swf" quality="high" bgcolor="#F0F0F0" width="400" height="138" name="main" align="middle" allowScriptAccess="sameDomain" allowFullScreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6470399064206765359-4539414658780754122?l=as3coder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://as3coder.blogspot.com/feeds/4539414658780754122/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://as3coder.blogspot.com/2010/05/excel-actionscript-30.html#comment-form' title='Комментарии: 13'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6470399064206765359/posts/default/4539414658780754122'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6470399064206765359/posts/default/4539414658780754122'/><link rel='alternate' type='text/html' href='http://as3coder.blogspot.com/2010/05/excel-actionscript-30.html' title='Создание Excel-документа на ActionScript 3.0'/><author><name>AS3Coder</name><uri>http://www.blogger.com/profile/14877548685763682250</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_S7Dbp6MOKn8/S3ZqfEQ54vI/AAAAAAAAAMI/j2FNwRKPohE/S220/129018458834145924.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_S7Dbp6MOKn8/S_N_JnFOd6I/AAAAAAAAATQ/HqdPMpwPp5o/s72-c/2010-05-19+10+02+56.png' height='72' width='72'/><thr:total>13</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6470399064206765359.post-643317245392858262</id><published>2010-04-26T22:32:00.007+04:00</published><updated>2010-04-27T23:05:23.564+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='начинающим'/><category scheme='http://www.blogger.com/atom/ns#' term='FlashDevelop'/><category scheme='http://www.blogger.com/atom/ns#' term='air'/><title type='text'>Создание AIR-приложения во FlashDevelop</title><content type='html'>&lt;h2&gt;Что такое AIR?&lt;/h2&gt;&lt;b&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;Adobe&lt;/b&gt;® &lt;b&gt;AIR&lt;/b&gt;™ - кросс-платформенная рабочая среда, предоставляющая разработчикам возможность использования технологий HTML, Ajax, Adobe Flash® и Adobe Flex® для создания многофункциональных настольных интернет-приложений.&lt;br /&gt;Подробные ответы можно найти на сайте &lt;a href="http://www.adobe.com/ru/products/air/faq/"&gt;Adobe&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Если проще, то с помощью &lt;a href="http://www.adobe.com/ru/products/air/"&gt;Adobe AIR&lt;/a&gt; мы можем заставить своё &lt;b&gt;AS3&lt;/b&gt;-приложение работать как полноценная настольная программа с доступом к файловой системе, с работой с базами данных SQL, а также другими возможностями, которых не хватает во Flash Player.&lt;br /&gt;&lt;br /&gt;Посмотреть полный список дополнительных возможностей можно в справочнике по языку &lt;b&gt;ActionScript 3.0&lt;/b&gt;. Классы, которые помечены иконкой &lt;img border="0" src="http://1.bp.blogspot.com/_S7Dbp6MOKn8/S9XPdLrx4wI/AAAAAAAAAOc/l5U0D92nMMk/s320/2010-04-26+21+31+12.png" /&gt; - логотипом технологии, предназначены для &lt;b&gt;AIR&lt;/b&gt;-приложений и являются отличным дополнением к тем, что мы используем во Flash Player.&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: 24px; font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: 24px; font-weight: bold;"&gt;Создание AIR-приложений&lt;/span&gt;&lt;br /&gt;&lt;h3&gt;Немного теории&lt;/h3&gt;&lt;b&gt;AIR&lt;/b&gt;-приложения можно собирать использую разные технологии: Ajax (Javascript + HTML) и ActionScript (Flash и Flex). В последней версии &lt;b&gt;FlashDevelop&lt;/b&gt; используется вариант с ActionScript и для этого имеется три типа проекта AIR AS3 Projector, AIR Flex 3 Projector и AIR Flex 4 Projector. Мы рассмотрим проект с чистым &lt;b&gt;ActionScript 3.0&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;Создаем новый проект "My First AIR Application":&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh6.ggpht.com/_S7Dbp6MOKn8/S9cy1LI6HvI/AAAAAAAAAPE/s008OSqpcjQ/s1600-h/AirIcon12x126.png"&gt;&lt;img alt="AirIcon12x12" border="0" height="477" src="http://lh3.ggpht.com/_S7Dbp6MOKn8/S9cy1jgtAYI/AAAAAAAAAPI/8QcfCDKxrXk/AirIcon12x12_thumb4.png?imgmax=800" style="border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline;" title="AirIcon12x12" width="545" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;Во вкладке "Project", мы увидим директорию проекта.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh5.ggpht.com/_S7Dbp6MOKn8/S9cy2Ke1FQI/AAAAAAAAAPM/n_Nju3Q0i20/s1600-h/201004262145529.png"&gt;&lt;img alt="2010-04-26 21 45 52" border="0" height="197" src="http://lh6.ggpht.com/_S7Dbp6MOKn8/S9cy2iMgY1I/AAAAAAAAAPQ/rtjXD1iMbxc/20100426214552_thumb7.png?imgmax=800" style="border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline;" title="2010-04-26 21 45 52" width="272" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;С директориями "bin", "lib" и "src" мы уже знакомы из &lt;a href="http://as3coder.blogspot.com/2009/09/as3-flashdevelop.html"&gt;раннего поста&lt;/a&gt;. А вот остальные файлы на не известны. Остановимся на них по-подробнее.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;AIR_readme.txt&lt;/b&gt; - текстовый файл с инструкцией на английском языке, о том как компилировать приложение. По сути всё-то, о чем я буду говорить ниже :)&lt;br /&gt;&lt;br /&gt;&lt;b&gt;application.xml&lt;/b&gt; - файл с настройками приложения. По умолчанию файл имеет минимум настроек - это имя идентификатор, версия, имя, описание, авторство и внешний вид окна приложения. Также здесь можно задать иконку приложению, причем разных размеров:&lt;br /&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; border-collapse: separate; color: black; font: normal normal normal 12px/normal tahoma, helvetica, sans-serif; letter-spacing: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;&lt;pre class="code" style="background-color: #fbf9f5; border-bottom: rgb(179,179,179) 1px solid; border-left: rgb(179,179,179) 1px solid; border-right: rgb(179,179,179) 1px solid; border-top: rgb(179,179,179) 1px solid; clear: both; font-family: courier, monospace !important; font-size: 12px; margin-top: 6px; overflow-x: auto; overflow-y: auto; padding-bottom: 8px; padding-left: 20px; padding-right: 8px; padding-top: 8px;"&gt;&lt;span class="tag" style="font-family: courier, monospace; font-size: 12px;"&gt;&amp;lt;&lt;span class="title" style="color: teal; font-family: courier, monospace; font-size: 12px;"&gt;icon&lt;/span&gt;&lt;span class="tag_internal" style="font-family: courier, monospace; font-size: 12px;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &lt;span class="tag" style="font-family: courier, monospace; font-size: 12px;"&gt;&amp;lt;&lt;span class="title" style="color: teal; font-family: courier, monospace; font-size: 12px;"&gt;image16x16&lt;/span&gt;&lt;span class="tag_internal" style="font-family: courier, monospace; font-size: 12px;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;icons/smallIcon.png&lt;span class="tag" style="font-family: courier, monospace; font-size: 12px;"&gt;&amp;lt;/&lt;span class="title" style="color: teal; font-family: courier, monospace; font-size: 12px;"&gt;image16x16&lt;/span&gt;&lt;span class="tag_internal" style="font-family: courier, monospace; font-size: 12px;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &lt;span class="tag" style="font-family: courier, monospace; font-size: 12px;"&gt;&amp;lt;&lt;span class="title" style="color: teal; font-family: courier, monospace; font-size: 12px;"&gt;image32x32&lt;/span&gt;&lt;span class="tag_internal" style="font-family: courier, monospace; font-size: 12px;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;icons/mediumIcon.png&lt;span class="tag" style="font-family: courier, monospace; font-size: 12px;"&gt;&amp;lt;/&lt;span class="title" style="color: teal; font-family: courier, monospace; font-size: 12px;"&gt;image32x32&lt;/span&gt;&lt;span class="tag_internal" style="font-family: courier, monospace; font-size: 12px;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &lt;span class="tag" style="font-family: courier, monospace; font-size: 12px;"&gt;&amp;lt;&lt;span class="title" style="color: teal; font-family: courier, monospace; font-size: 12px;"&gt;image48x48&lt;/span&gt;&lt;span class="tag_internal" style="font-family: courier, monospace; font-size: 12px;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;icons/bigIcon.png&lt;span class="tag" style="font-family: courier, monospace; font-size: 12px;"&gt;&amp;lt;/&lt;span class="title" style="color: teal; font-family: courier, monospace; font-size: 12px;"&gt;image48x48&lt;/span&gt;&lt;span class="tag_internal" style="font-family: courier, monospace; font-size: 12px;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &lt;span class="tag" style="font-family: courier, monospace; font-size: 12px;"&gt;&amp;lt;&lt;span class="title" style="color: teal; font-family: courier, monospace; font-size: 12px;"&gt;image128x128&lt;/span&gt;&lt;span class="tag_internal" style="font-family: courier, monospace; font-size: 12px;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;icons/biggestIcon.png&lt;span class="tag" style="font-family: courier, monospace; font-size: 12px;"&gt;&amp;lt;/&lt;span class="title" style="color: teal; font-family: courier, monospace; font-size: 12px;"&gt;image128x128&lt;/span&gt;&lt;span class="tag_internal" style="font-family: courier, monospace; font-size: 12px;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt; &lt;br /&gt;&lt;span class="tag" style="font-family: courier, monospace; font-size: 12px;"&gt;&amp;lt;/&lt;span class="title" style="color: teal; font-family: courier, monospace; font-size: 12px;"&gt;icon&lt;/span&gt;&lt;span class="tag_internal" style="font-family: courier, monospace; font-size: 12px;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/span&gt;можно указать директорию установки приложения и директорию в списке программ:&lt;br /&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; border-collapse: separate; color: black; font: normal normal normal 12px/normal tahoma, helvetica, sans-serif; letter-spacing: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;&lt;pre class="code" style="background-color: #fbf9f5; border-bottom: rgb(179,179,179) 1px solid; border-left: rgb(179,179,179) 1px solid; border-right: rgb(179,179,179) 1px solid; border-top: rgb(179,179,179) 1px solid; clear: both; font-family: courier, monospace !important; font-size: 12px; margin-top: 6px; overflow-x: auto; overflow-y: auto; padding-bottom: 8px; padding-left: 20px; padding-right: 8px; padding-top: 8px;"&gt;&lt;span class="tag" style="font-family: courier, monospace; font-size: 12px;"&gt;&amp;lt;&lt;span class="title" style="color: teal; font-family: courier, monospace; font-size: 12px;"&gt;installFolder&lt;/span&gt;&lt;span class="tag_internal" style="font-family: courier, monospace; font-size: 12px;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;Example Co/Hello World&lt;span class="tag" style="font-family: courier, monospace; font-size: 12px;"&gt;&amp;lt;/&lt;span class="title" style="color: teal; font-family: courier, monospace; font-size: 12px;"&gt;installFolder&lt;/span&gt;&lt;span class="tag_internal" style="font-family: courier, monospace; font-size: 12px;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="tag" style="font-family: courier, monospace; font-size: 12px;"&gt;&amp;lt;&lt;span class="title" style="color: teal; font-family: courier, monospace; font-size: 12px;"&gt;programMenuFolder&lt;/span&gt;&lt;span class="tag_internal" style="font-family: courier, monospace; font-size: 12px;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;Example Co&lt;span class="tag" style="font-family: courier, monospace; font-size: 12px;"&gt;&amp;lt;/&lt;span class="title" style="color: teal; font-family: courier, monospace; font-size: 12px;"&gt;programMenuFolder&lt;/span&gt;&lt;span class="tag_internal" style="font-family: courier, monospace; font-size: 12px;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/span&gt;можно разрешить устанавливать приложения из браузера:&lt;br /&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; border-collapse: separate; color: black; font: normal normal normal 12px/normal tahoma, helvetica, sans-serif; letter-spacing: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;&lt;pre class="code" style="background-color: #fbf9f5; border-bottom: rgb(179,179,179) 1px solid; border-left: rgb(179,179,179) 1px solid; border-right: rgb(179,179,179) 1px solid; border-top: rgb(179,179,179) 1px solid; clear: both; font-family: courier, monospace !important; font-size: 12px; margin-top: 6px; overflow-x: auto; overflow-y: auto; padding-bottom: 8px; padding-left: 20px; padding-right: 8px; padding-top: 8px;"&gt;&lt;span class="tag" style="font-family: courier, monospace; font-size: 12px;"&gt;&amp;lt;&lt;span class="title" style="color: teal; font-family: courier, monospace; font-size: 12px;"&gt;allowBrowserInvocation&lt;/span&gt;&lt;span class="tag_internal" style="font-family: courier, monospace; font-size: 12px;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;false&lt;span class="tag" style="font-family: courier, monospace; font-size: 12px;"&gt;&amp;lt;/&lt;span class="title" style="color: teal; font-family: courier, monospace; font-size: 12px;"&gt;allowBrowserInvocation&lt;/span&gt;&lt;span class="tag_internal" style="font-family: courier, monospace; font-size: 12px;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/span&gt;можно привязать к приложению файлы с заданным расширением, задав им свои иконки:&lt;br /&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; border-collapse: separate; color: black; font: normal normal normal 12px/normal tahoma, helvetica, sans-serif; letter-spacing: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;&lt;pre class="code" style="background-color: #fbf9f5; border-bottom: rgb(179,179,179) 1px solid; border-left: rgb(179,179,179) 1px solid; border-right: rgb(179,179,179) 1px solid; border-top: rgb(179,179,179) 1px solid; clear: both; font-family: courier, monospace !important; font-size: 12px; margin-top: 6px; overflow-x: auto; overflow-y: auto; padding-bottom: 8px; padding-left: 20px; padding-right: 8px; padding-top: 8px;"&gt;&lt;span class="tag" style="font-family: courier, monospace; font-size: 12px;"&gt;&amp;lt;&lt;span class="title" style="color: teal; font-family: courier, monospace; font-size: 12px;"&gt;fileTypes&lt;/span&gt;&lt;span class="tag_internal" style="font-family: courier, monospace; font-size: 12px;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="tag" style="font-family: courier, monospace; font-size: 12px;"&gt;&amp;lt;&lt;span class="title" style="color: teal; font-family: courier, monospace; font-size: 12px;"&gt;fileType&lt;/span&gt;&lt;span class="tag_internal" style="font-family: courier, monospace; font-size: 12px;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="tag" style="font-family: courier, monospace; font-size: 12px;"&gt;&amp;lt;&lt;span class="title" style="color: teal; font-family: courier, monospace; font-size: 12px;"&gt;name&lt;/span&gt;&lt;span class="tag_internal" style="font-family: courier, monospace; font-size: 12px;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;adobe.VideoFile&lt;span class="tag" style="font-family: courier, monospace; font-size: 12px;"&gt;&amp;lt;/&lt;span class="title" style="color: teal; font-family: courier, monospace; font-size: 12px;"&gt;name&lt;/span&gt;&lt;span class="tag_internal" style="font-family: courier, monospace; font-size: 12px;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="tag" style="font-family: courier, monospace; font-size: 12px;"&gt;&amp;lt;&lt;span class="title" style="color: teal; font-family: courier, monospace; font-size: 12px;"&gt;extension&lt;/span&gt;&lt;span class="tag_internal" style="font-family: courier, monospace; font-size: 12px;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;avf&lt;span class="tag" style="font-family: courier, monospace; font-size: 12px;"&gt;&amp;lt;/&lt;span class="title" style="color: teal; font-family: courier, monospace; font-size: 12px;"&gt;extension&lt;/span&gt;&lt;span class="tag_internal" style="font-family: courier, monospace; font-size: 12px;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="tag" style="font-family: courier, monospace; font-size: 12px;"&gt;&amp;lt;&lt;span class="title" style="color: teal; font-family: courier, monospace; font-size: 12px;"&gt;description&lt;/span&gt;&lt;span class="tag_internal" style="font-family: courier, monospace; font-size: 12px;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;Adobe Video File&lt;span class="tag" style="font-family: courier, monospace; font-size: 12px;"&gt;&amp;lt;/&lt;span class="title" style="color: teal; font-family: courier, monospace; font-size: 12px;"&gt;description&lt;/span&gt;&lt;span class="tag_internal" style="font-family: courier, monospace; font-size: 12px;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="tag" style="font-family: courier, monospace; font-size: 12px;"&gt;&amp;lt;&lt;span class="title" style="color: teal; font-family: courier, monospace; font-size: 12px;"&gt;contentType&lt;/span&gt;&lt;span class="tag_internal" style="font-family: courier, monospace; font-size: 12px;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;application/vnd.adobe.video-file&lt;span class="tag" style="font-family: courier, monospace; font-size: 12px;"&gt;&amp;lt;/&lt;span class="title" style="color: teal; font-family: courier, monospace; font-size: 12px;"&gt;contentType&lt;/span&gt;&lt;span class="tag_internal" style="font-family: courier, monospace; font-size: 12px;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="tag" style="font-family: courier, monospace; font-size: 12px;"&gt;&amp;lt;&lt;span class="title" style="color: teal; font-family: courier, monospace; font-size: 12px;"&gt;icon&lt;/span&gt;&lt;span class="tag_internal" style="font-family: courier, monospace; font-size: 12px;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="tag" style="font-family: courier, monospace; font-size: 12px;"&gt;&amp;lt;&lt;span class="title" style="color: teal; font-family: courier, monospace; font-size: 12px;"&gt;image16x16&lt;/span&gt;&lt;span class="tag_internal" style="font-family: courier, monospace; font-size: 12px;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;icons/avfIcon_16.png&lt;span class="tag" style="font-family: courier, monospace; font-size: 12px;"&gt;&amp;lt;/&lt;span class="title" style="color: teal; font-family: courier, monospace; font-size: 12px;"&gt;image16x16&lt;/span&gt;&lt;span class="tag_internal" style="font-family: courier, monospace; font-size: 12px;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="tag" style="font-family: courier, monospace; font-size: 12px;"&gt;&amp;lt;&lt;span class="title" style="color: teal; font-family: courier, monospace; font-size: 12px;"&gt;image32x32&lt;/span&gt;&lt;span class="tag_internal" style="font-family: courier, monospace; font-size: 12px;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;icons/avfIcon_32.png&lt;span class="tag" style="font-family: courier, monospace; font-size: 12px;"&gt;&amp;lt;/&lt;span class="title" style="color: teal; font-family: courier, monospace; font-size: 12px;"&gt;image32x32&lt;/span&gt;&lt;span class="tag_internal" style="font-family: courier, monospace; font-size: 12px;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="tag" style="font-family: courier, monospace; font-size: 12px;"&gt;&amp;lt;&lt;span class="title" style="color: teal; font-family: courier, monospace; font-size: 12px;"&gt;image48x48&lt;/span&gt;&lt;span class="tag_internal" style="font-family: courier, monospace; font-size: 12px;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;icons/avfIcon_48.png&lt;span class="tag" style="font-family: courier, monospace; font-size: 12px;"&gt;&amp;lt;/&lt;span class="title" style="color: teal; font-family: courier, monospace; font-size: 12px;"&gt;image48x48&lt;/span&gt;&lt;span class="tag_internal" style="font-family: courier, monospace; font-size: 12px;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="tag" style="font-family: courier, monospace; font-size: 12px;"&gt;&amp;lt;&lt;span class="title" style="color: teal; font-family: courier, monospace; font-size: 12px;"&gt;image128x128&lt;/span&gt;&lt;span class="tag_internal" style="font-family: courier, monospace; font-size: 12px;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;icons/avfIcon_128.png&lt;span class="tag" style="font-family: courier, monospace; font-size: 12px;"&gt;&amp;lt;/&lt;span class="title" style="color: teal; font-family: courier, monospace; font-size: 12px;"&gt;image128x128&lt;/span&gt;&lt;span class="tag_internal" style="font-family: courier, monospace; font-size: 12px;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="tag" style="font-family: courier, monospace; font-size: 12px;"&gt;&amp;lt;/&lt;span class="title" style="color: teal; font-family: courier, monospace; font-size: 12px;"&gt;icon&lt;/span&gt;&lt;span class="tag_internal" style="font-family: courier, monospace; font-size: 12px;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="tag" style="font-family: courier, monospace; font-size: 12px;"&gt;&amp;lt;/&lt;span class="title" style="color: teal; font-family: courier, monospace; font-size: 12px;"&gt;fileType&lt;/span&gt;&lt;span class="tag_internal" style="font-family: courier, monospace; font-size: 12px;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="tag" style="font-family: courier, monospace; font-size: 12px;"&gt;&amp;lt;/&lt;span class="title" style="color: teal; font-family: courier, monospace; font-size: 12px;"&gt;fileTypes&lt;/span&gt;&lt;span class="tag_internal" style="font-family: courier, monospace; font-size: 12px;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/span&gt;полный список настроек смотрите в &lt;a href="http://livedocs.adobe.com/flex/3/html/File_formats_1.html"&gt;официальной справке&lt;/a&gt; от Adobe.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;CreateCertificate.bat&lt;/b&gt; - исполняемый файл для создания само подписанного цифрового сертификата. Описывать сертификацию приложения в рамках данного материала, я не буду, постараюсь позже написать об этом отдельный пост. Скажу только одно: при установки приложения на компьютер у пользователя появляется диалоговое окно, с пугающими сообщениями:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh4.ggpht.com/_S7Dbp6MOKn8/S9cy3FqkXnI/AAAAAAAAAPU/lknTPt_QprQ/s1600-h/201004262154186.png"&gt;&lt;img alt="2010-04-26 21 54 18" border="0" height="393" src="http://lh6.ggpht.com/_S7Dbp6MOKn8/S9cy3ht8pmI/AAAAAAAAAPY/_UCs-b4MC0U/20100426215418_thumb4.png?imgmax=800" style="border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline;" title="2010-04-26 21 54 18" width="486" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Избежать этих сообщений можно использую сертификат выданный доверенным центром сертификации, таких как &lt;a href="http://www.verisign.com/"&gt;VeriSign&lt;/a&gt; or &lt;a href="http://www.thawte.com/"&gt;Thawte&lt;/a&gt;. Подробнее о сертификации также есть в официальной &lt;a href="http://livedocs.adobe.com/flex/3/html/help.html?content=distributing_apps_4.html#1037515"&gt;справке&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;PackageApplication.bat&lt;/b&gt; - исполняемый файл для сборки готового приложения. Подробнее &lt;a href="http://livedocs.adobe.com/flex/3/html/help.html?content=CommandLineTools_5.html#1035959"&gt;здесь&lt;/a&gt;.&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: 19px; font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: 19px; font-weight: bold;"&gt;Теперь практика&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;В качестве примера напишем приложение, которое выводит на экран и затем пишет все доступные данные о плеере и системе пользователя (данные статического класса &lt;a href="http://help.adobe.com/ru_RU/AS3LCR/Flash_10.0/flash/system/Capabilities.html"&gt;flash.system.Capabilities&lt;/a&gt;) в текстовый файл Capabilities.txt на рабочем столе.&lt;br /&gt;&lt;br /&gt;Открываем файл основного класса &lt;strong&gt;Main.as&lt;/strong&gt; и пишем туда:&lt;br /&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; border-collapse: separate; color: black; font: normal normal normal 12px/normal tahoma, helvetica, sans-serif; letter-spacing: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;&lt;pre class="code" style="background-color: #fbf9f5; border-bottom: rgb(179,179,179) 1px solid; border-left: rgb(179,179,179) 1px solid; border-right: rgb(179,179,179) 1px solid; border-top: rgb(179,179,179) 1px solid; clear: both; font-family: courier, monospace !important; font-size: 12px; margin-top: 6px; overflow-x: auto; overflow-y: auto; padding-bottom: 8px; padding-left: 20px; padding-right: 8px; padding-top: 8px;"&gt;&lt;span class="comment" style="color: grey; cursor: text !important; font-family: courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;/**&lt;br /&gt; * ...&lt;br /&gt; * @author AS3Coder&lt;br /&gt; */&lt;/span&gt;&lt;br /&gt;package &lt;br /&gt;{&lt;br /&gt;&amp;nbsp; &lt;span class="comment" style="color: grey; cursor: text !important; font-family: courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;/**&lt;br /&gt;&amp;nbsp;&amp;nbsp; * Импорт классов&lt;br /&gt;&amp;nbsp;&amp;nbsp; */&lt;/span&gt;&lt;br /&gt;&amp;nbsp; import flash&lt;span class="preprocessor" style="color: #2b91af; font-family: courier, monospace; font-size: 12px;"&gt;.filesystem&lt;/span&gt;&lt;span class="preprocessor" style="color: #2b91af; font-family: courier, monospace; font-size: 12px;"&gt;.File&lt;/span&gt;&lt;span class="comment" style="color: grey; cursor: text !important; font-family: courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;;&lt;/span&gt;&lt;br /&gt;&amp;nbsp; import flash&lt;span class="preprocessor" style="color: #2b91af; font-family: courier, monospace; font-size: 12px;"&gt;.filesystem&lt;/span&gt;&lt;span class="preprocessor" style="color: #2b91af; font-family: courier, monospace; font-size: 12px;"&gt;.FileStream&lt;/span&gt;&lt;span class="comment" style="color: grey; cursor: text !important; font-family: courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;;&lt;/span&gt;&lt;br /&gt;&amp;nbsp; import flash&lt;span class="preprocessor" style="color: #2b91af; font-family: courier, monospace; font-size: 12px;"&gt;.filesystem&lt;/span&gt;&lt;span class="preprocessor" style="color: #2b91af; font-family: courier, monospace; font-size: 12px;"&gt;.FileMode&lt;/span&gt;&lt;span class="comment" style="color: grey; cursor: text !important; font-family: courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;;&lt;/span&gt;&lt;br /&gt;&amp;nbsp; //&lt;br /&gt;&amp;nbsp; import flash&lt;span class="preprocessor" style="color: #2b91af; font-family: courier, monospace; font-size: 12px;"&gt;.display&lt;/span&gt;&lt;span class="preprocessor" style="color: #2b91af; font-family: courier, monospace; font-size: 12px;"&gt;.Sprite&lt;/span&gt;&lt;span class="comment" style="color: grey; cursor: text !important; font-family: courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;;&lt;/span&gt;&lt;br /&gt;&amp;nbsp; import flash&lt;span class="preprocessor" style="color: #2b91af; font-family: courier, monospace; font-size: 12px;"&gt;.display&lt;/span&gt;&lt;span class="preprocessor" style="color: #2b91af; font-family: courier, monospace; font-size: 12px;"&gt;.StageAlign&lt;/span&gt;&lt;span class="comment" style="color: grey; cursor: text !important; font-family: courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;;&lt;/span&gt;&lt;br /&gt;&amp;nbsp; import flash&lt;span class="preprocessor" style="color: #2b91af; font-family: courier, monospace; font-size: 12px;"&gt;.display&lt;/span&gt;&lt;span class="preprocessor" style="color: #2b91af; font-family: courier, monospace; font-size: 12px;"&gt;.StageScaleMode&lt;/span&gt;&lt;span class="comment" style="color: grey; cursor: text !important; font-family: courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;;&lt;/span&gt;&lt;br /&gt;&amp;nbsp; import flash&lt;span class="preprocessor" style="color: #2b91af; font-family: courier, monospace; font-size: 12px;"&gt;.system&lt;/span&gt;&lt;span class="preprocessor" style="color: #2b91af; font-family: courier, monospace; font-size: 12px;"&gt;.Capabilities&lt;/span&gt;&lt;span class="comment" style="color: grey; cursor: text !important; font-family: courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;;&lt;/span&gt;&lt;br /&gt;&amp;nbsp; import flash&lt;span class="preprocessor" style="color: #2b91af; font-family: courier, monospace; font-size: 12px;"&gt;.events&lt;/span&gt;&lt;span class="preprocessor" style="color: #2b91af; font-family: courier, monospace; font-size: 12px;"&gt;.Event&lt;/span&gt;&lt;span class="comment" style="color: grey; cursor: text !important; font-family: courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;;&lt;/span&gt;&lt;br /&gt;&amp;nbsp; import flash&lt;span class="preprocessor" style="color: #2b91af; font-family: courier, monospace; font-size: 12px;"&gt;.text&lt;/span&gt;&lt;span class="preprocessor" style="color: #2b91af; font-family: courier, monospace; font-size: 12px;"&gt;.TextField&lt;/span&gt;&lt;span class="comment" style="color: grey; cursor: text !important; font-family: courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;;&lt;/span&gt;&lt;br /&gt;&amp;nbsp; import flash&lt;span class="preprocessor" style="color: #2b91af; font-family: courier, monospace; font-size: 12px;"&gt;.text&lt;/span&gt;&lt;span class="preprocessor" style="color: #2b91af; font-family: courier, monospace; font-size: 12px;"&gt;.TextFormat&lt;/span&gt;&lt;span class="comment" style="color: grey; cursor: text !important; font-family: courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;;&lt;/span&gt;&lt;br /&gt;&amp;nbsp; import flash&lt;span class="preprocessor" style="color: #2b91af; font-family: courier, monospace; font-size: 12px;"&gt;.text&lt;/span&gt;&lt;span class="preprocessor" style="color: #2b91af; font-family: courier, monospace; font-size: 12px;"&gt;.TextFieldAutoSize&lt;/span&gt;&lt;span class="comment" style="color: grey; cursor: text !important; font-family: courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;;&lt;/span&gt;&lt;br /&gt;&amp;nbsp; import flash&lt;span class="preprocessor" style="color: #2b91af; font-family: courier, monospace; font-size: 12px;"&gt;.utils&lt;/span&gt;&lt;span class="preprocessor" style="color: #2b91af; font-family: courier, monospace; font-size: 12px;"&gt;.ByteArray&lt;/span&gt;&lt;span class="comment" style="color: grey; cursor: text !important; font-family: courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;;&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &lt;br /&gt;&amp;nbsp; &lt;span class="comment" style="color: grey; cursor: text !important; font-family: courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;/**&lt;br /&gt;&amp;nbsp;&amp;nbsp; * Основной класс приложения&lt;br /&gt;&amp;nbsp;&amp;nbsp; */&lt;/span&gt;&lt;br /&gt;&amp;nbsp; public class Main extends Sprite &lt;br /&gt;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="comment" style="color: grey; cursor: text !important; font-family: courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;/**&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * Конструктор&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; function Main():void &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; addEventListener(Event&lt;span class="preprocessor" style="color: #2b91af; font-family: courier, monospace; font-size: 12px;"&gt;.ADDED&lt;/span&gt;_TO_STAGE, onAddToStage, false, &lt;span class="number" style="color: green; font-family: courier, monospace; font-size: 12px;"&gt;0&lt;/span&gt;, true)&lt;span class="comment" style="color: grey; cursor: text !important; font-family: courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="comment" style="color: grey; cursor: text !important; font-family: courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;/**&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * Метод создает текстовое поле, заполняет его данными.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * Открывает поток и записывает содержимое &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * тектового поля в файл.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; private function create ():void&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var str:String&lt;span class="comment" style="color: grey; cursor: text !important; font-family: courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var txt:TextField&lt;span class="comment" style="color: grey; cursor: text !important; font-family: courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var fil:FileStream&lt;span class="comment" style="color: grey; cursor: text !important; font-family: courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; str = &lt;span class="string" style="color: teal; font-family: courier, monospace; font-size: 12px;"&gt;""&lt;/span&gt;&lt;span class="comment" style="color: grey; cursor: text !important; font-family: courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; str += &lt;span class="string" style="color: teal; font-family: courier, monospace; font-size: 12px;"&gt;"navHardwareDisable: "&lt;/span&gt; + Capabilities&lt;span class="preprocessor" style="color: #2b91af; font-family: courier, monospace; font-size: 12px;"&gt;.avHardwareDisable&lt;/span&gt;&lt;span class="comment" style="color: grey; cursor: text !important; font-family: courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; str += &lt;span class="string" style="color: teal; font-family: courier, monospace; font-size: 12px;"&gt;"\nhasAccessibility: "&lt;/span&gt; + Capabilities&lt;span class="preprocessor" style="color: #2b91af; font-family: courier, monospace; font-size: 12px;"&gt;.hasAccessibility&lt;/span&gt;&lt;span class="comment" style="color: grey; cursor: text !important; font-family: courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; str += &lt;span class="string" style="color: teal; font-family: courier, monospace; font-size: 12px;"&gt;"\nhasAudio: "&lt;/span&gt; + Capabilities&lt;span class="preprocessor" style="color: #2b91af; font-family: courier, monospace; font-size: 12px;"&gt;.hasAudio&lt;/span&gt;&lt;span class="comment" style="color: grey; cursor: text !important; font-family: courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; str += &lt;span class="string" style="color: teal; font-family: courier, monospace; font-size: 12px;"&gt;"\nhasAudioEncoder: "&lt;/span&gt; + Capabilities&lt;span class="preprocessor" style="color: #2b91af; font-family: courier, monospace; font-size: 12px;"&gt;.hasAudioEncoder&lt;/span&gt;&lt;span class="comment" style="color: grey; cursor: text !important; font-family: courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; str += &lt;span class="string" style="color: teal; font-family: courier, monospace; font-size: 12px;"&gt;"\nhasEmbeddedVideo: "&lt;/span&gt; + Capabilities&lt;span class="preprocessor" style="color: #2b91af; font-family: courier, monospace; font-size: 12px;"&gt;.hasEmbeddedVideo&lt;/span&gt;&lt;span class="comment" style="color: grey; cursor: text !important; font-family: courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; str += &lt;span class="string" style="color: teal; font-family: courier, monospace; font-size: 12px;"&gt;"\nhasIME: "&lt;/span&gt; + Capabilities&lt;span class="preprocessor" style="color: #2b91af; font-family: courier, monospace; font-size: 12px;"&gt;.hasIME&lt;/span&gt;&lt;span class="comment" style="color: grey; cursor: text !important; font-family: courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; str += &lt;span class="string" style="color: teal; font-family: courier, monospace; font-size: 12px;"&gt;"\nhasMP3: "&lt;/span&gt; + Capabilities&lt;span class="preprocessor" style="color: #2b91af; font-family: courier, monospace; font-size: 12px;"&gt;.hasMP&lt;/span&gt;&lt;span class="number" style="color: green; font-family: courier, monospace; font-size: 12px;"&gt;3&lt;/span&gt;&lt;span class="comment" style="color: grey; cursor: text !important; font-family: courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; str += &lt;span class="string" style="color: teal; font-family: courier, monospace; font-size: 12px;"&gt;"\nhasPrinting: "&lt;/span&gt; + Capabilities&lt;span class="preprocessor" style="color: #2b91af; font-family: courier, monospace; font-size: 12px;"&gt;.hasPrinting&lt;/span&gt;&lt;span class="comment" style="color: grey; cursor: text !important; font-family: courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; str += &lt;span class="string" style="color: teal; font-family: courier, monospace; font-size: 12px;"&gt;"\nhasScreenBroadcast: "&lt;/span&gt; + Capabilities&lt;span class="preprocessor" style="color: #2b91af; font-family: courier, monospace; font-size: 12px;"&gt;.hasScreenBroadcast&lt;/span&gt;&lt;span class="comment" style="color: grey; cursor: text !important; font-family: courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; str += &lt;span class="string" style="color: teal; font-family: courier, monospace; font-size: 12px;"&gt;"\nhasScreenPlayback: "&lt;/span&gt; + Capabilities&lt;span class="preprocessor" style="color: #2b91af; font-family: courier, monospace; font-size: 12px;"&gt;.hasScreenPlayback&lt;/span&gt;&lt;span class="comment" style="color: grey; cursor: text !important; font-family: courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; str += &lt;span class="string" style="color: teal; font-family: courier, monospace; font-size: 12px;"&gt;"\nhasStreamingAudio: "&lt;/span&gt; + Capabilities&lt;span class="preprocessor" style="color: #2b91af; font-family: courier, monospace; font-size: 12px;"&gt;.hasStreamingAudio&lt;/span&gt;&lt;span class="comment" style="color: grey; cursor: text !important; font-family: courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; str += &lt;span class="string" style="color: teal; font-family: courier, monospace; font-size: 12px;"&gt;"\nhasStreamingVideo: "&lt;/span&gt; + Capabilities&lt;span class="preprocessor" style="color: #2b91af; font-family: courier, monospace; font-size: 12px;"&gt;.hasStreamingVideo&lt;/span&gt;&lt;span class="comment" style="color: grey; cursor: text !important; font-family: courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; str += &lt;span class="string" style="color: teal; font-family: courier, monospace; font-size: 12px;"&gt;"\nhasTLS: "&lt;/span&gt; + Capabilities&lt;span class="preprocessor" style="color: #2b91af; font-family: courier, monospace; font-size: 12px;"&gt;.hasTLS&lt;/span&gt;&lt;span class="comment" style="color: grey; cursor: text !important; font-family: courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; str += &lt;span class="string" style="color: teal; font-family: courier, monospace; font-size: 12px;"&gt;"\nhasVideoEncoder: "&lt;/span&gt; + Capabilities&lt;span class="preprocessor" style="color: #2b91af; font-family: courier, monospace; font-size: 12px;"&gt;.hasVideoEncoder&lt;/span&gt;&lt;span class="comment" style="color: grey; cursor: text !important; font-family: courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; str += &lt;span class="string" style="color: teal; font-family: courier, monospace; font-size: 12px;"&gt;"\nisDebugger: "&lt;/span&gt; + Capabilities&lt;span class="preprocessor" style="color: #2b91af; font-family: courier, monospace; font-size: 12px;"&gt;.isDebugger&lt;/span&gt;&lt;span class="comment" style="color: grey; cursor: text !important; font-family: courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; str += &lt;span class="string" style="color: teal; font-family: courier, monospace; font-size: 12px;"&gt;"\nisEmbeddedInAcrobat: "&lt;/span&gt; + Capabilities&lt;span class="preprocessor" style="color: #2b91af; font-family: courier, monospace; font-size: 12px;"&gt;.isEmbeddedInAcrobat&lt;/span&gt;&lt;span class="comment" style="color: grey; cursor: text !important; font-family: courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; str += &lt;span class="string" style="color: teal; font-family: courier, monospace; font-size: 12px;"&gt;"\nlanguage: "&lt;/span&gt; + Capabilities&lt;span class="preprocessor" style="color: #2b91af; font-family: courier, monospace; font-size: 12px;"&gt;.language&lt;/span&gt;&lt;span class="comment" style="color: grey; cursor: text !important; font-family: courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; str += &lt;span class="string" style="color: teal; font-family: courier, monospace; font-size: 12px;"&gt;"\nlanguages: "&lt;/span&gt; + Capabilities&lt;span class="preprocessor" style="color: #2b91af; font-family: courier, monospace; font-size: 12px;"&gt;.languages&lt;/span&gt;&lt;span class="comment" style="color: grey; cursor: text !important; font-family: courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; str += &lt;span class="string" style="color: teal; font-family: courier, monospace; font-size: 12px;"&gt;"\nlocalFileReadDisable: "&lt;/span&gt; + Capabilities&lt;span class="preprocessor" style="color: #2b91af; font-family: courier, monospace; font-size: 12px;"&gt;.localFileReadDisable&lt;/span&gt;&lt;span class="comment" style="color: grey; cursor: text !important; font-family: courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; str += &lt;span class="string" style="color: teal; font-family: courier, monospace; font-size: 12px;"&gt;"\nmanufacturer: "&lt;/span&gt; + Capabilities&lt;span class="preprocessor" style="color: #2b91af; font-family: courier, monospace; font-size: 12px;"&gt;.manufacturer&lt;/span&gt;&lt;span class="comment" style="color: grey; cursor: text !important; font-family: courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; str += &lt;span class="string" style="color: teal; font-family: courier, monospace; font-size: 12px;"&gt;"\nmaxLevelIDC: "&lt;/span&gt; + Capabilities&lt;span class="preprocessor" style="color: #2b91af; font-family: courier, monospace; font-size: 12px;"&gt;.maxLevelIDC&lt;/span&gt;&lt;span class="comment" style="color: grey; cursor: text !important; font-family: courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; str += &lt;span class="string" style="color: teal; font-family: courier, monospace; font-size: 12px;"&gt;"\nos: "&lt;/span&gt; + Capabilities&lt;span class="preprocessor" style="color: #2b91af; font-family: courier, monospace; font-size: 12px;"&gt;.os&lt;/span&gt;&lt;span class="comment" style="color: grey; cursor: text !important; font-family: courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; str += &lt;span class="string" style="color: teal; font-family: courier, monospace; font-size: 12px;"&gt;"\npixelAspectRatio: "&lt;/span&gt; + Capabilities&lt;span class="preprocessor" style="color: #2b91af; font-family: courier, monospace; font-size: 12px;"&gt;.pixelAspectRatio&lt;/span&gt;&lt;span class="comment" style="color: grey; cursor: text !important; font-family: courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; str += &lt;span class="string" style="color: teal; font-family: courier, monospace; font-size: 12px;"&gt;"\nplayerType: "&lt;/span&gt; + Capabilities&lt;span class="preprocessor" style="color: #2b91af; font-family: courier, monospace; font-size: 12px;"&gt;.playerType&lt;/span&gt;&lt;span class="comment" style="color: grey; cursor: text !important; font-family: courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; str += &lt;span class="string" style="color: teal; font-family: courier, monospace; font-size: 12px;"&gt;"\nscreenColor: "&lt;/span&gt; + Capabilities&lt;span class="preprocessor" style="color: #2b91af; font-family: courier, monospace; font-size: 12px;"&gt;.screenColor&lt;/span&gt;&lt;span class="comment" style="color: grey; cursor: text !important; font-family: courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; str += &lt;span class="string" style="color: teal; font-family: courier, monospace; font-size: 12px;"&gt;"\nscreenDPI: "&lt;/span&gt; + Capabilities&lt;span class="preprocessor" style="color: #2b91af; font-family: courier, monospace; font-size: 12px;"&gt;.screenDPI&lt;/span&gt;&lt;span class="comment" style="color: grey; cursor: text !important; font-family: courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; str += &lt;span class="string" style="color: teal; font-family: courier, monospace; font-size: 12px;"&gt;"\nscreenResolutionX: "&lt;/span&gt; + Capabilities&lt;span class="preprocessor" style="color: #2b91af; font-family: courier, monospace; font-size: 12px;"&gt;.screenResolutionX&lt;/span&gt;&lt;span class="comment" style="color: grey; cursor: text !important; font-family: courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; str += &lt;span class="string" style="color: teal; font-family: courier, monospace; font-size: 12px;"&gt;"\nscreenResolutionY: "&lt;/span&gt; + Capabilities&lt;span class="preprocessor" style="color: #2b91af; font-family: courier, monospace; font-size: 12px;"&gt;.screenResolutionY&lt;/span&gt;&lt;span class="comment" style="color: grey; cursor: text !important; font-family: courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; str += &lt;span class="string" style="color: teal; font-family: courier, monospace; font-size: 12px;"&gt;"\nserverString: "&lt;/span&gt; + Capabilities&lt;span class="preprocessor" style="color: #2b91af; font-family: courier, monospace; font-size: 12px;"&gt;.serverString&lt;/span&gt;&lt;span class="comment" style="color: grey; cursor: text !important; font-family: courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; str += &lt;span class="string" style="color: teal; font-family: courier, monospace; font-size: 12px;"&gt;"\nversion: "&lt;/span&gt; + Capabilities&lt;span class="preprocessor" style="color: #2b91af; font-family: courier, monospace; font-size: 12px;"&gt;.version&lt;/span&gt;&lt;span class="comment" style="color: grey; cursor: text !important; font-family: courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; txt = new TextField()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; txt&lt;span class="preprocessor" style="color: #2b91af; font-family: courier, monospace; font-size: 12px;"&gt;.selectable&lt;/span&gt; = false&lt;span class="comment" style="color: grey; cursor: text !important; font-family: courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; txt&lt;span class="preprocessor" style="color: #2b91af; font-family: courier, monospace; font-size: 12px;"&gt;.multiline&lt;/span&gt; = true&lt;span class="comment" style="color: grey; cursor: text !important; font-family: courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; txt&lt;span class="preprocessor" style="color: #2b91af; font-family: courier, monospace; font-size: 12px;"&gt;.defaultTextFormat&lt;/span&gt; = new TextFormat(&lt;span class="string" style="color: teal; font-family: courier, monospace; font-size: 12px;"&gt;"Courier New"&lt;/span&gt;, &lt;span class="number" style="color: green; font-family: courier, monospace; font-size: 12px;"&gt;12&lt;/span&gt;)&lt;span class="comment" style="color: grey; cursor: text !important; font-family: courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; txt&lt;span class="preprocessor" style="color: #2b91af; font-family: courier, monospace; font-size: 12px;"&gt;.autoSize&lt;/span&gt; = TextFieldAutoSize&lt;span class="preprocessor" style="color: #2b91af; font-family: courier, monospace; font-size: 12px;"&gt;.LEFT&lt;/span&gt;&lt;span class="comment" style="color: grey; cursor: text !important; font-family: courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; txt&lt;span class="preprocessor" style="color: #2b91af; font-family: courier, monospace; font-size: 12px;"&gt;.text&lt;/span&gt; = str&lt;span class="comment" style="color: grey; cursor: text !important; font-family: courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; txt&lt;span class="preprocessor" style="color: #2b91af; font-family: courier, monospace; font-size: 12px;"&gt;.x&lt;/span&gt; = &lt;span class="number" style="color: green; font-family: courier, monospace; font-size: 12px;"&gt;10&lt;/span&gt;&lt;span class="comment" style="color: grey; cursor: text !important; font-family: courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; txt&lt;span class="preprocessor" style="color: #2b91af; font-family: courier, monospace; font-size: 12px;"&gt;.y&lt;/span&gt; = &lt;span class="number" style="color: green; font-family: courier, monospace; font-size: 12px;"&gt;10&lt;/span&gt;&lt;span class="comment" style="color: grey; cursor: text !important; font-family: courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; addChild(txt)&lt;span class="comment" style="color: grey; cursor: text !important; font-family: courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fil = new FileStream()&lt;span class="comment" style="color: grey; cursor: text !important; font-family: courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fil&lt;span class="preprocessor" style="color: #2b91af; font-family: courier, monospace; font-size: 12px;"&gt;.open&lt;/span&gt;(new File(File&lt;span class="preprocessor" style="color: #2b91af; font-family: courier, monospace; font-size: 12px;"&gt;.desktopDirectory&lt;/span&gt;&lt;span class="preprocessor" style="color: #2b91af; font-family: courier, monospace; font-size: 12px;"&gt;.nativePath&lt;/span&gt; + &lt;span class="string" style="color: teal; font-family: courier, monospace; font-size: 12px;"&gt;"/Capabilities.txt"&lt;/span&gt;), FileMode&lt;span class="preprocessor" style="color: #2b91af; font-family: courier, monospace; font-size: 12px;"&gt;.WRITE&lt;/span&gt;)&lt;span class="comment" style="color: grey; cursor: text !important; font-family: courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fil&lt;span class="preprocessor" style="color: #2b91af; font-family: courier, monospace; font-size: 12px;"&gt;.writeUTFBytes&lt;/span&gt;(str&lt;span class="preprocessor" style="color: #2b91af; font-family: courier, monospace; font-size: 12px;"&gt;.split&lt;/span&gt;(&lt;span class="string" style="color: teal; font-family: courier, monospace; font-size: 12px;"&gt;"\n"&lt;/span&gt;)&lt;span class="preprocessor" style="color: #2b91af; font-family: courier, monospace; font-size: 12px;"&gt;.join&lt;/span&gt;(&lt;span class="string" style="color: teal; font-family: courier, monospace; font-size: 12px;"&gt;"\r\n"&lt;/span&gt;))&lt;span class="comment" style="color: grey; cursor: text !important; font-family: courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fil&lt;span class="preprocessor" style="color: #2b91af; font-family: courier, monospace; font-size: 12px;"&gt;.close&lt;/span&gt;()&lt;span class="comment" style="color: grey; cursor: text !important; font-family: courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="comment" style="color: grey; cursor: text !important; font-family: courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;/**&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * Метод обрабатывает событие добавления &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * основного клипа приложения на сцену.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; private function onAddToStage (e:Event):void&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; removeEventListener(Event&lt;span class="preprocessor" style="color: #2b91af; font-family: courier, monospace; font-size: 12px;"&gt;.ADDED&lt;/span&gt;_TO_STAGE, onAddToStage, false)&lt;span class="comment" style="color: grey; cursor: text !important; font-family: courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; stage&lt;span class="preprocessor" style="color: #2b91af; font-family: courier, monospace; font-size: 12px;"&gt;.scaleMode&lt;/span&gt; = StageScaleMode&lt;span class="preprocessor" style="color: #2b91af; font-family: courier, monospace; font-size: 12px;"&gt;.NO&lt;/span&gt;_SCALE&lt;span class="comment" style="color: grey; cursor: text !important; font-family: courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; stage&lt;span class="preprocessor" style="color: #2b91af; font-family: courier, monospace; font-size: 12px;"&gt;.align&lt;/span&gt; = StageAlign&lt;span class="preprocessor" style="color: #2b91af; font-family: courier, monospace; font-size: 12px;"&gt;.TOP&lt;/span&gt;_LEFT&lt;span class="comment" style="color: grey; cursor: text !important; font-family: courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; create()&lt;span class="comment" style="color: grey; cursor: text !important; font-family: courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp; }&lt;br /&gt;}&lt;/pre&gt;&lt;/span&gt;Перейдем к настройкам. Попробуем задать окну приложения произвольную иконку. Для этого добавим в директорию “bin” файл изображения иконки, например такую &lt;a href="http://lh6.ggpht.com/_S7Dbp6MOKn8/S9cy4PCaOKI/AAAAAAAAAPc/njQsJCeWbB4/s1600-h/cog3.png"&gt;&lt;img alt="cog" border="0" height="16" src="http://lh5.ggpht.com/_S7Dbp6MOKn8/S9cy4WgIClI/AAAAAAAAAPg/HASpymWhM80/cog_thumb1.png?imgmax=800" style="border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline;" title="cog" width="16" /&gt;&lt;/a&gt; . Теперь откроем файл с настройками &lt;strong&gt;application.xml&lt;/strong&gt; и допишем туда блок:&lt;br /&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; border-collapse: separate; color: black; font: normal normal normal 12px/normal tahoma, helvetica, sans-serif; letter-spacing: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;&lt;pre class="code" style="background-color: #fbf9f5; border-bottom: rgb(179,179,179) 1px solid; border-left: rgb(179,179,179) 1px solid; border-right: rgb(179,179,179) 1px solid; border-top: rgb(179,179,179) 1px solid; clear: both; font-family: courier, monospace !important; font-size: 12px; margin-top: 6px; overflow-x: auto; overflow-y: auto; padding-bottom: 8px; padding-left: 20px; padding-right: 8px; padding-top: 8px;"&gt;&lt;span class="tag" style="font-family: courier, monospace; font-size: 12px;"&gt;&amp;lt;&lt;span class="title" style="color: teal; font-family: courier, monospace; font-size: 12px;"&gt;icon&lt;/span&gt;&lt;span class="tag_internal" style="font-family: courier, monospace; font-size: 12px;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &lt;span class="tag" style="font-family: courier, monospace; font-size: 12px;"&gt;&amp;lt;&lt;span class="title" style="color: teal; font-family: courier, monospace; font-size: 12px;"&gt;image16x16&lt;/span&gt;&lt;span class="tag_internal" style="font-family: courier, monospace; font-size: 12px;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;cog.png&lt;span class="tag" style="font-family: courier, monospace; font-size: 12px;"&gt;&amp;lt;/&lt;span class="title" style="color: teal; font-family: courier, monospace; font-size: 12px;"&gt;image16x16&lt;/span&gt;&lt;span class="tag_internal" style="font-family: courier, monospace; font-size: 12px;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="tag" style="font-family: courier, monospace; font-size: 12px;"&gt;&amp;lt;/&lt;span class="title" style="color: teal; font-family: courier, monospace; font-size: 12px;"&gt;icon&lt;/span&gt;&lt;span class="tag_internal" style="font-family: courier, monospace; font-size: 12px;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/span&gt;результат мы увидим позже.&lt;br /&gt;&lt;br /&gt;Теперь, когда код написан, добавлены настройки, можно переходить к сборке приложения. И для этого нам необходим сертификат подлинности. Для создания сертификата у нас имеется файл &lt;strong&gt;CreateCertificate.bat&lt;/strong&gt;. Но прежде чем запустить сценарий исполнения, необходимо открыть содержимое файла и на 9 строке поменять путь до &lt;strong&gt;Flex SDK&lt;/strong&gt;/bin на действительный. Узнать его можно в настройках &lt;strong&gt;FlashDevelop&lt;/strong&gt;:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh3.ggpht.com/_S7Dbp6MOKn8/S9cy5Ur2kQI/AAAAAAAAAPk/DUGKxN4gEmE/s1600-h/201004272150507.png"&gt;&lt;img alt="2010-04-27 21 50 50" border="0" height="364" src="http://lh3.ggpht.com/_S7Dbp6MOKn8/S9cy6Agb3fI/AAAAAAAAAPo/1PSu6awNLtc/20100427215050_thumb5.png?imgmax=800" style="border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline;" title="2010-04-27 21 50 50" width="640" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;После выполнения сценария в директории проекта появится файл самоподписанного сертификата:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh3.ggpht.com/_S7Dbp6MOKn8/S9cy64bgyPI/AAAAAAAAAPs/kC1MsiPMvL0/s1600-h/201004272152095.png"&gt;&lt;img alt="2010-04-27 21 52 09" border="0" height="253" src="http://lh3.ggpht.com/_S7Dbp6MOKn8/S9cy7pFRN5I/AAAAAAAAAPw/tjMk3zXllAY/20100427215209_thumb3.png?imgmax=800" style="border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline;" title="2010-04-27 21 52 09" width="272" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Для окончательной сборки &lt;strong&gt;AIR&lt;/strong&gt;-приложения запускаем &lt;strong&gt;PackageApplication.bat&lt;/strong&gt;. И увидим ошибку:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh5.ggpht.com/_S7Dbp6MOKn8/S9cy8A2BICI/AAAAAAAAAP0/x2LPSo71GSs/s1600-h/201004272154476.png"&gt;&lt;img alt="2010-04-27 21 54 47" border="0" height="342" src="http://lh5.ggpht.com/_S7Dbp6MOKn8/S9cy8lyT9qI/AAAAAAAAAP4/CmuMRm70zeA/20100427215447_thumb4.png?imgmax=800" style="border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline;" title="2010-04-27 21 54 47" width="677" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;также как в файле &lt;strong&gt;CreateCertificate.bat&lt;/strong&gt; нужно прописать действительный путь &lt;strong&gt;до Flex SDK&lt;/strong&gt;. Пробуем еще раз. Вводим пароль. И если все правильно, то в директории проекта появляется новая папка “&lt;strong&gt;air&lt;/strong&gt;”, в которой лежит наше приложение.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh4.ggpht.com/_S7Dbp6MOKn8/S9cy9P6wB0I/AAAAAAAAAP8/VT_JLP8ArG8/s1600-h/201004272158267.png"&gt;&lt;img alt="2010-04-27 21 58 26" border="0" height="276" src="http://lh4.ggpht.com/_S7Dbp6MOKn8/S9cy9kQugMI/AAAAAAAAAQA/ZWkm9mhr2wE/20100427215826_thumb5.png?imgmax=800" style="border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline;" title="2010-04-27 21 58 26" width="272" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Для запуска .&lt;strong&gt;air&lt;/strong&gt;-файлов на компьютере пользователя необходим плеер &lt;a href="http://get.adobe.com/ru/air/?promoid=BUIGQ"&gt;Adobe AIR&lt;/a&gt;. Если его нет, то нужно его поставить.&lt;br /&gt;&lt;br /&gt;Попробуем запустить полученный .air-файл. Мы увидим стандартный установщик с минимум настроек. После установки мы увидим ярлык нашего приложения. Теперь наше &lt;strong&gt;AIR&lt;/strong&gt;-приложение, является полноценной настольной программой. Запустив его, мы увидим в окне приложения ту иконку, которую мы указывали в настройках, а также файл Capabilities.txt на рабочем столе, который создала наша программа.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh4.ggpht.com/_S7Dbp6MOKn8/S9cy-K9cfpI/AAAAAAAAAQE/RJTl7wdvSMY/s1600-h/201004272203045.png"&gt;&lt;img alt="2010-04-27 22 03 04" border="0" height="519" src="http://lh5.ggpht.com/_S7Dbp6MOKn8/S9cy-yhG-mI/AAAAAAAAAQI/iEk-SID17Fg/20100427220304_thumb3.png?imgmax=800" style="border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline;" title="2010-04-27 22 03 04" width="812" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Вот так легко и быстро мы (web-разработчики) теперь можем создавать полноценные настольные программы.&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6470399064206765359-643317245392858262?l=as3coder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://as3coder.blogspot.com/feeds/643317245392858262/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://as3coder.blogspot.com/2010/04/air-flashdevelop.html#comment-form' title='Комментарии: 21'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6470399064206765359/posts/default/643317245392858262'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6470399064206765359/posts/default/643317245392858262'/><link rel='alternate' type='text/html' href='http://as3coder.blogspot.com/2010/04/air-flashdevelop.html' title='Создание AIR-приложения во FlashDevelop'/><author><name>AS3Coder</name><uri>http://www.blogger.com/profile/14877548685763682250</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_S7Dbp6MOKn8/S3ZqfEQ54vI/AAAAAAAAAMI/j2FNwRKPohE/S220/129018458834145924.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_S7Dbp6MOKn8/S9XPdLrx4wI/AAAAAAAAAOc/l5U0D92nMMk/s72-c/2010-04-26+21+31+12.png' height='72' width='72'/><thr:total>21</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6470399064206765359.post-8240695112215554858</id><published>2010-04-07T11:27:00.002+04:00</published><updated>2010-04-07T11:30:52.460+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='as3'/><category scheme='http://www.blogger.com/atom/ns#' term='начинающим'/><category scheme='http://www.blogger.com/atom/ns#' term='json'/><title type='text'>Работа с JSON в ActionScript 3.0</title><content type='html'>&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Что такое JSON?&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma, Helvetica, sans-serif; font-size: 12px;"&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma, Helvetica, sans-serif; font-size: 12px;"&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma, Helvetica, sans-serif; font-size: 12px;"&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma, Helvetica, sans-serif; font-size: 12px;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma, Helvetica, sans-serif; font-size: 12px;"&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma, Helvetica, sans-serif; font-size: 12px;"&gt;&lt;div style="background-color: white; font-family: Tahoma, Helvetica, sans-serif; font-size: 12px; margin-bottom: 5px; margin-left: 5px; margin-right: 5px; margin-top: 5px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;div class="quote" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: dashed; border-bottom-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: dashed; border-left-width: 1px; border-right-color: rgb(204, 204, 204); border-right-style: dashed; border-right-width: 1px; border-top-color: rgb(204, 204, 204); border-top-style: dashed; border-top-width: 1px; font-size: 12px; margin-bottom: 10px; margin-left: 10px; margin-right: 10px; margin-top: 10px; padding-bottom: 10px; padding-left: 10px; padding-right: 10px; padding-top: 10px;"&gt;&lt;span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"&gt;&lt;b&gt;JSON (JavaScript Object Notation)&lt;/b&gt; - простой формат обмена данными, удобный для чтения и написания как человеком, так и компьютером. Он основан на подмножестве языка программирования &lt;a href="http://javascript.crockford.com/"&gt;JavaScript&lt;/a&gt;, определенного в стандарте &lt;a href="http://www.ecma-international.org/publications/files/ecma-st/ECMA-262.pdf"&gt;ECMA-262 3rd Edition&lt;/a&gt; - December 1999. JSON - текстовый формат, полностью независимый от языка реализации, но он использует соглашения, знакомые программистам C-подобных языков, таких как C, C++, C#, Java, JavaScript, Perl, Python и многих других. Эти свойства делают JSON идеальным языком обмена данными.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Взято с сайта&amp;nbsp;&lt;/span&gt;&lt;a href="http://www.json.org/json-ru.html"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;www.json.org&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Зачем он нужен?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Обычно для обмена данными используется &lt;b&gt;XML&lt;/b&gt;-формат. Потому что для работы с ним в &lt;b&gt;ActionScript 3.0&lt;/b&gt; есть целый пакет классов &lt;a href="http://help.adobe.com/ru_RU/AS3LCR/Flash_10.0/flash/xml/package-detail.html"&gt;flash.xml&lt;/a&gt;, что облегчает работу с данными. Но имеется один недостаток - это вес данных. В &lt;b&gt;XML&lt;/b&gt;-обвязке используются названия узлов и атрибутов, и это в свою очередь значительно увеличивает вес данных при загрузке.&lt;br /&gt;&lt;br /&gt;Так вот, в &lt;b&gt;JSON&lt;/b&gt;-формате обвязка данных имеет минимальный вес, несмотря на то, что в нем имеются все возможности &lt;b&gt;XML&lt;/b&gt;-формата. Также к плюсам можно отнести то, что почти все современные языки программирования поддерживают его в какой-либо форме.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Синтаксис&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;JSON&lt;/b&gt;-объект строится двумя структурами:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Коллекция пар ключ/значение (В нашем понимании - это &lt;b&gt;Объект&lt;/b&gt;).&lt;/li&gt;&lt;li&gt;Упорядоченный список значений (&lt;b&gt;Массив&lt;/b&gt;).&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma, Helvetica, sans-serif; font-size: 12px;"&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma, Helvetica, sans-serif; font-size: 12px;"&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma, Helvetica, sans-serif; font-size: 12px;"&gt;&lt;pre class="code" style="background-color: #fbf9f5; border-bottom-color: rgb(179, 179, 179); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(179, 179, 179); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(179, 179, 179); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(179, 179, 179); border-top-style: solid; border-top-width: 1px; clear: both; font-family: Courier, monospace !important; font-size: 12px; margin-top: 6px; overflow-x: auto; overflow-y: auto; padding-bottom: 8px; padding-left: 20px; padding-right: 8px; padding-top: 8px;"&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp; "firstName": "Ivan",&lt;br /&gt;&amp;nbsp;&amp;nbsp; "lastName": "Ivanov",&lt;br /&gt;&amp;nbsp;&amp;nbsp; "address": {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "streetAddress": "100 Lenin str., apt. 53",&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "city": "Moscow",&lt;br /&gt;&amp;nbsp;&amp;nbsp; },&lt;br /&gt;&amp;nbsp;&amp;nbsp; "phoneNumbers": [&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "+7 123 4567890",&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "+7 098 7654321"&lt;br /&gt;&amp;nbsp;&amp;nbsp; ]&lt;br /&gt;}&lt;/pre&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;Подробнее о &lt;b&gt;JSON&lt;/b&gt;-формате:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.json.org/json-ru.html"&gt;Введение в JSON&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://ru.wikipedia.org/wiki/JSON#.D0.A1.D0.B8.D0.BD.D1.82.D0.B0.D0.BA.D1.81.D0.B8.D1.81"&gt;JSON-Википедия&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Работа с форматом в ActionScript 3.0&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;Как мы уже говорили, что почти все современные языки программирования поддерживают &lt;b&gt;JSON&lt;/b&gt;-формат. &lt;b&gt;ActionScript 3.0&lt;/b&gt; не исключение. Имеется специальная&amp;nbsp;библиотека классов&amp;nbsp;от &lt;a href="http://www.adobe.com/"&gt;Adobe&lt;/a&gt;&amp;nbsp;для работы с различными данными. Называется она &lt;b&gt;as3corelib&lt;/b&gt;. Доступна на &lt;a href="http://code.google.com/p/as3corelib/"&gt;Google Code&lt;/a&gt;.&lt;br /&gt;В ней имеется необходимый нам статический класс &lt;a href="http://code.google.com/p/as3corelib/source/browse/trunk/src/com/adobe/serialization/json/JSON.as"&gt;JSON.as&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Чтобы декодировать строку &lt;b&gt;JSON&lt;/b&gt;-формата в объект, необходимо вызвать у одноименного класса метод &lt;b&gt;decode&lt;/b&gt;.&lt;span class="Apple-style-span" style="font-family: Tahoma, Helvetica, sans-serif; font-size: 12px;"&gt;&lt;/span&gt;&lt;pre class="code" style="background-color: #fbf9f5; border-bottom-color: rgb(179, 179, 179); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(179, 179, 179); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(179, 179, 179); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(179, 179, 179); border-top-style: solid; border-top-width: 1px; clear: both; font-family: Courier, monospace !important; font-size: 12px; margin-top: 6px; overflow-x: auto; overflow-y: auto; padding-bottom: 8px; padding-left: 20px; padding-right: 8px; padding-top: 8px;"&gt;var obj:Object = JSON.decode(str);&lt;/pre&gt;Для того, чтобы преобразовать объект в строку нужно вызывать метод &lt;b&gt;encode&lt;/b&gt;.&lt;span class="Apple-style-span" style="font-family: Tahoma, Helvetica, sans-serif; font-size: 12px;"&gt;&lt;/span&gt;&lt;pre class="code" style="background-color: #fbf9f5; border-bottom-color: rgb(179, 179, 179); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(179, 179, 179); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(179, 179, 179); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(179, 179, 179); border-top-style: solid; border-top-width: 1px; clear: both; font-family: Courier, monospace !important; font-size: 12px; margin-top: 6px; overflow-x: auto; overflow-y: auto; padding-bottom: 8px; padding-left: 20px; padding-right: 8px; padding-top: 8px;"&gt;var str:String = JSON.encode(obj);&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6470399064206765359-8240695112215554858?l=as3coder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://as3coder.blogspot.com/feeds/8240695112215554858/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://as3coder.blogspot.com/2010/04/json-actionscript-30.html#comment-form' title='Комментарии: 5'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6470399064206765359/posts/default/8240695112215554858'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6470399064206765359/posts/default/8240695112215554858'/><link rel='alternate' type='text/html' href='http://as3coder.blogspot.com/2010/04/json-actionscript-30.html' title='Работа с JSON в ActionScript 3.0'/><author><name>AS3Coder</name><uri>http://www.blogger.com/profile/14877548685763682250</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_S7Dbp6MOKn8/S3ZqfEQ54vI/AAAAAAAAAMI/j2FNwRKPohE/S220/129018458834145924.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6470399064206765359.post-8688530304854674311</id><published>2010-03-26T10:01:00.003+03:00</published><updated>2010-03-27T17:18:47.663+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='as3'/><category scheme='http://www.blogger.com/atom/ns#' term='начинающим'/><title type='text'>Загрузка и отображение .bmp-изображений на ActionScript 3.0</title><content type='html'>Все мы знаем, что для того, чтобы загрузить изображение во &lt;b&gt;as3&lt;/b&gt;-приложение, обычно используется экземпляр класса &lt;a href="http://help.adobe.com/ru_RU/AS3LCR/Flash_10.0/flash/display/Loader.html"&gt;flash.display.Loader&lt;/a&gt;. Но типы загружаемых изображений ограничены. Возможно загрузка только .&lt;b&gt;png&lt;/b&gt;, .&lt;b&gt;jpg&lt;/b&gt;, .&lt;b&gt;gif&lt;/b&gt;, .&lt;b&gt;swf&lt;/b&gt;-файлов. А как быть например с .&lt;b&gt;bmp&lt;/b&gt;-изображениями? Об этом мы и поговорим.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;URLLoader.load();&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Загружать изображение будем как бинарные данные, с помощью экземпляра класса &lt;a href="http://help.adobe.com/ru_RU/AS3LCR/Flash_10.0/flash/net/URLLoader.html"&gt;flash.net.URLLoader&lt;/a&gt;. Указываем экземпляру формат загружаемых данных &lt;a href="http://help.adobe.com/ru_RU/AS3LCR/Flash_10.0/flash/net/URLLoaderDataFormat.html#BINARY"&gt;URLLoaderDataFormat.BINARY&lt;/a&gt;, и вызываем метод &lt;a href="http://help.adobe.com/ru_RU/AS3LCR/Flash_10.0/flash/net/URLLoader.html#load()"&gt;load&lt;/a&gt;, где в качестве параметра передаем экземпляр класса &lt;a href="http://help.adobe.com/ru_RU/AS3LCR/Flash_10.0/flash/net/URLRequest.html"&gt;flash.net.URLRequest&lt;/a&gt; с адресом к файлу.&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma, Helvetica, sans-serif; font-size: 12px;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;pre class="code" style="background-color: #fbf9f5; border-bottom-color: rgb(179, 179, 179); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(179, 179, 179); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(179, 179, 179); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(179, 179, 179); border-top-style: solid; border-top-width: 1px; clear: both; font-family: Courier, monospace !important; font-size: 12px; margin-top: 6px; overflow-x: auto; overflow-y: auto; padding-bottom: 8px; padding-left: 20px; padding-right: 8px; padding-top: 8px;"&gt;var loa:URLLoader = new URLLoader()&lt;span class="comment" style="color: grey; cursor: text !important; font-family: Courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;;&lt;/span&gt;&lt;br /&gt;loa&lt;span class="preprocessor" style="font-family: Courier, monospace; font-size: 12px;"&gt;.&lt;/span&gt;&lt;span class="preprocessor" style="font-family: Courier, monospace; font-size: 12px;"&gt;dataFormat&lt;/span&gt; = URLLoaderDataFormat&lt;span class="preprocessor" style="font-family: Courier, monospace; font-size: 12px;"&gt;.BINARY&lt;/span&gt;&lt;span class="comment" style="color: grey; cursor: text !important; font-family: Courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;;&lt;/span&gt;&lt;br /&gt;loa&lt;span class="preprocessor" style="font-family: Courier, monospace; font-size: 12px;"&gt;.&lt;/span&gt;&lt;span class="preprocessor" style="font-family: Courier, monospace; font-size: 12px;"&gt;load&lt;/span&gt;(new URLRequest(&lt;span class="string" style="color: teal; font-family: Courier, monospace; font-size: 12px;"&gt;"image.bmp"&lt;/span&gt;))&lt;span class="comment" style="color: grey; cursor: text !important; font-family: Courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;ImageDecoder&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Так как все изображения сжаты определенными алгоритмами, для того, чтобы их отобразить, необходимо их раскодировать. В прошлом посте мы рассматривали &lt;b&gt;Encode&lt;/b&gt;r'ы изображений, и говорили о том, что писать их самому нет необходимости, потому что в сети полно готовых. Такая же ситуация и с &lt;b&gt;Decoder&lt;/b&gt;'ами. &lt;a href="http://www.google.ru/search?hl=ru&amp;amp;newwindow=1&amp;amp;q=bmpdecoder.as&amp;amp;lr=&amp;amp;aq=f&amp;amp;aqi=&amp;amp;aql=&amp;amp;oq=&amp;amp;gs_rfai="&gt;Ищем&lt;/a&gt;. Находим:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.libspark.org/browser/as3/BMPDecoder/src/com/voidelement/images/BMPDecoder.as"&gt;BMPDecoder.as&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;Использовать их довольно легко. Вызывается метод &lt;b&gt;decode&lt;/b&gt;, в единственном параметре передается ссылка на загруженные бинарные данные в виде экземпляра класса &lt;a href="http://help.adobe.com/ru_RU/AS3LCR/Flash_10.0/flash/utils/ByteArray.html"&gt;flash.utils.ByteArray&lt;/a&gt;&amp;nbsp;(Те данные, что мы загрузили с помощью &lt;b&gt;URLLoader&lt;/b&gt;). После исполнения возвращается экземпляр &lt;a href="http://help.adobe.com/ru_RU/AS3LCR/Flash_10.0/flash/display/BitmapData.html"&gt;flash.display.BitmapData&lt;/a&gt;, который мы уже можем отобразить используя &lt;a href="http://help.adobe.com/ru_RU/AS3LCR/Flash_10.0/flash/display/Bitmap.html"&gt;flash.display.Bitmap&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma, Helvetica, sans-serif; font-size: 12px;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;pre class="code" style="background-color: #fbf9f5; border-bottom-color: rgb(179, 179, 179); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(179, 179, 179); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(179, 179, 179); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(179, 179, 179); border-top-style: solid; border-top-width: 1px; clear: both; font-family: Courier, monospace !important; font-size: 12px; margin-top: 6px; overflow-x: auto; overflow-y: auto; padding-bottom: 8px; padding-left: 20px; padding-right: 8px; padding-top: 8px;"&gt;var brr:ByteArray = loa&lt;span class="preprocessor" style="color: black; font-family: Courier, monospace; font-size: 12px;"&gt;.data&lt;/span&gt;&lt;span class="comment" style="color: grey; cursor: text !important; font-family: Courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;;&lt;/span&gt;&lt;br /&gt;v&lt;span style="color: black; font-family: Courier, monospace; font-size: 12px;"&gt;ar &lt;/span&gt;&lt;span class="keyword" style="color: black; font-family: Courier, monospace; font-size: 12px;"&gt;dec&lt;/span&gt;&lt;span style="color: black; font-family: Courier, monospace; font-size: 12px;"&gt;:B&lt;/span&gt;MPDecoder = new BMPDecoder ()&lt;span class="comment" style="color: grey; cursor: text !important; font-family: Courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;;&lt;/span&gt;&lt;br /&gt;var raw:BitmapData = &lt;span class="keyword" style="color: black; font-family: Courier, monospace; font-size: 12px;"&gt;dec&lt;/span&gt;&lt;span class="preprocessor" style="color: black; font-family: Courier, monospace; font-size: 12px;"&gt;.decode&lt;/span&gt;(brr)&lt;span class="comment" style="color: grey; cursor: text !important; font-family: Courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;; &lt;/span&gt;&lt;br /&gt;var bmp:Bitmap = new Bitmap(raw)&lt;span class="comment" style="color: grey; cursor: text !important; font-family: Courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="number" style="color: black; font-family: Courier, monospace; font-size: 12px;"&gt;a&lt;/span&gt;&lt;span class="number" style="color: black; font-family: Courier, monospace; font-size: 12px;"&gt;d&lt;/span&gt;&lt;span class="number" style="color: black; font-family: Courier, monospace; font-size: 12px;"&gt;d&lt;/span&gt;&lt;span class="number" style="color: black; font-family: Courier, monospace; font-size: 12px;"&gt;C&lt;/span&gt;&lt;span style="color: black; font-family: Courier, monospace; font-size: 12px;"&gt;hild(bmp&lt;/span&gt;)&lt;span class="comment" style="color: grey; cursor: text !important; font-family: Courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div&gt;В сети можно также найти &lt;b&gt;Decoder&lt;/b&gt;'ы для других типов файлов. Например для .&lt;b&gt;tiff &lt;/b&gt;(Tagged Image File Format), и даже .psd-файлов (Photoshop Document). Так что теперь дело за вами :)&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman'; font-size: medium;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&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/6470399064206765359-8688530304854674311?l=as3coder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://as3coder.blogspot.com/feeds/8688530304854674311/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://as3coder.blogspot.com/2010/03/bmp-actionscript-30.html#comment-form' title='Комментарии: 4'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6470399064206765359/posts/default/8688530304854674311'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6470399064206765359/posts/default/8688530304854674311'/><link rel='alternate' type='text/html' href='http://as3coder.blogspot.com/2010/03/bmp-actionscript-30.html' title='Загрузка и отображение .bmp-изображений на ActionScript 3.0'/><author><name>AS3Coder</name><uri>http://www.blogger.com/profile/14877548685763682250</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_S7Dbp6MOKn8/S3ZqfEQ54vI/AAAAAAAAAMI/j2FNwRKPohE/S220/129018458834145924.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6470399064206765359.post-4889719693681913881</id><published>2010-03-26T09:42:00.000+03:00</published><updated>2010-03-26T09:42:06.189+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='help'/><category scheme='http://www.blogger.com/atom/ns#' term='flex 4'/><title type='text'>Доступен справочник по языку Adobe Flex 4 ActionScript 3.0 на русском языке</title><content type='html'>Не прошло и &lt;a href="http://opensource.adobe.com/wiki/display/site/2010/03/22/Flex+4+and+Flash+Builder+4+Have+Shipped!"&gt;недели&lt;/a&gt;, как Adobe уже перевела на русский язык официальную &lt;a href="http://help.adobe.com/ru_RU/AS3LCR/Flex_4.0/#top"&gt;справку&lt;/a&gt; ActionScript 3.0 под &lt;a href="http://opensource.adobe.com/wiki/display/flexsdk/Flex+4"&gt;Flex 4&lt;/a&gt;. Всегда бы так :)&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6470399064206765359-4889719693681913881?l=as3coder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://help.adobe.com/ru_RU/AS3LCR/Flex_4.0/#top' title='Доступен справочник по языку Adobe Flex 4 ActionScript 3.0 на русском языке'/><link rel='replies' type='application/atom+xml' href='http://as3coder.blogspot.com/feeds/4889719693681913881/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://as3coder.blogspot.com/2010/03/adobe-flex-4-actionscript-30.html#comment-form' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6470399064206765359/posts/default/4889719693681913881'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6470399064206765359/posts/default/4889719693681913881'/><link rel='alternate' type='text/html' href='http://as3coder.blogspot.com/2010/03/adobe-flex-4-actionscript-30.html' title='Доступен справочник по языку Adobe Flex 4 ActionScript 3.0 на русском языке'/><author><name>AS3Coder</name><uri>http://www.blogger.com/profile/14877548685763682250</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_S7Dbp6MOKn8/S3ZqfEQ54vI/AAAAAAAAAMI/j2FNwRKPohE/S220/129018458834145924.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6470399064206765359.post-4702420243485492485</id><published>2010-03-25T11:50:00.006+03:00</published><updated>2010-03-25T11:55:54.895+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='as3'/><category scheme='http://www.blogger.com/atom/ns#' term='начинающим'/><title type='text'>Сохранение изображения на ActionScript 3.0</title><content type='html'>Частенько бывает необходимость сохранить отображаемый во &lt;b&gt;Adobe Flash Player&lt;/b&gt;'е контент в изображение. Как это сделать, мы рассмотрим по пунктам:&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;BitmapData.draw();&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Для того, чтобы снять снимок с любого отображаемого объекта (основная их часть находится в пакете &lt;a href="http://help.adobe.com/ru_RU/AS3LCR/Flash_10.0/flash/display/package-detail.html"&gt;flash.display&lt;/a&gt;) в &lt;b&gt;ActionScript&lt;/b&gt;, нужно воспользоваться методом &lt;a href="http://help.adobe.com/ru_RU/AS3LCR/Flash_10.0/flash/display/BitmapData.html#draw()"&gt;draw&lt;/a&gt; у экземпляра класса &lt;a href="http://help.adobe.com/ru_RU/AS3LCR/Flash_10.0/flash/display/BitmapData.html"&gt;flash.display.BitmapData&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Для этого необходимо создать экземпляр класса &lt;b&gt;BitmapData&lt;/b&gt;. В конструкторе указываем размеры нашего снимка. Далее вызываем метод &lt;b&gt;draw&lt;/b&gt;, где в качестве параметра передадим ссылку на необходимый нам display-объект (в данном случае, это экземпляр сцены).&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma, Helvetica, sans-serif; font-size: 12px;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="background-color: white; font-family: Tahoma, Helvetica, sans-serif; font-size: 12px; margin-bottom: 5px; margin-left: 5px; margin-right: 5px; margin-top: 5px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;pre class="code" style="background-color: #fbf9f5; border-bottom-color: rgb(179, 179, 179); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(179, 179, 179); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(179, 179, 179); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(179, 179, 179); border-top-style: solid; border-top-width: 1px; clear: both; font-family: Courier, monospace !important; font-size: 12px; margin-top: 6px; overflow-x: auto; overflow-y: auto; padding-bottom: 8px; padding-left: 20px; padding-right: 8px; padding-top: 8px;"&gt;var raw:BitmapData = new BitmapData(stage&lt;span class="preprocessor" style="color: #2b91af; font-family: Courier, monospace; font-size: 12px;"&gt;.stageWidth&lt;/span&gt;, stage&lt;span class="preprocessor" style="color: #2b91af; font-family: Courier, monospace; font-size: 12px;"&gt;.stageHeight&lt;/span&gt;)&lt;span class="comment" style="color: grey; cursor: text !important; font-family: Courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;;&lt;/span&gt;&lt;br /&gt;raw&lt;span class="preprocessor" style="color: #2b91af; font-family: Courier, monospace; font-size: 12px;"&gt;.draw&lt;/span&gt;(stage)&lt;span class="comment" style="color: grey; cursor: text !important; font-family: Courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;После выполнения метода наш экземпляр заполнится сырыми данными с информацией о каждом пикселе.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;ImageEncoder&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Теперь для того, чтобы наш экземпляр класса &lt;b&gt;BitmapData &lt;/b&gt;с сырыми данными стал полноценным изображением, нужно сконвертировать его данные соответсвующим образом и собрать их в файл.&lt;br /&gt;&lt;br /&gt;В качестве файла мы используем экземпляр класса &lt;a href="http://help.adobe.com/ru_RU/AS3LCR/Flash_10.0/flash/utils/ByteArray.html"&gt;flash.utils.ByteArray&lt;/a&gt;. В него мы будем записывать сконвертированные&amp;nbsp;данные в виде байтов.&lt;br /&gt;&lt;br /&gt;Изображения бывают разных типов. Наиболее популярные из них &lt;b&gt;.png&lt;/b&gt; (Portable Network Graphics), &lt;b&gt;.jpg&lt;/b&gt; (Joint Photographic Experts Group), &lt;b&gt;.bmp&lt;/b&gt; (Bitmap Picture).&amp;nbsp;Отличаются они по алгоритмам сжатия, поэтому в разных типах результат имеет разное качество. На данный момент &lt;b&gt;Encoder&lt;/b&gt;'ов изображений на &lt;b&gt;ActionScript 3.0&lt;/b&gt; достаточно, и нет необходимости писать их самим. Поэтому мы воспользуемся готовыми:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://code.google.com/p/as3corelib/source/browse/trunk/src/com/adobe/images/PNGEncoder.as?r=25"&gt;PNGEncoder.as&lt;/a&gt; (Во Flex 4 этот класс входит в &lt;a href="http://help.adobe.com/ru_RU/AS3LCR/Flex_4.0/mx/graphics/codec/PNGEncoder.html"&gt;стандартную поставку&lt;/a&gt; от Adobe)&lt;/li&gt;&lt;li&gt;&lt;a href="http://code.google.com/p/as3corelib/source/browse/trunk/src/com/adobe/images/JPGEncoder.as?r=25"&gt;JPGEncoder.as&lt;/a&gt;&amp;nbsp;(Во Flex 4 этот класс входит в&amp;nbsp;&lt;a href="http://help.adobe.com/ru_RU/AS3LCR/Flex_4.0/mx/graphics/codec/JPEGEncoder.html"&gt;стандартную поставку&lt;/a&gt;&amp;nbsp;от Adobe)&lt;/li&gt;&lt;li&gt;&lt;a href="http://code.google.com/p/canvas3/source/browse/trunk/source/code/com/adobe/images/BMPEncoder.as?r=18"&gt;BMPEncoder.as&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;В сети также полно &lt;b&gt;Encoder&lt;/b&gt;'ов и для других типов изображений.&lt;br /&gt;&lt;br /&gt;Пример использования &lt;b&gt;PNGEncoder.as&lt;/b&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma, Helvetica, sans-serif; font-size: 12px;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="background-color: white; font-family: Tahoma, Helvetica, sans-serif; font-size: 12px; margin-bottom: 5px; margin-left: 5px; margin-right: 5px; margin-top: 5px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;pre class="code" style="background-color: #fbf9f5; border-bottom-color: rgb(179, 179, 179); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(179, 179, 179); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(179, 179, 179); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(179, 179, 179); border-top-style: solid; border-top-width: 1px; clear: both; font-family: Courier, monospace !important; font-size: 12px; margin-top: 6px; overflow-x: auto; overflow-y: auto; padding-bottom: 8px; padding-left: 20px; padding-right: 8px; padding-top: 8px;"&gt;var brr:ByteArray = PNGEncoder.encode(raw);&lt;/pre&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;FileRerence.save();&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Теперь полученный экземпляр класса &lt;b&gt;ByteArray&lt;/b&gt; необходимо сохранить в файл на компьютере пользователя.&amp;nbsp;Для решения этой задачи можно воспользоваться методом &lt;a href="http://help.adobe.com/ru_RU/AS3LCR/Flash_10.0/flash/net/FileReference.html#save()"&gt;save&lt;/a&gt; экземпляра класса &lt;a href="http://help.adobe.com/ru_RU/AS3LCR/Flash_10.0/flash/net/FileReference.html"&gt;flash.net.FileReference&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;В версиях &lt;b&gt;Adobe Flash Player&lt;/b&gt; раннее 10, 1.5 этого метода нет. Поэтому приходилось отдавать &lt;b&gt;ByteArray&lt;/b&gt; на сервер, который сохранял у себя его в файл и отдавал ссылку на него.&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma, Helvetica, sans-serif; font-size: 12px;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="background-color: white; font-family: Tahoma, Helvetica, sans-serif; font-size: 12px; margin-bottom: 5px; margin-left: 5px; margin-right: 5px; margin-top: 5px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;pre class="code" style="background-color: #fbf9f5; border-bottom-color: rgb(179, 179, 179); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(179, 179, 179); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(179, 179, 179); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(179, 179, 179); border-top-style: solid; border-top-width: 1px; clear: both; font-family: Courier, monospace !important; font-size: 12px; margin-top: 6px; overflow-x: auto; overflow-y: auto; padding-bottom: 8px; padding-left: 20px; padding-right: 8px; padding-top: 8px;"&gt;var fil:FileReference = new FileReference()&lt;span class="comment" style="color: grey; cursor: text !important; font-family: Courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span class="number" style="color: green; font-family: Courier, monospace; font-size: 12px;"&gt;f&lt;/span&gt;il&lt;span class="preprocessor" style="color: #2b91af; font-family: Courier, monospace; font-size: 12px;"&gt;.save&lt;/span&gt;(brr, &lt;span class="string" style="color: teal; font-family: Courier, monospace; font-size: 12px;"&gt;"image.png"&lt;/span&gt;)&lt;span class="comment" style="color: grey; cursor: text !important; font-family: Courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;Вот что у меня получилось в качестве примера :)&lt;br /&gt;&lt;br /&gt;&lt;object align="middle" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" height="300" id="main" width="400"&gt; &lt;param name="allowScriptAccess" value="sameDomain" /&gt;&lt;param name="allowFullScreen" value="false" /&gt;&lt;param name="movie" value="http://sites.google.com/site/as3coder/files/AS3CoderSaveImage.swf" /&gt;&lt;param name="quality" value="high" /&gt;&lt;param name="bgcolor" value="#F0F0F0" /&gt;&lt;embed src="http://sites.google.com/site/as3coder/files/AS3CoderSaveImage.swf" quality="high" bgcolor="#F0F0F0" width="400" height="300" name="main" align="middle" allowScriptAccess="sameDomain" allowFullScreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6470399064206765359-4702420243485492485?l=as3coder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://as3coder.blogspot.com/feeds/4702420243485492485/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://as3coder.blogspot.com/2010/03/actionscript-30.html#comment-form' title='Комментарии: 42'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6470399064206765359/posts/default/4702420243485492485'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6470399064206765359/posts/default/4702420243485492485'/><link rel='alternate' type='text/html' href='http://as3coder.blogspot.com/2010/03/actionscript-30.html' title='Сохранение изображения на ActionScript 3.0'/><author><name>AS3Coder</name><uri>http://www.blogger.com/profile/14877548685763682250</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_S7Dbp6MOKn8/S3ZqfEQ54vI/AAAAAAAAAMI/j2FNwRKPohE/S220/129018458834145924.jpg'/></author><thr:total>42</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6470399064206765359.post-1658657336274556634</id><published>2010-03-15T21:25:00.004+03:00</published><updated>2010-05-05T20:35:46.064+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='as3'/><category scheme='http://www.blogger.com/atom/ns#' term='начинающим'/><category scheme='http://www.blogger.com/atom/ns#' term='Алгоритмы'/><title type='text'>Проекция точек на карту мира по географическим координатам</title><content type='html'>В данной статье мы рассмотрим проекцию точек на карту мира по &lt;a href="http://ru.wikipedia.org/wiki/%D0%93%D0%B5%D0%BE%D0%B3%D1%80%D0%B0%D1%84%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B5_%D0%BA%D0%BE%D0%BE%D1%80%D0%B4%D0%B8%D0%BD%D0%B0%D1%82%D1%8B"&gt;географическим координатам&lt;/a&gt;: широте и долготе. А если сказать точнее, то "Мы рассмотрим проекцию городов". Для примера возьмем посетителей этого &lt;a href="http://as3coder.blogspot.com/"&gt;блога&lt;/a&gt;, и покажем на карте их географию.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Выбор карты&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Первым делом необходимо выбрать карту, а точнее &lt;a href="http://ru.wikipedia.org/wiki/%D0%9A%D0%B0%D1%80%D1%82%D0%BE%D0%B3%D1%80%D0%B0%D1%84%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B0%D1%8F_%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%86%D0%B8%D1%8F"&gt;картографическую проекцию&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Картографические проекции&lt;/b&gt; - это математические способы изображения на плоскости поверхности земного эллипсоида или шара.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Проекции различают по характеру изображения:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;равноугольные,&amp;nbsp;&lt;/li&gt;&lt;li&gt;равновеликие,&lt;/li&gt;&lt;li&gt;произвольные;&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;и&amp;nbsp;по виду изображений параллелей и меридианов:&lt;br /&gt;&lt;br /&gt;&lt;table border="0" cellpadding="0" cellspacing="0"&gt;&lt;tbody&gt;&lt;tr&gt;    &lt;td align="center" valign="top"&gt;Цилиндрические&lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt;    &lt;td align="center" style="padding-bottom: 20px; padding-left: 20px;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_S7Dbp6MOKn8/S5foSXtjTQI/AAAAAAAAANc/AYe9msq2WBE/s320/cylindrical.jpg" /&gt;&lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt;    &lt;td align="center" valign="top"&gt;Конические&lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt;    &lt;td align="center" style="padding-bottom: 20px; padding-left: 20px;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_S7Dbp6MOKn8/S5fpGvTs97I/AAAAAAAAANk/1R1uIx-MPNg/s320/conical.jpg" /&gt;&lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt;    &lt;td align="center" valign="top"&gt;Азимутальные&lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt;    &lt;td align="center" style="padding-bottom: 20px; padding-left: 20px;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_S7Dbp6MOKn8/S5fqa9HsMoI/AAAAAAAAANs/whYjVrnS_HM/s320/azimuthal.jpg" /&gt;&lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt;    &lt;td align="center" valign="top" width="200px"&gt;Поликонические&lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt;    &lt;td align="center" style="padding-bottom: 20px; padding-left: 20px;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_S7Dbp6MOKn8/S5fqjDj86GI/AAAAAAAAAN0/bn7Ae2T_izk/s200/policonical.jpg" /&gt;&lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt;    &lt;td align="center" valign="top"&gt;Псевдоконические&lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt;    &lt;td align="center" style="padding-bottom: 20px; padding-left: 20px;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_S7Dbp6MOKn8/S5fqq3tH9YI/AAAAAAAAAN8/vdaSUCrH03U/s200/pseudoconical.jpg" /&gt;&lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt;    &lt;td align="center" valign="top"&gt;Псевдоцилиндрические:&lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt;    &lt;td align="center" style="padding-bottom: 20px; padding-left: 20px;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_S7Dbp6MOKn8/S5fqzU2g1wI/AAAAAAAAAOE/4IX2xGdcdJY/s320/pseudocylindrical.jpg" /&gt;&lt;/td&gt;   &lt;/tr&gt;&lt;/tbody&gt; &lt;/table&gt;Наиболее популярными являются цилиндрические карты. Мы же выберем превдоцилиндрическую проекцию "Произвольная псевдоцилиндрическая &lt;b&gt;проекция Робинсона&lt;/b&gt; (Robinson Cylindrical)".&lt;br /&gt;&lt;br /&gt;&lt;img border="0" height="157" src="http://2.bp.blogspot.com/_S7Dbp6MOKn8/S5fwKYMPkVI/AAAAAAAAAOM/Tz_YZsn9zRM/s320/robinson.png" width="320" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Преобразование координат&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Если посмотреть на вышеприведенную схему, то видно, что величина долготы обратно-пропорциональна модулю значения широты. Т.е. при увеличении модуля широты уменьшается &amp;nbsp; долгота. А величина широты, прямо-пропорциональна модулю её значению. Т.е. чем больше модуль значения, тем больше величина.&lt;br /&gt;&lt;br /&gt;Из этого следует что у нас есть две пропорции, зависящие от значения широты.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;PLEN&lt;/b&gt; - Пропорция изменения величины долготы&lt;/li&gt;&lt;li&gt;&lt;b&gt;PDFE&lt;/b&gt; - Пропорция изменения величины широты&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma, Helvetica, sans-serif; font-size: 12px;"&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma, Helvetica, sans-serif; font-size: 12px;"&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma, Helvetica, sans-serif; font-size: 12px;"&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma, Helvetica, sans-serif; font-size: 12px;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma, Helvetica, sans-serif; font-size: 12px;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma, Helvetica, sans-serif; font-size: 12px;"&gt;&lt;pre class="code" style="background-color: #fbf9f5; border-bottom-color: rgb(179, 179, 179); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(179, 179, 179); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(179, 179, 179); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(179, 179, 179); border-top-style: solid; border-top-width: 1px; clear: both; font-family: Courier, monospace !important; font-size: 12px; margin-top: 6px; overflow-x: auto; overflow-y: auto; padding-bottom: 8px; padding-left: 20px; padding-right: 8px; padding-top: 8px;"&gt;---------|--------|-------&lt;br /&gt;Latitude | PLEN &amp;nbsp;&amp;nbsp;| PDFE&lt;br /&gt;---------|--------|-------&lt;br /&gt;00       | 1.0000 | 0.0000&lt;br /&gt;05       | 0.9986 | 0.0620&lt;br /&gt;10       | 0.9954 | 0.1240&lt;br /&gt;15       | 0.9900 | 0.1860&lt;br /&gt;20       | 0.9822 | 0.2480&lt;br /&gt;25       | 0.9730 | 0.3100&lt;br /&gt;30       | 0.9600 | 0.3720&lt;br /&gt;35       | 0.9427 | 0.4340&lt;br /&gt;40       | 0.9216 | 0.4958&lt;br /&gt;45       | 0.8962 | 0.5571&lt;br /&gt;50       | 0.8679 | 0.6176&lt;br /&gt;55       | 0.8350 | 0.6769&lt;br /&gt;60       | 0.7986 | 0.7346&lt;br /&gt;65       | 0.7597 | 0.7903&lt;br /&gt;70       | 0.7186 | 0.8435&lt;br /&gt;75       | 0.6732 | 0.8936&lt;br /&gt;80       | 0.6213 | 0.9394&lt;br /&gt;85       | 0.5722 | 0.9761&lt;br /&gt;90       | 0.5322 | 1.000&lt;/pre&gt;&lt;/span&gt;&lt;/div&gt;Естественно градация в 5 градусов для широты огромна, и для отображения городов на карте не приемлема. Поэтому необходимо заполнить эту табличку для каждого целого числа от 0 до 90 градусов. А уже имея&amp;nbsp;заполненную&amp;nbsp;табличку с&amp;nbsp;пропорциями,&amp;nbsp;несложно сделать преобразование координат.&amp;nbsp;Для всего этого я написал класс, который сделает всё за нас.&lt;br /&gt;&lt;br /&gt;&lt;table cellpadding="0" cellspacing="0"&gt;&lt;tbody&gt;&lt;tr&gt; &lt;td style="padding-top: 8px;" valign="top" width="22px"&gt;&lt;img border="0" src="http://sites.google.com/site/as3coder/core/page_white_actionscript.png" /&gt;&lt;/td&gt; &lt;td valign="top"&gt;&lt;a href="http://sites.google.com/site/as3coder/files/Robinson.as"&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;ru.as3coder.map.projection.Robinson.as&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt; &lt;/table&gt;&lt;br /&gt;В конструктор экземпляра нужно передать ссылку на экземпляр карты Робинсона класса &lt;a href="http://help.adobe.com/ru_RU/AS3LCR/Flash_10.0/flash/display/DisplayObject.html"&gt;flash.display.DisplayObject&lt;/a&gt;. При инициализации автоматически заполнятся массивы с пропорциями, после чего будет доступен метод преобразования координат &lt;b&gt;export&lt;/b&gt; c параметрами &lt;b&gt;latitude&lt;/b&gt; и &lt;b&gt;longitude&lt;/b&gt;, который вернет экземпляр класса &lt;a href="http://help.adobe.com/ru_RU/AS3LCR/Flash_10.0/flash/geom/Point.html"&gt;flash.geom.Point&lt;/a&gt; с координатами для указанного в конструкторе экземпляра карты.&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma, Helvetica, sans-serif; font-size: 12px;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;pre class="code" style="background-color: #fbf9f5; border-bottom-color: rgb(179, 179, 179); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(179, 179, 179); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(179, 179, 179); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(179, 179, 179); border-top-style: solid; border-top-width: 1px; clear: both; font-family: Courier, monospace !important; font-size: 12px; margin-top: 6px; overflow-x: auto; overflow-y: auto; padding-bottom: 8px; padding-left: 20px; padding-right: 8px; padding-top: 8px;"&gt;&lt;span class="keyword" style="color: blue; font-family: Courier, monospace; font-size: 12px;"&gt;var&lt;/span&gt; robinson:Robinson = &lt;span class="keyword" style="color: blue; font-family: Courier, monospace; font-size: 12px;"&gt;new&lt;/span&gt; Robinson(map_sprite);&lt;br /&gt;&lt;span class="keyword" style="color: blue; font-family: Courier, monospace; font-size: 12px;"&gt;var&lt;/span&gt; point:Point = robinson.convert(&lt;span class="number" style="color: green; font-family: Courier, monospace; font-size: 12px;"&gt;55.7558&lt;/span&gt;, &lt;span class="number" style="color: green; font-family: Courier, monospace; font-size: 12px;"&gt;37.6176&lt;/span&gt;);&lt;/pre&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;География посетителей&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;В качестве примера я обещал привести географию посещения моего блога на карте мира.&lt;br /&gt;&lt;br /&gt;&lt;object align="middle" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" height="324" id="main" width="620"&gt; &lt;param name="allowScriptAccess" value="sameDomain" /&gt;&lt;param name="allowFullScreen" value="false" /&gt;&lt;param name="movie" value="http://sites.google.com/site/as3coder/files/AS3CoderWorldMap.swf" /&gt;&lt;param name="quality" value="high" /&gt;&lt;param name="bgcolor" value="#F0F0F0" /&gt;&lt;embed src="http://sites.google.com/site/as3coder/files/AS3CoderWorldMap.swf" quality="high" bgcolor="#F0F0F0" width="620" height="324" name="main" align="middle" allowScriptAccess="sameDomain" allowFullScreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Использованы&amp;nbsp;данные на 11 марта 2010 года.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6470399064206765359-1658657336274556634?l=as3coder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://as3coder.blogspot.com/feeds/1658657336274556634/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://as3coder.blogspot.com/2010/03/blog-post.html#comment-form' title='Комментарии: 8'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6470399064206765359/posts/default/1658657336274556634'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6470399064206765359/posts/default/1658657336274556634'/><link rel='alternate' type='text/html' href='http://as3coder.blogspot.com/2010/03/blog-post.html' title='Проекция точек на карту мира по географическим координатам'/><author><name>AS3Coder</name><uri>http://www.blogger.com/profile/14877548685763682250</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_S7Dbp6MOKn8/S3ZqfEQ54vI/AAAAAAAAAMI/j2FNwRKPohE/S220/129018458834145924.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_S7Dbp6MOKn8/S5foSXtjTQI/AAAAAAAAANc/AYe9msq2WBE/s72-c/cylindrical.jpg' height='72' width='72'/><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6470399064206765359.post-7299385953262786783</id><published>2010-03-03T10:38:00.001+03:00</published><updated>2010-03-04T10:28:05.115+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='начинающим'/><category scheme='http://www.blogger.com/atom/ns#' term='debug'/><title type='text'>Документированные и недокументированные возможности файла mm.cfg</title><content type='html'>При открытие FlashDevelop или любой другой среды разработки, использующей &lt;b&gt;FlexSDK&lt;/b&gt;, в папке пользователя появляется загадочный файл &lt;b&gt;mm.cfg&lt;/b&gt;.&lt;br /&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma, Helvetica, sans-serif; font-size: 12px;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;pre class="code" style="background-color: #fbf9f5; border-bottom-color: rgb(179, 179, 179); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(179, 179, 179); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(179, 179, 179); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(179, 179, 179); border-top-style: solid; border-top-width: 1px; clear: both; font-family: Courier, monospace !important; font-size: 12px; margin-top: 6px; overflow-x: auto; overflow-y: auto; padding-bottom: 8px; padding-left: 20px; padding-right: 8px; padding-top: 8px;"&gt;PolicyFileLog=1&lt;br /&gt;PolicyFileLogAppend=0&lt;br /&gt;ErrorReportingEnable=1&lt;br /&gt;TraceOutputFileEnable=1&lt;/pre&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: xx-large;"&gt;Что это за файл - mm.cfg?&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Из расширения можно догадаться, что файл конфигурационный. И действительно, этот файл описывает конфигурацию для &lt;a href="http://www.adobe.com/products/flashplayer/"&gt;Adobe Flash Player&lt;/a&gt;&amp;nbsp;&lt;b&gt;debug &lt;/b&gt;версии.&amp;nbsp;В нем перечислены параметры, которые используются Flash Player'ом для проигрывания .swf-файлов.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: xx-large;"&gt;Как мы можем его использовать?&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;А использовать мы его можем для отладки своих приложений. Изменяя параметры этого файла, мы можем получать различную информацию о ходе проигрывания .&lt;b&gt;swf&lt;/b&gt;-файла. В официальной &lt;a href="http://help.adobe.com/en_US/Flex/4.0/html/index.html"&gt;справке от Adobe&lt;/a&gt; в разделе&amp;nbsp;"&lt;a href="http://help.adobe.com/en_US/Flex/4.0/html/WS2db454920e96a9e51e63e3d11c0bf69084-7fc9.html"&gt;Editing the mm.cfg file&lt;/a&gt;" приведен небольшой список параметров:&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;ErrorReportingEnable&lt;/span&gt;&lt;/div&gt;&lt;div&gt;Логирования ошибок. Если параметр имеет значение 1, то отладчик будет записывать сообщения об ошибках в журнал. Если значение равно 0, ошибки будут игнорироваться.&amp;nbsp;По умолчанию значение равно 0.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;MaxWarnings&lt;/span&gt;&lt;/div&gt;&lt;div&gt;Параметр устанавливает максимальное количество предупреждений в журнале, после которого &amp;nbsp;предупреждения не выводятся. Значение по умолчанию 100. Для того, чтобы отключить ограничение необходимо выставить значение 0.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;PolicyFileLog&lt;/span&gt;&lt;br /&gt;&lt;div&gt;Логирование политики файла.&amp;nbsp;Если параметр имеет значение 1, то отладчик будет записывать сообщения политики в соответствующий журнал.Если значение равно 0, сообщения будут игнорироваться. По умолчанию значение равно 0.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;PolicyFileLogAppend&lt;/span&gt;&lt;/div&gt;&lt;div&gt;Позволяет сохранить предыдущие сообщения политики в журнале. Если значение равно 0, то при каждом новом проигрывании журнал очищается, и&amp;nbsp;заполняется&amp;nbsp;снова. Если значение равно 1, то предыдущие записи журнала остаются. Такое бывает удобно при тестировании приложения с множественными загрузками .swf-файлов.&amp;nbsp;По умолчанию значение равно 0.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;TraceOutputFileEnable&lt;/span&gt;&lt;/div&gt;&lt;div&gt;Параметр позволяет записывать в журнал результаты команды trace(). Если значение равно 1, то результаты команды записываются в журнал, если значение равно 0, то они игнорируются.&amp;nbsp;По умолчанию значение равно 0.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;TraceOutputFileName&lt;/span&gt;&lt;/div&gt;&lt;div&gt;Имя файла журнала логов приложения. По умолчанию значение равно flashlog.txt.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;В Windows журнал логов и политики находится по адресу&amp;nbsp;C:\Users\UserName\AppData\Roaming\Macromedia\Flash Player\Logs. В остальных смотрите &lt;a href="http://help.adobe.com/en_US/Flex/4.0/html/WS2db454920e96a9e51e63e3d11c0bf69084-7fc9.html"&gt;таблицу&lt;/a&gt; в справке Adobe.&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: xx-large;"&gt;Но как оказалось, это не все возможные параметры файла mm.cfg...&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;На блоге &lt;a href="http://jpauclair.net/"&gt;Jean-Philippe Auclair&lt;/a&gt;, за который ему огромное спасибо, недавно появился пост "&lt;a href="http://jpauclair.net/2010/02/10/mmcfg-treasure/"&gt;AS3 hidden treasure in the mm.cfg file. Revealing and documenting many Flash secrets!&lt;/a&gt;" о недокументированных возможностях файла &lt;b&gt;mm.cfg&lt;/b&gt;.&amp;nbsp;Расскажу&amp;nbsp;только о двух, которые особенно понравились:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;AS3Verbose&lt;/span&gt;&lt;br /&gt;&lt;div&gt;Позволяет получить подробную информацию о структуре и разборе байт-кода&amp;nbsp;.swf файла.&amp;nbsp;Параметр принимает значения 1 и 0&amp;nbsp;соответственно.&lt;br /&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, sans-serif; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; line-height: 22px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;AS3Trace&lt;/span&gt;&lt;br /&gt;Позволяет получить полную информацию о выполнении сценария Action Script 3.0. Вы можете увидеть полный ход выполнения всех методов и событий. Параметр принимает значения 1 и 0 соответственно.&lt;br /&gt;&lt;br /&gt;Полный список параметров смотрите на &lt;a href="http://jpauclair.net/2010/02/10/mmcfg-treasure/"&gt;блоге&lt;/a&gt; Jean-Philippe Auclair. Переведенный пост на русский язык вы можете найти на &lt;a href="http://flasher.ru/forum/blog.php?b=152"&gt;блоге&lt;/a&gt; пользователя форума &lt;a href="http://flasher.ru/"&gt;flasher.ru&lt;/a&gt; с ником «&lt;a href="http://flasher.ru/forum/member.php?u=37925"&gt;wvxvw&lt;/a&gt;», за что ему громаднейшее спасибо :)&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6470399064206765359-7299385953262786783?l=as3coder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://as3coder.blogspot.com/feeds/7299385953262786783/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://as3coder.blogspot.com/2010/03/mmcfg.html#comment-form' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6470399064206765359/posts/default/7299385953262786783'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6470399064206765359/posts/default/7299385953262786783'/><link rel='alternate' type='text/html' href='http://as3coder.blogspot.com/2010/03/mmcfg.html' title='Документированные и недокументированные возможности файла mm.cfg'/><author><name>AS3Coder</name><uri>http://www.blogger.com/profile/14877548685763682250</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_S7Dbp6MOKn8/S3ZqfEQ54vI/AAAAAAAAAMI/j2FNwRKPohE/S220/129018458834145924.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6470399064206765359.post-5151199929534573042</id><published>2010-02-24T22:29:00.001+03:00</published><updated>2010-02-24T22:29:50.643+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='flash player'/><category scheme='http://www.blogger.com/atom/ns#' term='Adobe'/><title type='text'>FITC 2010. Ежегодная ярмарка компьютерных технологий.</title><content type='html'>22 и 23 февраля в Амстердаме прошла ежегодная ярмарка компьютерных технологий &lt;a href="http://www.fitc.ca/events/about/?event=101"&gt;FITC 2010&lt;/a&gt;. На этом мероприятии, также как и на &lt;a href="http://www.mobileworldcongress.com/"&gt;предыдущем&lt;/a&gt;, много говорили о новых &lt;a href="http://labs.adobe.com/technologies/flashplayer10/"&gt;Adobe Flash Player 10.1&lt;/a&gt; и &lt;a href="http://labs.adobe.com/technologies/air2/"&gt;AIR 2&lt;/a&gt;, о достижениях внедрения Flash Platform'ы на мобильные устройства.&lt;br /&gt;&lt;br /&gt;Подробный отчет о первом дне "&lt;a href="http://www.flashmagazine.com/community/detail/fitc_2010_amsterdam_-_day_1/"&gt;FITC 2010 Amsterdam - Day 1&lt;/a&gt;" читайте на сайте &lt;a href="http://flashmagazine.com/"&gt;flashmagazine.com&lt;/a&gt;. Также есть информация на &lt;a href="http://www.fitc.ca/events/about/?event=101"&gt;официальном сайте&lt;/a&gt; мероприятия.&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6470399064206765359-5151199929534573042?l=as3coder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://as3coder.blogspot.com/feeds/5151199929534573042/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://as3coder.blogspot.com/2010/02/fitc-2010.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6470399064206765359/posts/default/5151199929534573042'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6470399064206765359/posts/default/5151199929534573042'/><link rel='alternate' type='text/html' href='http://as3coder.blogspot.com/2010/02/fitc-2010.html' title='FITC 2010. Ежегодная ярмарка компьютерных технологий.'/><author><name>AS3Coder</name><uri>http://www.blogger.com/profile/14877548685763682250</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_S7Dbp6MOKn8/S3ZqfEQ54vI/AAAAAAAAAMI/j2FNwRKPohE/S220/129018458834145924.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6470399064206765359.post-1684517266793825450</id><published>2010-02-19T10:37:00.002+03:00</published><updated>2010-02-19T10:39:31.590+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Adobe'/><title type='text'>Mobile World Congress завершен</title><content type='html'>Вчера в Барселоне был завершен четырехдневный конгресс мобильных технологий &lt;a href="http://www.mobileworldcongress.com/"&gt;Mobile World Congress&lt;/a&gt;. Огромный интерес на этом конгрессе вызвала компания &lt;a href="http://www.adobe.com/"&gt;Adobe&lt;/a&gt; со своими &lt;a href="http://labs.adobe.com/technologies/flashplayer10/"&gt;Adobe Flash Player 10.1&lt;/a&gt; и &lt;a href="http://labs.adobe.com/technologies/air2/"&gt;AIR&lt;/a&gt;. Осталось подвести итоги, а они есть :)&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Adobe Flash Player&lt;/b&gt; и &lt;b&gt;AIR &lt;/b&gt;появляется почти на всеx мобильных платформах. Многие производители мобильных устройств его уже поддерживают. Почти все из них продемонстрировали это на своих стендах.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Получить более подробную картину об итогах конгресса можно посмотрев видео на &lt;a href="http://tv.adobe.com/"&gt;AdobeTV&lt;/a&gt; в разделе &lt;a href="http://tv.adobe.com/show/adobe-at-mobile-world-congress-2010/"&gt;Adobe at Mobile World Congress&lt;/a&gt;. Я думаю с каждым днем там будет появляться все больше видео.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Также есть фотографии с конгресса на&amp;nbsp;&lt;a href="http://mwc2010.photoshop.com/"&gt;mwc2010.photoshop.com&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6470399064206765359-1684517266793825450?l=as3coder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://as3coder.blogspot.com/feeds/1684517266793825450/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://as3coder.blogspot.com/2010/02/mobile-world-congress_19.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6470399064206765359/posts/default/1684517266793825450'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6470399064206765359/posts/default/1684517266793825450'/><link rel='alternate' type='text/html' href='http://as3coder.blogspot.com/2010/02/mobile-world-congress_19.html' title='Mobile World Congress завершен'/><author><name>AS3Coder</name><uri>http://www.blogger.com/profile/14877548685763682250</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_S7Dbp6MOKn8/S3ZqfEQ54vI/AAAAAAAAAMI/j2FNwRKPohE/S220/129018458834145924.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6470399064206765359.post-4931474987123206939</id><published>2010-02-17T11:24:00.002+03:00</published><updated>2010-02-19T10:39:45.057+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Adobe'/><title type='text'>Mobile World Congress. День второй.</title><content type='html'>На блоге &lt;a href="http://blogs.adobe.com/flashplatform/"&gt;Adobe Flash Platform&lt;/a&gt; появился новый пост "&lt;a href="http://blogs.adobe.com/flashplatform/2010/02/adobes_keynote_at_blackberry_d.html"&gt;Day 2 Highlights at Mobile World Congress&lt;/a&gt;". В нем рассказано о втором дне &lt;a href="http://www.adobe.com/"&gt;Adobe&lt;/a&gt;&amp;nbsp;на конгрессе. Небольшая выдержка:&lt;br /&gt;&lt;br /&gt;Несомненно, в этом году на конгрессе огромный интерес вызывает &lt;b&gt;Adobe Flash Platform&lt;/b&gt;, и его поддержка на мобильных&amp;nbsp;устройствах.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Генеральный директор компании Google &lt;a href="http://en.wikipedia.org/wiki/Eric_E._Schmidt"&gt;Eric Schmidt&lt;/a&gt; дал понять, что &lt;a href="http://www.android.com/"&gt;Android&lt;/a&gt; будет предоставлять пользователям все возможности &lt;a href="http://labs.adobe.com/technologies/flashplayer10/"&gt;Adobe Flash Player 10.1&lt;/a&gt; для удобного и быстрого web-серфинга, а также аппаратное ускорение для видео. В подтверждение сказанному, Eric Tseng, топ-менеджер по продуктам Google продемонстрировал возможности полно-экранного видео и использование игр на Android.&lt;br /&gt;&lt;br /&gt;Также в отчете говорится о том, что Adobe, &lt;a href="http://www.rim.com/"&gt;RIM &lt;/a&gt;и другие партнеры, в рамках &lt;a href="http://www.openscreenproject.org/"&gt;Open Screen Project&lt;/a&gt;, уже сегодня работают над тем, чтобы Adobe Flash Player 10.1 и AIR появился на смартфонах&amp;nbsp;&lt;a href="http://www.blackberry.com/"&gt;BlackBerry&lt;/a&gt;. Adobe активно сотрудничает с разработчиками BlackBerry для внедрения и корректного отображения flash-контента на различных устройствах. Более подробно читайте сообщение&lt;br /&gt;&lt;a href="http://www.webkitchen.be/"&gt;Flash Player 10.1 and AIR coming to BlackBerry devices&lt;/a&gt;, на блоге &lt;a href="http://www.webkitchen.be/"&gt;Serge Jespers&lt;/a&gt;.&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6470399064206765359-4931474987123206939?l=as3coder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://as3coder.blogspot.com/feeds/4931474987123206939/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://as3coder.blogspot.com/2010/02/mobile-world-congress.html#comment-form' title='Комментарии: 4'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6470399064206765359/posts/default/4931474987123206939'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6470399064206765359/posts/default/4931474987123206939'/><link rel='alternate' type='text/html' href='http://as3coder.blogspot.com/2010/02/mobile-world-congress.html' title='Mobile World Congress. День второй.'/><author><name>AS3Coder</name><uri>http://www.blogger.com/profile/14877548685763682250</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_S7Dbp6MOKn8/S3ZqfEQ54vI/AAAAAAAAAMI/j2FNwRKPohE/S220/129018458834145924.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6470399064206765359.post-6029956791050183153</id><published>2010-02-16T22:26:00.002+03:00</published><updated>2010-02-19T10:39:58.362+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Adobe'/><title type='text'>Adobe на Mobile World Congress</title><content type='html'>С 15 по 18 февраля в Барселоне проходит &lt;a href="http://www.mobileworldcongress.com/"&gt;Mobile World Congress&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.adobe.com/"&gt;Adobe&lt;/a&gt; не заставила долго ждать, и уже вчера опубликовали &lt;a href="http://www.adobe.com/aboutadobe/pressroom/pressreleases/201002/021510FlashPlayerMWC.html"&gt;пресс-релиз&lt;/a&gt; с результатами участия на конгрессе. Вот немного из этого отчета:&lt;br /&gt;&lt;br /&gt;Adobe рассказала о проекте &lt;a href="http://www.openscreenproject.org/"&gt;Open Screen Project&lt;/a&gt;, который поддерживает почти 70 партнеров, по всему миру, которые объединились для того, чтобы &lt;b&gt;Adobe Flash Player&lt;/b&gt; и &lt;b&gt;AIR &lt;/b&gt;появился на мобильных устройствах. На AdobeTV есть есть &lt;a href="http://tv.adobe.com/show/open-screen-project/"&gt;много видео&lt;/a&gt; с тэгом "Open Screen Project".&lt;br /&gt;&lt;br /&gt;В первой половине 2010 года ожидается поддержка &lt;a href="http://labs.adobe.com/technologies/flashplayer10/"&gt;Adobe Flash Player 10.1 Beta&lt;/a&gt; на мобильных устройствах с &lt;a href="http://www.android.com/"&gt;Android&lt;/a&gt;. Также планируется поддержка на платформах BlackBerry, Symbian OS, Palm webOS и Windows Mobile. Согласно анализу &lt;a href="http://www.strategyanalytics.com/"&gt;Strategy Analytics&lt;/a&gt; с 2010 по 2012 &lt;b&gt;Adobe Flash Player&lt;/b&gt; будет установлен на 250 миллионов смартфонах.&lt;br /&gt;&lt;br /&gt;Естественно Adobe позаботились и о разработчиках. И все чаще в &lt;a href="http://www.adobe.com/devnet/"&gt;Adobe Developer Conection&lt;/a&gt; появляются материалы о разработке мобильных приложений:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.adobe.com/devnet/devices/articles/design_tips_mobile_ria.html?utm_source=feedburner&amp;amp;utm_medium=feed&amp;amp;utm_campaign=Feed:+developer_center_tutorials+(Adobe+Developer+Center+RSS+Feed)"&gt;Design tips for creating mobile RIAs&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.adobe.com/devnet/devices/articles/delivering_video_fp10.1.html?utm_source=feedburner&amp;amp;utm_medium=feed&amp;amp;utm_campaign=Feed:+developer_center_tutorials+(Adobe+Developer+Center+RSS+Feed)"&gt;Delivering video for Flash Player 10.1 on mobile devices&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;На &lt;a href="http://www.adobe.com/devnet/"&gt;AdobeTV&lt;/a&gt; появляются ролики, показывающие возможности &lt;b&gt;Adobe Flash Player&lt;/b&gt;.&lt;br /&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://tv.adobe.com/watch/flash-platform-in-action/htc-hd2-and-nexus-one/"&gt;HTC HD2 and Nexus One&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://tv.adobe.com/watch/flash-platform-in-action/nexus-one-htc-hd2-and-skylight/"&gt;Nexus One, HTC HD2, and Skylight&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://tv.adobe.com/watch/flash-platform-in-action/dell-mini-5-tablet/"&gt;Dell Mini 5 tablet&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://tv.adobe.com/watch/flash-platform-in-action/adobe-air-mobile-on-droid/"&gt;Adobe AIR Mobile on Droid&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;Ждем еще :)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Также читайте новость "&lt;a href="http://www.flashmagazine.com/news/detail/adobe_demos_air_on_mobile_at_mobile_world_congress/"&gt;Adobe demos AIR on mobile at Mobile World Congress&lt;/a&gt;" на сайте &lt;a href="http://www.flashmagazine.com/"&gt;flashmagazine.com&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://flashmagazin.com/"&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6470399064206765359-6029956791050183153?l=as3coder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://as3coder.blogspot.com/feeds/6029956791050183153/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://as3coder.blogspot.com/2010/02/adobe-mobile-world-congress.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6470399064206765359/posts/default/6029956791050183153'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6470399064206765359/posts/default/6029956791050183153'/><link rel='alternate' type='text/html' href='http://as3coder.blogspot.com/2010/02/adobe-mobile-world-congress.html' title='Adobe на Mobile World Congress'/><author><name>AS3Coder</name><uri>http://www.blogger.com/profile/14877548685763682250</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_S7Dbp6MOKn8/S3ZqfEQ54vI/AAAAAAAAAMI/j2FNwRKPohE/S220/129018458834145924.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6470399064206765359.post-8315814682177479573</id><published>2010-02-12T10:34:00.005+03:00</published><updated>2010-02-12T12:32:18.204+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='flash player'/><title type='text'>Что нового в Adobe Flash Player 10.1 Beta?</title><content type='html'>Отличный &lt;a href="http://ruslanshestopal.com/dayli/flash-palyer-10-1-beta-docs-review"&gt;обзор&lt;/a&gt; новых классов с подробным описанием на русском языке, доступных в &lt;a href="http://labs.adobe.com/downloads/flashplayer10.html"&gt;Adobe Flash Player 10.1 Beta&lt;/a&gt;,&amp;nbsp;от &lt;a href="http://ruslanshestopal.com/"&gt;Руслана Шестопала&lt;/a&gt;, за что ему огромнейшее спасибо!&lt;br /&gt;&amp;nbsp;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6470399064206765359-8315814682177479573?l=as3coder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://ruslanshestopal.com/dayli/flash-palyer-10-1-beta-docs-review' title='Что нового в Adobe Flash Player 10.1 Beta?'/><link rel='replies' type='application/atom+xml' href='http://as3coder.blogspot.com/feeds/8315814682177479573/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://as3coder.blogspot.com/2010/02/adobe-flash-player-101.html#comment-form' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6470399064206765359/posts/default/8315814682177479573'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6470399064206765359/posts/default/8315814682177479573'/><link rel='alternate' type='text/html' href='http://as3coder.blogspot.com/2010/02/adobe-flash-player-101.html' title='Что нового в Adobe Flash Player 10.1 Beta?'/><author><name>AS3Coder</name><uri>http://www.blogger.com/profile/14877548685763682250</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_S7Dbp6MOKn8/S3ZqfEQ54vI/AAAAAAAAAMI/j2FNwRKPohE/S220/129018458834145924.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6470399064206765359.post-1937376215508095292</id><published>2010-02-11T10:45:00.011+03:00</published><updated>2010-02-11T14:57:51.298+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='as3'/><category scheme='http://www.blogger.com/atom/ns#' term='начинающим'/><title type='text'>Как преобразовать бинарные данные ByteArray в текстовую строку String</title><content type='html'>&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: xx-large;"&gt;Что такое ByteArray?&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://help.adobe.com/ru_RU/AS3LCR/Flash_10.0/index.html"&gt;Справочник по языку ActionScript 3.0 и его компонентам&lt;/a&gt; говорит что: "&lt;i&gt;Класс ByteArray предназначен для опытных разработчиков, которым требуется доступ к данным на уровне байт.&lt;/i&gt;". А если по проще, то "&lt;b&gt;Экземпляр класса&amp;nbsp;ByteArray содержит в себе массив байтов&lt;/b&gt;".&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Например, загружая файл с помощью экземпляра класса &lt;a href="http://help.adobe.com/ru_RU/AS3LCR/Flash_10.0/flash/net/URLLoader.html"&gt;flash.net.URLLoader&lt;/a&gt;, в его свойстве &lt;a href="http://help.adobe.com/ru_RU/AS3LCR/Flash_10.0/flash/net/URLLoader.html#data"&gt;data&lt;/a&gt; мы можем получить бинарное содержимое файла в виде экземпляра класса &lt;a href="http://help.adobe.com/ru_RU/AS3LCR/Flash_10.0/flash/utils/ByteArray.html"&gt;flash.utils.ByteArray&lt;/a&gt;.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Работая над очередным редактором графики, столкнулся с тем, что как-то нужно сохранять набор изображений и других элементов в одном файле. Естественно, выбор пал на текстовые .xml-файлы. Теперь стал вопрос:&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: xx-large;"&gt;Как бинарные данные изображения преобразовать в текстовую строку?&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;Ответ пришел быстро: «Нужно в цикле, по байтам, пробежаться по массиву c бинарными данными, преобразовывая каждый байт в 16-тиричный вид, и добавляя его в результирующую строку».&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Оказалось, в интернете уже есть готовые решения этой задачи. На сайте &lt;a href="http://www.ionsden.com/"&gt;Ion's Den&lt;/a&gt;&amp;nbsp;представлен замечательный класс&amp;nbsp;&lt;a href="http://www.ionsden.com/content/stringbytes"&gt;StringBytes.As&lt;/a&gt;, за что автору огромное спасибо.&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma, Helvetica, sans-serif; font-size: 12px;"&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma, Helvetica, sans-serif; font-size: 12px;"&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma, Helvetica, sans-serif; font-size: 12px;"&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma, Helvetica, sans-serif; font-size: 12px;"&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma, Helvetica, sans-serif; font-size: 12px;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma, Helvetica, sans-serif; font-size: 12px;"&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma, Helvetica, sans-serif; font-size: 12px;"&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma, Helvetica, sans-serif; font-size: 12px;"&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma, Helvetica, sans-serif; font-size: 12px;"&gt;&lt;pre class="code" style="background-color: #fbf9f5; border-bottom-color: rgb(179, 179, 179); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(179, 179, 179); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(179, 179, 179); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(179, 179, 179); border-top-style: solid; border-top-width: 1px; clear: both; font-family: Courier, monospace !important; font-size: 12px; margin-top: 6px; overflow-x: auto; overflow-y: auto; padding-bottom: 8px; padding-left: 20px; padding-right: 8px; padding-top: 8px;"&gt;package ion&lt;span class="preprocessor" style="color: #2b91af; font-family: Courier, monospace; font-size: 12px;"&gt;.utils&lt;/span&gt; &lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;import flash&lt;span class="preprocessor" style="color: #2b91af; font-family: Courier, monospace; font-size: 12px;"&gt;.utils&lt;/span&gt;&lt;span class="preprocessor" style="color: #2b91af; font-family: Courier, monospace; font-size: 12px;"&gt;.ByteArray&lt;/span&gt;&lt;span class="comment" style="color: grey; cursor: text !important; font-family: Courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;;&lt;/span&gt;&lt;br /&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;public class StringBytes &lt;br /&gt;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public static function toString(ba:ByteArray):String &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var acum:String = &lt;span class="string" style="color: teal; font-family: Courier, monospace; font-size: 12px;"&gt;""&lt;/span&gt;&lt;span class="comment" style="color: grey; cursor: text !important; font-family: Courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;;&lt;/span&gt;&lt;br /&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ba&lt;span class="preprocessor" style="color: #2b91af; font-family: Courier, monospace; font-size: 12px;"&gt;.position&lt;/span&gt; = &lt;span class="number" style="color: green; font-family: Courier, monospace; font-size: 12px;"&gt;0&lt;/span&gt;&lt;span class="comment" style="color: grey; cursor: text !important; font-family: Courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;;&lt;/span&gt;&lt;br /&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;while (ba&lt;span class="preprocessor" style="color: #2b91af; font-family: Courier, monospace; font-size: 12px;"&gt;.position&lt;/span&gt; &amp;lt; ba&lt;span class="preprocessor" style="color: #2b91af; font-family: Courier, monospace; font-size: 12px;"&gt;.length&lt;/span&gt;) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var dat:String = ba&lt;span class="preprocessor" style="color: #2b91af; font-family: Courier, monospace; font-size: 12px;"&gt;.readUnsignedByte&lt;/span&gt;()&lt;span class="preprocessor" style="color: #2b91af; font-family: Courier, monospace; font-size: 12px;"&gt;.toString&lt;/span&gt;(&lt;span class="number" style="color: green; font-family: Courier, monospace; font-size: 12px;"&gt;16&lt;/span&gt;)&lt;span class="comment" style="color: grey; cursor: text !important; font-family: Courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;;&lt;/span&gt;&lt;br /&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;while (dat&lt;span class="preprocessor" style="color: #2b91af; font-family: Courier, monospace; font-size: 12px;"&gt;.length&lt;/span&gt; &amp;lt; &lt;span class="number" style="color: green; font-family: Courier, monospace; font-size: 12px;"&gt;2&lt;/span&gt;) dat = &lt;span class="string" style="color: teal; font-family: Courier, monospace; font-size: 12px;"&gt;"0"&lt;/span&gt; + dat&lt;span class="comment" style="color: grey; cursor: text !important; font-family: Courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;;&lt;/span&gt;&lt;br /&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;acum += dat&lt;span class="comment" style="color: grey; cursor: text !important; font-family: Courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ba&lt;span class="preprocessor" style="color: #2b91af; font-family: Courier, monospace; font-size: 12px;"&gt;.position&lt;/span&gt; = &lt;span class="number" style="color: green; font-family: Courier, monospace; font-size: 12px;"&gt;0&lt;/span&gt;&lt;span class="comment" style="color: grey; cursor: text !important; font-family: Courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;;&lt;/span&gt;&lt;br /&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return acum&lt;span class="comment" style="color: grey; cursor: text !important; font-family: Courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public static function toByteArray(str:String):ByteArray &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (str&lt;span class="preprocessor" style="color: #2b91af; font-family: Courier, monospace; font-size: 12px;"&gt;.length&lt;/span&gt; % &lt;span class="number" style="color: green; font-family: Courier, monospace; font-size: 12px;"&gt;2&lt;/span&gt; != &lt;span class="number" style="color: green; font-family: Courier, monospace; font-size: 12px;"&gt;0&lt;/span&gt;) return null&lt;span class="comment" style="color: grey; cursor: text !important; font-family: Courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;;&lt;/span&gt;&lt;br /&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var ba:ByteArray = new ByteArray()&lt;span class="comment" style="color: grey; cursor: text !important; font-family: Courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;;&lt;/span&gt;&lt;br /&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for (var i:int = &lt;span class="number" style="color: green; font-family: Courier, monospace; font-size: 12px;"&gt;0&lt;/span&gt;&lt;span class="comment" style="color: grey; cursor: text !important; font-family: Courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;; i &amp;lt; str.length; i += 2) {&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var num:int = parseInt(&lt;span class="string" style="color: teal; font-family: Courier, monospace; font-size: 12px;"&gt;"0x"&lt;/span&gt; + str&lt;span class="preprocessor" style="color: #2b91af; font-family: Courier, monospace; font-size: 12px;"&gt;.substr&lt;/span&gt;(i, &lt;span class="number" style="color: green; font-family: Courier, monospace; font-size: 12px;"&gt;2&lt;/span&gt;))&lt;span class="comment" style="color: grey; cursor: text !important; font-family: Courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ba&lt;span class="preprocessor" style="color: #2b91af; font-family: Courier, monospace; font-size: 12px;"&gt;.writeByte&lt;/span&gt;(num)&lt;span class="comment" style="color: grey; cursor: text !important; font-family: Courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ba&lt;span class="preprocessor" style="color: #2b91af; font-family: Courier, monospace; font-size: 12px;"&gt;.position&lt;/span&gt; = &lt;span class="number" style="color: green; font-family: Courier, monospace; font-size: 12px;"&gt;0&lt;/span&gt;&lt;span class="comment" style="color: grey; cursor: text !important; font-family: Courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return ba&lt;span class="comment" style="color: grey; cursor: text !important; font-family: Courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;/pre&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;А также пример использования:&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma, Helvetica, sans-serif; font-size: 12px;"&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma, Helvetica, sans-serif; font-size: 12px;"&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma, Helvetica, sans-serif; font-size: 12px;"&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma, Helvetica, sans-serif; font-size: 12px;"&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma, Helvetica, sans-serif; font-size: 12px;"&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma, Helvetica, sans-serif; font-size: 12px;"&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma, Helvetica, sans-serif; font-size: 12px;"&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma, Helvetica, sans-serif; font-size: 12px;"&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma, Helvetica, sans-serif; font-size: 12px;"&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma, Helvetica, sans-serif; font-size: 12px;"&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma, Helvetica, sans-serif; font-size: 12px;"&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma, Helvetica, sans-serif; font-size: 12px;"&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma, Helvetica, sans-serif; font-size: 12px;"&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma, Helvetica, sans-serif; font-size: 12px;"&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma, Helvetica, sans-serif; font-size: 12px;"&gt;&lt;pre class="code" style="background-color: #fbf9f5; border-bottom-color: rgb(179, 179, 179); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(179, 179, 179); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(179, 179, 179); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(179, 179, 179); border-top-style: solid; border-top-width: 1px; clear: both; font-family: Courier, monospace !important; font-size: 12px; margin-top: 6px; overflow-x: auto; overflow-y: auto; padding-bottom: 8px; padding-left: 20px; padding-right: 8px; padding-top: 8px;"&gt;import ion&lt;span class="preprocessor" style="color: #2b91af; font-family: Courier, monospace; font-size: 12px;"&gt;.utils&lt;/span&gt;&lt;span class="preprocessor" style="color: #2b91af; font-family: Courier, monospace; font-size: 12px;"&gt;.StringBytes&lt;/span&gt;&lt;span class="comment" style="color: grey; cursor: text !important; font-family: Courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;;&lt;/span&gt;&lt;br /&gt; &lt;br /&gt;var str:String = StringBytes&lt;span class="preprocessor" style="color: #2b91af; font-family: Courier, monospace; font-size: 12px;"&gt;.toString&lt;/span&gt;(myByteArray)&lt;span class="comment" style="color: grey; cursor: text !important; font-family: Courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;;&lt;/span&gt;&lt;br /&gt; &lt;br /&gt;//the string must have a even ammount of characters (each two characters represent a hexadecimal number)&lt;br /&gt;var ba:ByteArray = StringBytes&lt;span class="preprocessor" style="color: #2b91af; font-family: Courier, monospace; font-size: 12px;"&gt;.toByteArray&lt;/span&gt;(&lt;span class="string" style="color: teal; font-family: Courier, monospace; font-size: 12px;"&gt;"aa99cc"&lt;/span&gt;)&lt;span class="comment" style="color: grey; cursor: text !important; font-family: Courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;;&lt;/span&gt;&lt;/pre&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: xx-large;"&gt;Дополнительный материал&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;С появлением класса &lt;a href="http://help.adobe.com/ru_RU/AS3LCR/Flash_10.0/flash/utils/ByteArray.html"&gt;flash.utils.ByteArray&lt;/a&gt; во Flash Player'е стало возможно работать с теми файлами, с которыми казалось бы это невозможно. В интернете появилось множество Decoder'ов и Encoder'ов для различных расширений файлов. Вот список некоторых сайтов, на которых они представлены:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.bytearray.org/"&gt;ByteArray.org&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.ionsden.com/actionscript"&gt;Ion's Den&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.libspark.org/wiki/WikiStart/en#binary-as3"&gt;Spark project -&amp;nbsp;Binary Processing (AS3)&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;Дополните список в комметариях.&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br /&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: xx-large;"&gt;Обновление&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Максим &lt;a href="http://riapriority.com/blogs/slon-vsapogah.php"&gt;Slon_vsapogah&lt;/a&gt; подсказал (за что ему огромное спасибо), что лучше записывать байты в строку не 16-тиричном виде, а в &lt;a href="http://ru.wikipedia.org/wiki/Base64"&gt;Base64&lt;/a&gt;. Действительно, объем полученной строки уменьшится. Найти готовый Encoder и Decoder в Base64, также не составило труда. На сайте&amp;nbsp;&lt;a href="http://dynamicflash.com/"&gt;Dynamic Flash&lt;/a&gt;, имеется ссылка на &lt;a href="http://dynamicflash.com/downloads/base64/Base64-1.1.0.zip"&gt;архив&lt;/a&gt; с классом и подробная &lt;a href="http://dynamicflash.com/goodies/base64/"&gt;информация&lt;/a&gt;, как им пользоваться.&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6470399064206765359-1937376215508095292?l=as3coder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://as3coder.blogspot.com/feeds/1937376215508095292/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://as3coder.blogspot.com/2010/02/bytearray-xml.html#comment-form' title='Комментарии: 5'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6470399064206765359/posts/default/1937376215508095292'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6470399064206765359/posts/default/1937376215508095292'/><link rel='alternate' type='text/html' href='http://as3coder.blogspot.com/2010/02/bytearray-xml.html' title='Как преобразовать бинарные данные ByteArray в текстовую строку String'/><author><name>AS3Coder</name><uri>http://www.blogger.com/profile/14877548685763682250</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_S7Dbp6MOKn8/S3ZqfEQ54vI/AAAAAAAAAMI/j2FNwRKPohE/S220/129018458834145924.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6470399064206765359.post-95387243089486216</id><published>2010-02-09T10:51:00.004+03:00</published><updated>2010-02-09T12:54:04.955+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='flash buider'/><category scheme='http://www.blogger.com/atom/ns#' term='начинающим'/><title type='text'>Debugging Flex 4 applications</title><content type='html'>Под этим заголовком на сайте &lt;a href="http://www.adobe.com/devnet/"&gt;Adobе Developer Connection&lt;/a&gt; появились три замечательных урока от&lt;br /&gt;&lt;a href="http://stallons.com/"&gt;Jeanette Stallons&lt;/a&gt;:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.adobe.com/devnet/flex/articles/flashbuilder4_debugging_part1.html"&gt;Part 1: Debugging basics&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.adobe.com/devnet/flex/articles/flashbuilder4_debugging_part2.html"&gt;Part 2: Breakpoints&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.adobe.com/devnet/flex/articles/flashbuilder4_debugging_part3.html"&gt;Part 3: Variables view, watchpoints, and Run to Line&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;Статьи рассказывают об отладке Flex-приложений &lt;a href="http://labs.adobe.com/technologies/flex4sdk/"&gt;4 версии&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;«&amp;nbsp;&lt;/span&gt;Отладка &lt;/b&gt;- это процесс поиска и исправления ошибок или проблем в приложении.Отладка часто является трудной задачей, но она может быть решена в значительной степени легче при использовании отладчиков. &lt;b&gt;Отладчик &lt;/b&gt;- это&amp;nbsp;программное средство, которое позволяет отслеживать и контролировать выполнение программы шаг за шагом, а также следить за изменением значений переменных .&lt;/i&gt;&lt;br /&gt;&lt;a href="http://labs.adobe.com/technologies/flashbuilder4/"&gt;&lt;i&gt;Adobe Flash Builder 4 Beta&lt;/i&gt;&lt;/a&gt;&lt;i&gt;&amp;nbsp;имеет встроенный отладчик, и в этих трех уроках вы научитесь его использовать...&amp;nbsp;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;»&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6470399064206765359-95387243089486216?l=as3coder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.adobe.com/devnet/flex/articles/flashbuilder4_debugging_part1.html' title='Debugging Flex 4 applications'/><link rel='replies' type='application/atom+xml' href='http://as3coder.blogspot.com/feeds/95387243089486216/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://as3coder.blogspot.com/2010/02/debugging-flex-4-applications.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6470399064206765359/posts/default/95387243089486216'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6470399064206765359/posts/default/95387243089486216'/><link rel='alternate' type='text/html' href='http://as3coder.blogspot.com/2010/02/debugging-flex-4-applications.html' title='Debugging Flex 4 applications'/><author><name>AS3Coder</name><uri>http://www.blogger.com/profile/14877548685763682250</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_S7Dbp6MOKn8/S3ZqfEQ54vI/AAAAAAAAAMI/j2FNwRKPohE/S220/129018458834145924.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6470399064206765359.post-3242578294067347797</id><published>2010-02-07T20:48:00.005+03:00</published><updated>2010-02-09T15:28:59.145+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='afpug'/><title type='text'>BURAFPUG (Belarus Ukraine Russian Flash Platform User Group) состоялось</title><content type='html'>6 февраля 2010 года в московском офисе Adobe состоялась встреча Российских, Украинских и Белорусских flasher'ов. На подобном мероприятие я был впервые, а в Москве же второй раз. Огромное спасибо Лейсан Хатмуллиной (она же &lt;a href="http://gebaa.blogspot.com/"&gt;Geba&lt;/a&gt;), &amp;nbsp;за то что встретила с поезда и провела небольшую экскурсию по городу.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Что касается встречи.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Формат мероприятия понравился. Всё получилось классно: каждый рассказал о себе и интересных вещах. Отмечать кого-то не буду, все были действительно хороши. Например, я увез со встречи целый багаж ценной информации. Однозначно: такие встречи должны проходить чаще.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Afterparty.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;На самом деле мне не удалось продолжить встречу на&amp;nbsp;afterparty, и мне необходимо было уйти по делам, к тому же вечером у меня был обратный поезд в Казань. Посмотреть фотки с afterparty&amp;nbsp;можно &lt;a href="http://web.me.com/axjonov/Flash_Review/BURAFPUG.html#175"&gt;здесь&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Лицом к лицу.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Важным моментом для меня была встреча на яву с людьми, которые активно представляют Flash-сообщество в рунете…&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="http://flash-ripper.com/"&gt;Ростислав Сирык&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_S7Dbp6MOKn8/S276ZTlvbcI/AAAAAAAAALI/65mz9GdPiIc/s320/1.png" /&gt;&lt;br /&gt;&lt;br /&gt;Это настолько приятный человек, что его хочется слушать и слушать, и даже не важно, о чем он говорит. Будь то о flash’е, будь то о море с солнцем и пивом. Складывается впечатление веселого, справедливого и всегда думающего человека. Рост, несмотря на то, что ты опоздал, всё равно огромное спасибо.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="http://riapriority.com/blogs/slon-vsapogah.php"&gt;Максим «Slon_vsapogah» Качуровский&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;img border="0" height="400" src="http://1.bp.blogspot.com/_S7Dbp6MOKn8/S276v_7FLcI/AAAAAAAAALQ/BlViBvoP4uo/s400/2.png" width="267" /&gt;&lt;br /&gt;&lt;br /&gt;Максима я узнал сразу. Добрая и широкая улыбка его выдала.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="http://garbage-collector.ru/"&gt;Юрий Яровой&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;img border="0" height="400" src="http://2.bp.blogspot.com/_S7Dbp6MOKn8/S277HPDNMmI/AAAAAAAAALY/44s7FhLwTkU/s400/3.png" width="206" /&gt;&lt;br /&gt;&lt;br /&gt;В Юрии сразу почувствовался профессионализм и практика программиста. Человек вышел и спросил аудиторию по делу без лишней «воды», за что тоже спасибо.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;А также многие-многие другие…&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Вывод.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;В речи Артемия Малкова и Роста часто проскальзывали мысли о том, что мало информации о Flex, Flash и другим прикладным технологиям &amp;nbsp;для начинающих flasher’ов. Артемий говорил, в этом направлении планируются новые проекты на развитие начинающего поколения. И мне эта тема нравится. Хочу поддержать ребят. И постараюсь всё больше публиковать постов с тегом «&lt;a href="http://as3coder.blogspot.com/search/label/%D0%BD%D0%B0%D1%87%D0%B8%D0%BD%D0%B0%D1%8E%D1%89%D0%B8%D0%BC"&gt;начинающим&lt;/a&gt;», а также переводить интересные вещи с английского языка.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Самое главное.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Огромное спасибо всем ребятам из &lt;a href="http://www.flexis.ru/"&gt;Flexis&lt;/a&gt;, особенно &lt;a href="http://groups.adobe.com/people/211c458d21"&gt;Артемию Малкову&lt;/a&gt;. Отдельное спасибо &lt;a href="http://groups.adobe.com/people/c8a21fa761"&gt;Axjonov&lt;/a&gt;’у за &lt;a href="http://web.me.com/axjonov/Flash_Review/"&gt;фотки&lt;/a&gt;. И огромная просьба для всех участников, если у вас на встрече была фотокамера, пожалуйста скиньте снимки на as3coder@gmail.com.&lt;br /&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6470399064206765359-3242578294067347797?l=as3coder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://as3coder.blogspot.com/feeds/3242578294067347797/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://as3coder.blogspot.com/2010/02/burafpuf-belarus-ukraine-russian-flash.html#comment-form' title='Комментарии: 7'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6470399064206765359/posts/default/3242578294067347797'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6470399064206765359/posts/default/3242578294067347797'/><link rel='alternate' type='text/html' href='http://as3coder.blogspot.com/2010/02/burafpuf-belarus-ukraine-russian-flash.html' title='BURAFPUG (Belarus Ukraine Russian Flash Platform User Group) состоялось'/><author><name>AS3Coder</name><uri>http://www.blogger.com/profile/14877548685763682250</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_S7Dbp6MOKn8/S3ZqfEQ54vI/AAAAAAAAAMI/j2FNwRKPohE/S220/129018458834145924.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_S7Dbp6MOKn8/S276ZTlvbcI/AAAAAAAAALI/65mz9GdPiIc/s72-c/1.png' height='72' width='72'/><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6470399064206765359.post-7850372934019956418</id><published>2010-02-05T07:54:00.000+03:00</published><updated>2010-02-05T07:54:03.813+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='as3'/><category scheme='http://www.blogger.com/atom/ns#' term='начинающим'/><title type='text'>Как добраться до переменных FlashVars в ActionScript 3.0</title><content type='html'>&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Что такое FlashVars?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;FlashVars&lt;/b&gt; - это пользовательские переменные, доступные &lt;b&gt;.swf&lt;/b&gt;-приложениям во время исполнения кода, значения которых выставляются вне приложения, при вставки на &lt;b&gt;.html&lt;/b&gt;-странице.&lt;br /&gt;&lt;pre class="code"&gt;&lt;span class="tag"&gt;&amp;lt;&lt;span class="keyword"&gt;object&lt;/span&gt;&lt;span class="attribute"&gt; classid=&lt;span class="value"&gt;"clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"&lt;/span&gt;&lt;/span&gt;&lt;span class="attribute"&gt; codebase=&lt;span class="value"&gt;"https://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0"&lt;/span&gt;&lt;/span&gt;&lt;span class="attribute"&gt; width=&lt;span class="value"&gt;"100%"&lt;/span&gt;&lt;/span&gt;&lt;span class="attribute"&gt; height=&lt;span class="value"&gt;"100%"&lt;/span&gt;&lt;/span&gt;&lt;span class="attribute"&gt; align=&lt;span class="value"&gt;"middle"&lt;/span&gt;&lt;/span&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;span class="tag"&gt;&amp;lt;&lt;span class="keyword"&gt;param&lt;/span&gt;&lt;span class="attribute"&gt; name=&lt;span class="value"&gt;"allowScriptAccess"&lt;/span&gt;&lt;/span&gt;&lt;span class="attribute"&gt; value=&lt;span class="value"&gt;"sameDomain"&lt;/span&gt;&lt;/span&gt; /&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;span class="tag"&gt;&amp;lt;&lt;span class="keyword"&gt;param&lt;/span&gt;&lt;span class="attribute"&gt; name=&lt;span class="value"&gt;"movie"&lt;/span&gt;&lt;/span&gt;&lt;span class="attribute"&gt; value=&lt;span class="value"&gt;"main.swf"&lt;/span&gt;&lt;/span&gt; /&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;span class="tag"&gt;&amp;lt;&lt;span class="keyword"&gt;param&lt;/span&gt;&lt;span class="attribute"&gt; name=&lt;span class="value"&gt;"quality"&lt;/span&gt;&lt;/span&gt;&lt;span class="attribute"&gt; value=&lt;span class="value"&gt;"high"&lt;/span&gt;&lt;/span&gt; /&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;span class="tag"&gt;&amp;lt;&lt;span class="keyword"&gt;param&lt;/span&gt;&lt;span class="attribute"&gt; name=&lt;span class="value"&gt;"bgcolor"&lt;/span&gt;&lt;/span&gt;&lt;span class="attribute"&gt; value=&lt;span class="value"&gt;"#ffffff"&lt;/span&gt;&lt;/span&gt; /&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;span class="tag"&gt;&amp;lt;&lt;span class="keyword"&gt;param&lt;/span&gt;&lt;span class="attribute"&gt; name=&lt;span class="value"&gt;"wmode"&lt;/span&gt;&lt;/span&gt;&lt;span class="attribute"&gt; value=&lt;span class="value"&gt;"opaque"&lt;/span&gt;&lt;/span&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;span class="tag"&gt;&amp;lt;&lt;span class="keyword"&gt;param&lt;/span&gt;&lt;span class="attribute"&gt; name=&lt;span class="value"&gt;"allowFullScreen"&lt;/span&gt;&lt;/span&gt;&lt;span class="attribute"&gt; value=&lt;span class="value"&gt;"true"&lt;/span&gt;&lt;/span&gt; /&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;span class="tag"&gt;&amp;lt;&lt;span class="keyword"&gt;param&lt;/span&gt;&lt;span class="attribute"&gt; name=&lt;span class="value"&gt;"scale"&lt;/span&gt;&lt;/span&gt;&lt;span class="attribute"&gt; value=&lt;span class="value"&gt;"noscale"&lt;/span&gt;&lt;/span&gt; /&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;span class="tag"&gt;&amp;lt;&lt;span class="keyword"&gt;param&lt;/span&gt;&lt;span class="attribute"&gt; name=&lt;span class="value"&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;"flashvars"&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="attribute"&gt; value=&lt;span class="value"&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;"your_variable_name=your_variable_value"&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;span class="tag"&gt;&amp;lt;embed&lt;span class="attribute"&gt; scale=&lt;span class="value"&gt;"noscale"&lt;/span&gt;&lt;/span&gt;&lt;span class="attribute"&gt; src=&lt;span class="value"&gt;"main.swf"&lt;/span&gt;&lt;/span&gt;&lt;span class="attribute"&gt; &lt;span class="Apple-style-span" style="color: red;"&gt;flashvars=&lt;/span&gt;&lt;span class="value"&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;"your_variable_name=your_variable_value"&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; &lt;span class="attribute"&gt; allowFullScreen=&lt;span class="value"&gt;"true"&lt;/span&gt;&lt;span class="value"&gt;quality&lt;/span&gt;&lt;/span&gt;="high"&lt;span class="attribute"&gt; bgcolor=&lt;span class="value"&gt;"#ffffff"&lt;/span&gt;&lt;/span&gt;&lt;span class="attribute"&gt; width=&lt;span class="value"&gt;"100%"&lt;/span&gt;&lt;/span&gt;&lt;span class="attribute"&gt; height=&lt;span class="value"&gt;"100%"&lt;/span&gt;&lt;/span&gt;&lt;span class="attribute"&gt; align=&lt;span class="value"&gt;"middle"&lt;/span&gt;&lt;/span&gt;&lt;span class="attribute"&gt; wmode=&lt;span class="value"&gt;"opaque"&lt;/span&gt;&lt;/span&gt;&lt;span class="attribute"&gt; allowScriptAccess=&lt;span class="value"&gt;"sameDomain"&lt;/span&gt;&lt;/span&gt;&lt;span class="attribute"&gt; type=&lt;span class="value"&gt;"application/x-shockwave-flash"&lt;/span&gt;&lt;/span&gt;&lt;span class="attribute"&gt; pluginspage=&lt;span class="value"&gt;"https://www.macromedia.com/go/getflashplayer"&lt;/span&gt;&lt;/span&gt; /&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="tag"&gt;&amp;lt;/&lt;span class="keyword"&gt;object&lt;/span&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Как добраться до значений FlashVars в ActionScript 3.0?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;В ActionScript 2.0 эти переменных можно было найти в корневом клипе документа _root, и обратиться к ним можно было вот так:&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: Courier, monospace; font-size: 12px; white-space: pre;"&gt;_root.[&lt;span style="font-family: Courier, monospace; font-size: 12px;"&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;"your_var_name"&lt;/span&gt;&lt;/span&gt;]&lt;span class="Apple-style-span" style="font-family: 'Times New Roman'; font-size: medium; white-space: normal;"&gt;.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;В Action Script 3.0 эти переменные остались там же - в корневом классе документа в специальном свойстве &lt;b&gt;loaderInfo&lt;/b&gt;, класса &lt;a href="http://help.adobe.com/ru_RU/AS3LCR/Flash_10.0/flash/display/LoaderInfo.html"&gt;flash.display.LoaderInfo&lt;/a&gt;, который отвечает за информацию загружаемого &lt;b&gt;.swf&lt;/b&gt;-файла.&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma, Helvetica, sans-serif; font-size: 12px;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;pre class="code" style="background-color: #fbf9f5; border-bottom-color: rgb(179, 179, 179); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(179, 179, 179); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(179, 179, 179); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(179, 179, 179); border-top-style: solid; border-top-width: 1px; clear: both; font-family: Courier, monospace !important; font-size: 12px; margin-top: 6px; overflow-x: auto; overflow-y: auto; padding-bottom: 8px; padding-left: 20px; padding-right: 8px; padding-top: 8px;"&gt;package &lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;import flash&lt;span class="preprocessor" style="color: #2b91af; font-family: Courier, monospace; font-size: 12px;"&gt;.display&lt;/span&gt;&lt;span class="preprocessor" style="color: #2b91af; font-family: Courier, monospace; font-size: 12px;"&gt;.Sprite&lt;/span&gt;&lt;span class="comment" style="color: grey; cursor: text !important; font-family: Courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;import flash&lt;span class="preprocessor" style="color: #2b91af; font-family: Courier, monospace; font-size: 12px;"&gt;.events&lt;/span&gt;&lt;span class="preprocessor" style="color: #2b91af; font-family: Courier, monospace; font-size: 12px;"&gt;.Event&lt;/span&gt;&lt;span class="comment" style="color: grey; cursor: text !important; font-family: Courier, monospace; font-size: 12px; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; text-decoration: none !important;"&gt;;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;//&lt;br /&gt;&amp;nbsp;&amp;nbsp;public class Main extends Sprite &lt;br /&gt;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public function Main():void &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;trace(this&lt;span class="preprocessor" style="color: #2b91af; font-family: Courier, monospace; font-size: 12px;"&gt;.loaderInfo&lt;/span&gt;&lt;span class="preprocessor" style="color: #2b91af; font-family: Courier, monospace; font-size: 12px;"&gt;.parameters&lt;/span&gt;[&lt;span class="string" style="color: #e20800; font-family: Courier, monospace; font-size: 12px;"&gt;"your_variable_name"&lt;/span&gt;])&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;/pre&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6470399064206765359-7850372934019956418?l=as3coder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://as3coder.blogspot.com/feeds/7850372934019956418/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://as3coder.blogspot.com/2010/02/flashvars-actionscript-30.html#comment-form' title='Комментарии: 15'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6470399064206765359/posts/default/7850372934019956418'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6470399064206765359/posts/default/7850372934019956418'/><link rel='alternate' type='text/html' href='http://as3coder.blogspot.com/2010/02/flashvars-actionscript-30.html' title='Как добраться до переменных FlashVars в ActionScript 3.0'/><author><name>AS3Coder</name><uri>http://www.blogger.com/profile/14877548685763682250</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_S7Dbp6MOKn8/S3ZqfEQ54vI/AAAAAAAAAMI/j2FNwRKPohE/S220/129018458834145924.jpg'/></author><thr:total>15</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6470399064206765359.post-7545697450724121186</id><published>2010-02-04T10:59:00.001+03:00</published><updated>2010-02-04T10:59:44.858+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='as3'/><category scheme='http://www.blogger.com/atom/ns#' term='swc'/><title type='text'>purePDF - новая as3-библиотека для создания .pdf-файлов</title><content type='html'>&lt;i&gt;Сегодня увидел новость на блоге&amp;nbsp;&lt;/i&gt;&lt;a href="http://www.sephiroth.it/"&gt;&lt;i&gt;Alessandro Crugnola&lt;/i&gt;&lt;/a&gt;&lt;i&gt;&amp;nbsp;о новой библиотеки для создания .pdf-файлов и настолько обрадовался, что решил перевести её.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;purePDF&lt;/b&gt; - это полная библиотека для создания .pdf-документов с помощью ActionScript 3.0. от Alessandro Crugnola&lt;span class="Apple-style-span" style="color: #505050; font-family: Arial, Verdana; font-size: 12px; line-height: 12px;"&gt;&lt;span class="Apple-style-span" style="color: black; font-family: 'Times New Roman'; font-size: medium; line-height: normal;"&gt;&amp;nbsp;для Flash Player 10-ой версии. Проект библиотеки находится на &lt;a href="http://code.google.com/p/purepdf"&gt;Google Code&lt;/a&gt;.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;Библиотека является переведенной, на Action Script 3.0, копией (с некоторыми модификациями) знаменитой java-библиотеки &lt;a href="http://itextpdf.com/"&gt;iText&lt;/a&gt;&amp;nbsp;(версии 4.2) от &lt;a href="http://www.lowagie.com/"&gt;Bruno Lowagie&lt;/a&gt;.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;iText (и &lt;b&gt;purePDF&lt;/b&gt;) имеет много возможностей для создания и работы с .pdf-документами. Список поддерживаемых возможностей, выполненных в &lt;b&gt;purePDF&lt;/b&gt;:&lt;br /&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: 14px;"&gt;&lt;div class="atten" style="background-color: #eaebee; border-bottom-color: rgb(216, 221, 229); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(216, 221, 229); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(216, 221, 229); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(216, 221, 229); border-top-style: solid; border-top-width: 1px; color: #565656; margin-bottom: 10px; margin-top: 10px; padding-bottom: 10px; padding-left: 10px; padding-right: 10px; padding-top: 10px;"&gt;&lt;span class="Apple-style-span"&gt;Прозрачность объектов, слои, режим текста RTL, таблицы (вложенные таблицы, таблицы с изображениями), слайд-шоу, аннотации, комментарии, узоры, градиенты (линейные, радиальные, с альфа-каналом), формы, пункты, главы, списки, изображения (.jpeg, .png, .gif, .tif, BitmapData), шрифты, метаданные, заголовки страниц, колонтитулы, внутренние и внешние ссылки, штрих-коды, вложенные файлы, JavaScript и многое другое.&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;/div&gt;Все возможности вы можете посмотреть в документе &lt;a href="http://www.sephiroth.it/purepdf/pdfs/Reflection.pdf"&gt;purePDF API&lt;/a&gt; (созданным кстати с помощью Action Script).&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Для создания библиотеки использовались и сторонние проекты: &lt;a href="http://www.wizhelp.com/fzlib/"&gt;fzlib&lt;/a&gt;, &lt;a href="http://code.google.com/p/as3corelib/"&gt;as3corelib&lt;/a&gt;, &lt;a href="http://code.google.com/p/ashashmap/"&gt;ashashmap&lt;/a&gt;, alchemy, &lt;a href="http://code.google.com/p/as3-commons/"&gt;as3-commons&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Вы можете скачать исходный код библиотеки и скомпилировать его самостоятельно (см. &lt;a href="http://code.google.com/p/purepdf/wiki/Installation"&gt;руководство по установке&lt;/a&gt;) или скачать скомпилированные .swc-файлы из &lt;a href="http://code.google.com/p/purepdf/downloads/list"&gt;раздела проекта&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Также имеется множество примеров, чтобы разобраться в возможностях библиотеки. Вы можете их найти &lt;a href="http://code.google.com/p/purepdf/wiki/Examples"&gt;здесь&lt;/a&gt;.&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;br /&gt;P.S. Спасибо&amp;nbsp;Alessandro Crugnola.&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6470399064206765359-7545697450724121186?l=as3coder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://as3coder.blogspot.com/feeds/7545697450724121186/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://as3coder.blogspot.com/2010/02/purepdf-as3-pdf.html#comment-form' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6470399064206765359/posts/default/7545697450724121186'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6470399064206765359/posts/default/7545697450724121186'/><link rel='alternate' type='text/html' href='http://as3coder.blogspot.com/2010/02/purepdf-as3-pdf.html' title='purePDF - новая as3-библиотека для создания .pdf-файлов'/><author><name>AS3Coder</name><uri>http://www.blogger.com/profile/14877548685763682250</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_S7Dbp6MOKn8/S3ZqfEQ54vI/AAAAAAAAAMI/j2FNwRKPohE/S220/129018458834145924.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6470399064206765359.post-8168663258830442262</id><published>2010-02-02T22:49:00.001+03:00</published><updated>2010-02-02T22:52:29.678+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='интервью'/><title type='text'>Интересное интервью Тодда Уильямса</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_S7Dbp6MOKn8/S2h9sDPoYJI/AAAAAAAAALA/HbHVOzEVr4U/s320/todd_williams.jpg" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;" /&gt;&lt;/div&gt;&lt;b&gt;&lt;a href="http://www.taterboy.com/blog/"&gt;Todd Williams&lt;/a&gt;&lt;/b&gt; - креативный директор и ведущий flash-разработчик&amp;nbsp;&lt;b&gt;&lt;a href="http://www.hdinteractive.com/"&gt;HD Interactive&lt;/a&gt;&lt;/b&gt;, специализирующийся на онлайн-приложениях, играх и электронных учебных материалах. Имеет более чем 16 летний опыт в разработке мультимедийных приложений. Работал с такими компаниями как Adobe Systems, Disney, Coca-Cola, AT &amp;amp; T, Pepsi и Electronic Arts.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Интервью с Тоддом, читайте на сайте &lt;a href="http://www.adobe.com/devnet/spotlight/spotlight_twilliams.html"&gt;Adobe Developer Connection&lt;/a&gt;. &lt;span class="Apple-style-span" style="font-size: x-small;"&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/6470399064206765359-8168663258830442262?l=as3coder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.adobe.com/devnet/spotlight/spotlight_twilliams.html' title='Интересное интервью Тодда Уильямса'/><link rel='replies' type='application/atom+xml' href='http://as3coder.blogspot.com/feeds/8168663258830442262/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://as3coder.blogspot.com/2010/02/blog-post.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6470399064206765359/posts/default/8168663258830442262'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6470399064206765359/posts/default/8168663258830442262'/><link rel='alternate' type='text/html' href='http://as3coder.blogspot.com/2010/02/blog-post.html' title='Интересное интервью Тодда Уильямса'/><author><name>AS3Coder</name><uri>http://www.blogger.com/profile/14877548685763682250</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_S7Dbp6MOKn8/S3ZqfEQ54vI/AAAAAAAAAMI/j2FNwRKPohE/S220/129018458834145924.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_S7Dbp6MOKn8/S2h9sDPoYJI/AAAAAAAAALA/HbHVOzEVr4U/s72-c/todd_williams.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6470399064206765359.post-5270289033675487419</id><published>2010-01-28T10:57:00.002+03:00</published><updated>2010-01-28T11:00:11.796+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='as3'/><category scheme='http://www.blogger.com/atom/ns#' term='начинающим'/><title type='text'>Authoring mobile Flash content for multiple screen sizes</title><content type='html'>Оптимизация Flash-приложений по разные разрешения экрана. Отличный &lt;a href="http://www.adobe.com/devnet/flash/articles/authoring_for_multiple_screen_sizes.html"&gt;материал&lt;/a&gt; от&lt;br /&gt;&lt;a href="http://blogs.adobe.com/cantrell/"&gt;Christian Cantrell&lt;/a&gt; для начинающих разработчиков Action Script 3.0.&lt;br /&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6470399064206765359-5270289033675487419?l=as3coder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.adobe.com/devnet/flash/articles/authoring_for_multiple_screen_sizes.html' title='Authoring mobile Flash content for multiple screen sizes'/><link rel='replies' type='application/atom+xml' href='http://as3coder.blogspot.com/feeds/5270289033675487419/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://as3coder.blogspot.com/2010/01/authoring-mobile-flash-content-for.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6470399064206765359/posts/default/5270289033675487419'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6470399064206765359/posts/default/5270289033675487419'/><link rel='alternate' type='text/html' href='http://as3coder.blogspot.com/2010/01/authoring-mobile-flash-content-for.html' title='Authoring mobile Flash content for multiple screen sizes'/><author><name>AS3Coder</name><uri>http://www.blogger.com/profile/14877548685763682250</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_S7Dbp6MOKn8/S3ZqfEQ54vI/AAAAAAAAAMI/j2FNwRKPohE/S220/129018458834145924.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6470399064206765359.post-7480034406245760250</id><published>2010-01-26T10:57:00.002+03:00</published><updated>2010-01-26T11:02:13.731+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='flash player'/><title type='text'>The flash.globalization package in Flash Player: Cultural diversity without complexity</title><content type='html'>Интересный пакет классов &lt;b&gt;flash.globalization&lt;/b&gt;&amp;nbsp;ждет нас в новой версии &lt;a href="http://labs.adobe.com/downloads/flashplayer10.html"&gt;Adobe Flash Player 10.1 Beta&lt;/a&gt;. Теперь оптимизировать приложения на &lt;b&gt;Action Script 3.0&lt;/b&gt; под различные языковые аудитории станет легче.&lt;br /&gt;&lt;br /&gt;Пакет содержит &lt;b&gt;6&lt;/b&gt; основных классов:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;NumberFormatter.as&lt;/b&gt; - формирует числовые значения.&lt;/li&gt;&lt;li&gt;&lt;b&gt;CurrencyFormatter.as&lt;/b&gt; -&amp;nbsp;формирует&amp;nbsp;денежные значения.&lt;/li&gt;&lt;li&gt;&lt;b&gt;DateTimeFormatter.as&lt;/b&gt; -&amp;nbsp;формирует&amp;nbsp;значения календаря (дату и время).&lt;/li&gt;&lt;li&gt;&lt;b&gt;Collator.as&lt;/b&gt; - сравнивает слова и словосочетания.&lt;/li&gt;&lt;li&gt;&lt;b&gt;StringTools.as&lt;/b&gt; - инструмент для преобразований строк, таких как капитализация&lt;span style="font-family: Arial, sans-serif; font-size: small;"&gt;&lt;span style="font-size: 13px; line-height: 22px;"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;LocaleID.as&lt;/b&gt; - методы для разбора и обработки строки, содержащие идентификатор местности.&lt;/li&gt;&lt;/ul&gt;Вся информация содержится в &lt;a href="http://www.adobe.com/devnet/"&gt;Adobe Developer Connection&lt;/a&gt; по адресу&amp;nbsp;&lt;a href="http://www.adobe.com/devnet/flashplayer/articles/flash_globalization_package.html"&gt;http://www.adobe.com/devnet/flashplayer/articles/flash_globalization_package.html&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6470399064206765359-7480034406245760250?l=as3coder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.adobe.com/devnet/flashplayer/articles/flash_globalization_package.html?utm_source=feedburner&amp;utm_medium=feed&amp;utm_campaign=Feed:+developer_center_tutorials+(Adobe+Developer+Center+RSS+Feed)' title='The flash.globalization package in Flash Player: Cultural diversity without complexity'/><link rel='replies' type='application/atom+xml' href='http://as3coder.blogspot.com/feeds/7480034406245760250/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://as3coder.blogspot.com/2010/01/flashglobalization-package-in-flash.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6470399064206765359/posts/default/7480034406245760250'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6470399064206765359/posts/default/7480034406245760250'/><link rel='alternate' type='text/html' href='http://as3coder.blogspot.com/2010/01/flashglobalization-package-in-flash.html' title='The flash.globalization package in Flash Player: Cultural diversity without complexity'/><author><name>AS3Coder</name><uri>http://www.blogger.com/profile/14877548685763682250</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_S7Dbp6MOKn8/S3ZqfEQ54vI/AAAAAAAAAMI/j2FNwRKPohE/S220/129018458834145924.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6470399064206765359.post-7553157747453367505</id><published>2010-01-26T00:12:00.002+03:00</published><updated>2010-01-26T11:05:45.394+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Flash CS5'/><category scheme='http://www.blogger.com/atom/ns#' term='Adobe'/><title type='text'>Adobe CS5 - Everything about Adobe Creative Suite 5</title><content type='html'>Открыл для себя ресурс о новой платформе&amp;nbsp;&lt;a href="http://cs5.org/"&gt;Adobe Creative Suite 5&lt;/a&gt;. Много интересного и понятного видео, а также другой информации. Есть даже отдельная категория "&lt;a href="http://cs5.org/?cat=8"&gt;Adobe Flash CS5&lt;/a&gt;".&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6470399064206765359-7553157747453367505?l=as3coder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://cs5.org/' title='Adobe CS5 - Everything about Adobe Creative Suite 5'/><link rel='replies' type='application/atom+xml' href='http://as3coder.blogspot.com/feeds/7553157747453367505/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://as3coder.blogspot.com/2010/01/adobe-cs5-everything-about-adobe.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6470399064206765359/posts/default/7553157747453367505'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6470399064206765359/posts/default/7553157747453367505'/><link rel='alternate' type='text/html' href='http://as3coder.blogspot.com/2010/01/adobe-cs5-everything-about-adobe.html' title='Adobe CS5 - Everything about Adobe Creative Suite 5'/><author><name>AS3Coder</name><uri>http://www.blogger.com/profile/14877548685763682250</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_S7Dbp6MOKn8/S3ZqfEQ54vI/AAAAAAAAAMI/j2FNwRKPohE/S220/129018458834145924.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6470399064206765359.post-7316860801947105152</id><published>2010-01-22T21:33:00.001+03:00</published><updated>2010-01-22T21:34:22.926+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='flash player'/><category scheme='http://www.blogger.com/atom/ns#' term='bug'/><title type='text'>Ошибка с кириллицей при вводе текста во Flash Player на Linux-машинах</title><content type='html'>&lt;i&gt;Знаю, что тема избитая, и всё-таки я её добью.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Очень часто клиенты пишут о проблеме ввода русских символов в одном из приложений на компьютерах с операционной системой Linux. Раньше ответить было нечего, ссылаясь на известный баг Adobe Flash Player'а &lt;a href="http://bugs.adobe.com/jira/browse/FP-40"&gt;FP-40&lt;/a&gt;. Баг появился с версии плеера 9.0.15.0.&lt;br /&gt;&lt;br /&gt;На сегодняшний день ошибка исправлена. Если зайти на Adobe Bug System по адресу &lt;a href="http://bugs.adobe.com/jira/browse/FP-40"&gt;http://bugs.adobe.com/jira/browse/FP-40&lt;/a&gt;, то заявка имеет статус "&lt;b&gt;Закрыто&lt;/b&gt;" и решение "&lt;b&gt;Исправлено&lt;/b&gt;".&lt;br /&gt;&lt;br /&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_S7Dbp6MOKn8/S1nunhGjOyI/AAAAAAAAAK4/-tReBnuzmNc/s320/1.png" /&gt;&lt;br /&gt;&lt;br /&gt;Для того чтобы убедится в этом нужно установить последнюю версию Adobe Flash Player 10.1 Beta 2. Новая версия является бетой, поэтому её нет в центре загрузки &lt;a href="http://get.adobe.com/flashplayer/"&gt;Adobe Flash Player&lt;/a&gt;, и её нужно поставить самостоятельно. Дистрибутив находится в &lt;a href="http://labs.adobe.com/"&gt;Adobe Labs&lt;/a&gt;, по адресу &lt;a href="http://labs.adobe.com/downloads/flashplayer10.html"&gt;http://labs.adobe.com/downloads/flashplayer10.html&lt;/a&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6470399064206765359-7316860801947105152?l=as3coder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://as3coder.blogspot.com/feeds/7316860801947105152/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://as3coder.blogspot.com/2010/01/flash-player-linux.html#comment-form' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6470399064206765359/posts/default/7316860801947105152'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6470399064206765359/posts/default/7316860801947105152'/><link rel='alternate' type='text/html' href='http://as3coder.blogspot.com/2010/01/flash-player-linux.html' title='Ошибка с кириллицей при вводе текста во Flash Player на Linux-машинах'/><author><name>AS3Coder</name><uri>http://www.blogger.com/profile/14877548685763682250</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_S7Dbp6MOKn8/S3ZqfEQ54vI/AAAAAAAAAMI/j2FNwRKPohE/S220/129018458834145924.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_S7Dbp6MOKn8/S1nunhGjOyI/AAAAAAAAAK4/-tReBnuzmNc/s72-c/1.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6470399064206765359.post-2198282688273463050</id><published>2010-01-22T11:47:00.029+03:00</published><updated>2010-01-22T17:11:01.495+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iPhone'/><category scheme='http://www.blogger.com/atom/ns#' term='Flash CS5'/><title type='text'>Знакомимся с первыми разработчиками игр для iPhone использующих Adobe Flash CS5</title><content type='html'>Интересное видео (на английском) от &lt;a href="http://joshblog.net/"&gt;Josh Tynjala&lt;/a&gt; из &lt;a href="http://bowlerhatgames.com/"&gt;Bowler Hat Games&lt;/a&gt;&amp;nbsp;рассказывает о разработке Flash-игры "&lt;a href="http://bowlerhatgames.com/games/chroma-circuit/"&gt;Chroma Circuit&lt;/a&gt;"&lt;span style="color: #333333; font-family: arial, helvetica, clean, sans-serif; line-height: 16px;"&gt;&lt;span style="color: black; font-family: 'Times New Roman'; line-height: normal;"&gt;&amp;nbsp;под &lt;a href="http://www.apple.com/ru/iphone/"&gt;iPhone&lt;/a&gt; на новой платформе &lt;a href="http://labs.adobe.com/technologies/flashcs5/"&gt;Adobe Flash CS5&lt;/a&gt;.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;object height="256" width="425"&gt;&lt;param name="movie" value="http://tv.adobe.com/assets//swf/player.swf"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;param name="FlashVars" value="fileID=4871&amp;context=76&amp;embeded=true&amp;environment=production"&gt;&lt;/param&gt;&lt;embed src="http://tv.adobe.com/assets//swf/player.swf" flashvars="fileID=4871&amp;context=76&amp;embeded=true&amp;environment=production" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="256"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;Видео с сайта &lt;/span&gt;&lt;a href="http://tv.adobe.com/watch/flash-platform-in-action/chroma-circuit-game-for-the-iphone-using-flash/"&gt;&lt;span style="font-size: x-small;"&gt;Adobe TV&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size: x-small;"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6470399064206765359-2198282688273463050?l=as3coder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://as3coder.blogspot.com/feeds/2198282688273463050/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://as3coder.blogspot.com/2010/01/iphone-adobe-flash-cs5.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6470399064206765359/posts/default/2198282688273463050'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6470399064206765359/posts/default/2198282688273463050'/><link rel='alternate' type='text/html' href='http://as3coder.blogspot.com/2010/01/iphone-adobe-flash-cs5.html' title='Знакомимся с первыми разработчиками игр для iPhone использующих Adobe Flash CS5'/><author><name>AS3Coder</name><uri>http://www.blogger.com/profile/14877548685763682250</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_S7Dbp6MOKn8/S3ZqfEQ54vI/AAAAAAAAAMI/j2FNwRKPohE/S220/129018458834145924.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6470399064206765359.post-7913139963081453159</id><published>2010-01-15T16:30:00.008+03:00</published><updated>2010-01-15T16:41:02.762+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='as3'/><category scheme='http://www.blogger.com/atom/ns#' term='начинающим'/><category scheme='http://www.blogger.com/atom/ns#' term='геометрия'/><title type='text'>Простейшая геометрия ActionScript 3.0</title><content type='html'>Работая над казалось бы простыми проектами, иногда нам приходится прибегнуть к знаниям &lt;a href="http://ru.wikipedia.org/wiki/%D0%93%D0%B5%D0%BE%D0%BC%D0%B5%D1%82%D1%80%D0%B8%D1%8F"&gt;геометрии&lt;/a&gt;. У многих здесь и начинаются мучения... Поэтому я решил рассмотреть наиболее популярные примеры.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: x-large;"&gt;1. Расстояние между двумя точками.&lt;
