<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Пастила. &#187; flash</title>
	<atom:link href="http://pastila.org/category/flash/feed/" rel="self" type="application/rss+xml" />
	<link>http://pastila.org</link>
	<description>Блог Ильи Маланьина - flash-программиста. Свежие идеи и находки.</description>
	<lastBuildDate>Thu, 14 Jan 2010 07:48:05 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Удаление объектов. Утечки памяти во Flash.</title>
		<link>http://pastila.org/flash/udalenie-obektov-utechki-pamyati-vo-flash/</link>
		<comments>http://pastila.org/flash/udalenie-obektov-utechki-pamyati-vo-flash/#comments</comments>
		<pubDate>Mon, 09 Nov 2009 22:44:05 +0000</pubDate>
		<dc:creator>Илья Маланьин</dc:creator>
				<category><![CDATA[flash]]></category>
		<category><![CDATA[работа с памятью]]></category>

		<guid isPermaLink="false">http://pastila.org/?p=104</guid>
		<description><![CDATA[Удаление объектов. Утечки памяти во Flash.]]></description>
			<content:encoded><![CDATA[<p>В данной статье я хотел бы вам рассказать о <strong>правильном (<em>на мой взгляд</em>) способе удаления объектов</strong> и об <strong>утечках памяти во flash</strong>.<br />
<span id="more-104"></span></p>
<p><strong>1. Введение</strong></p>
<p>Надеюсь что статья окажется полезной как для начинающих флэш-программистов, так и для профессионалов.<br />
Чтобы не ходить вокруг да около предлагаю сразу перейти к теории.</p>
<p>Многие начинающие флэшеры, как и я в свое время, слабо понимают необходимость высвобождения памяти от ненужных объектов и классов. Так вот заранее хочу их предупредить &#8211; в более менее сложном проекте где вам придется постоянно работать с динамическими данными\объектами, у вас возникнет необходимость очищения памяти от &laquo;отработанных&raquo; объектов.</p>
<p><strong>2. Откуда берутся утечки памяти?</strong></p>
<p>Во flash вы никогда не работаете напрямую с объектом (классы массивы и т.д. и т.п.), каждый раз вы обращаетесь по ссылке к данному классу. То есть:</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript3" style="font-family:monospace;"><span style="color: #6699cc; font-weight: bold;">var</span> classLink <span style="color: #000000; font-weight: bold;">:</span> <span style="color: #004993;">Sprite</span> = <span style="color: #3366bb; font-weight: bold;">new</span> <span style="color: #004993;">Sprite</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;</pre></div></div>

<p>В данном примере мы создаем новый экземпляр класса Sprite и classLink есть ничто иное как ссылка указывающая на данный экземпляр класса.</p>
<p>Во флэш не существует деструкторов для объектов, но присутствует механизм под названием <i>сборщик мусора</i> (Garbage Collector), который очищает память занимаемую экземплярами объектов (будь то класс, массив и т.д.), при каждой итерации (подходе) только если на данный экземпляр не существует ни одной ссылки. Таким образом если мы напишем:</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript3" style="font-family:monospace;"><span style="color: #6699cc; font-weight: bold;">var</span> classLink <span style="color: #000000; font-weight: bold;">:</span> <span style="color: #004993;">Sprite</span> = <span style="color: #3366bb; font-weight: bold;">new</span> <span style="color: #004993;">Sprite</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
<span style="color: #6699cc; font-weight: bold;">var</span> doubleLink <span style="color: #000000; font-weight: bold;">:</span> <span style="color: #004993;">Sprite</span> = classLink;
&nbsp;
classLink = <span style="color: #3366bb; font-weight: bold;">null</span>;</pre></div></div>

<p>&#8230;то экземпляр класса Sprite не будет удален из памяти. Так же стоит помнить, что если вы используете ссылку на данный объект еще где либо &#8211; например вы добавили объект на сцену:</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript3" style="font-family:monospace;"><span style="color: #3366bb; font-weight: bold;">this</span>.<span style="color: #004993;">addChild</span><span style="color: #000000;">&#40;</span>classLink<span style="color: #000000;">&#41;</span>;</pre></div></div>

<p>..то display list сцены будет содержать ссылку на данный экземпляр класса, и при приравнивании classLink к null не даст вам никаких результатов. Тот же случай ожидает вас при использовании подписки на события объекта (addEventListener);</p>
<p><i>Мораль:</i> необходимо удалять все ссылки на объект, чтобы сборщик мусора очистил участок памяти занимаемый объектом.</p>
<p><strong>3. От теории к практике. Модель уничтожения.</strong></p>
<p>Вам будет гораздо проще если я подскажу вам уже готовое решение, которое вы сами сможете разобрать при желании.</p>
<p>В своих ссылках я упомянул великолепную библиотеку <a href="http://casalib.org/">CASALib</a>, она содержит в своем составе RemovableEventDispatcher и различные интерфейсы вроде IRemovable, IDestroyable, и стандартные классы CasaSprite, CasaMovieClip, CasaTextField и т.д. и т.п.; стандартные классы представляют из себя ничего более кроме как самоуничтожающиеся классы которые в своем арсенале имеют такие методы как removeEventListeners (отписывание всех слушателей) и destroy (убирание себя со сцены, отписывание от всех слушателей и  уничтожение собственного ListenerManager&#8217;a), и кучу еще всего полезного.</p>
<p>А теперь друзья мои вопрос &#8211; к чему я все это написал? К тому чтобы вы посмотрели код класса <a href="http://as3.casalib.org/docs/org_casalib_display_CasaSprite.html">CasaSprite</a> и усвоили раз и навсегда, что пускай не самым удобным, но очень качественным способом уничтожения объектов для вас будет создание для классов деструктора, в котором будут удаляться все зависимые ссылки,  с последующим их обнулением.</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript3" style="font-family:monospace;">  classLink.destroy<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
  classLink = <span style="color: #3366bb; font-weight: bold;">null</span>;</pre></div></div>

<p>Я настоятельно рекомендую использование библиотеки CASALib и её модели деструкторов, поверьте мне — это облегчит вам жизнь. </p>
<p>seeAlso: ListenerManager, IRemovable, IDestroyable.<br />
ps. Это не пропаганда, и не заказной пост (для опенсорса смешно звучит кстати), просто данная библиотека (можно смело назвать подручный фрэймворк) существенно облегчит вам жизнь, и сделает программирование приятнее и удобнее.</p>
]]></content:encoded>
			<wfw:commentRss>http://pastila.org/flash/udalenie-obektov-utechki-pamyati-vo-flash/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Как получить данные о ширине и высоте JPG-изображения не загружая само изображение?</title>
		<link>http://pastila.org/flash/kak-poluchit-dannye-o-shirine-i-vysote-jpg-izobrazheniya-ne-zagruzhaya-samo-izobrazhenie/</link>
		<comments>http://pastila.org/flash/kak-poluchit-dannye-o-shirine-i-vysote-jpg-izobrazheniya-ne-zagruzhaya-samo-izobrazhenie/#comments</comments>
		<pubDate>Thu, 05 Nov 2009 19:43:43 +0000</pubDate>
		<dc:creator>Илья Маланьин</dc:creator>
				<category><![CDATA[flash]]></category>
		<category><![CDATA[jpg]]></category>
		<category><![CDATA[изображение]]></category>

		<guid isPermaLink="false">http://pastila.org/?p=96</guid>
		<description><![CDATA[Как получить данные о ширине и высоте JPG-изображения не загружая само изображение?]]></description>
			<content:encoded><![CDATA[<p>Не так давно мой коллега озадачил меня подобным вопросом, а потом сам же и нашел решение, которым со мной любезно поделился.<br />
<span id="more-96"></span><br />
<a href="http://www.anttikupila.com/flash/getting-jpg-dimensions-with-as3-without-loading-the-entire-file/">Ответ</a> оказался достаточно прост, но к сожалению не универсален. Тем не менее по аналогии данного решения можно осуществить получение данных из изображений и других графических форматов.</p>
]]></content:encoded>
			<wfw:commentRss>http://pastila.org/flash/kak-poluchit-dannye-o-shirine-i-vysote-jpg-izobrazheniya-ne-zagruzhaya-samo-izobrazhenie/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Компилирование *.fla, *.flp из Eclipse (FDT)</title>
		<link>http://pastila.org/flash/kompilirovanie-iz-eclipse-fdt/</link>
		<comments>http://pastila.org/flash/kompilirovanie-iz-eclipse-fdt/#comments</comments>
		<pubDate>Sun, 25 Oct 2009 18:51:59 +0000</pubDate>
		<dc:creator>Илья Маланьин</dc:creator>
				<category><![CDATA[flash]]></category>

		<guid isPermaLink="false">http://pastila.org/?p=92</guid>
		<description><![CDATA[Компилирование *.fla, *.flp из Eclipse (FDT)]]></description>
			<content:encoded><![CDATA[<p>Недавно я задался задачей — компилировать проекты прямо из Eclipse.<br />
Потратив некоторое время, разобравшись с ant-ом, помучив jsfl я таки нашел вполне приемлемый способ компилировать fla прямо из эклипса, но как всегда эта идея оказалась не нова, и её придумали до меня.<br />
На флэш риппере была найдена статья в которой рассказывалось о подобных деяниях (мой способ был лучше, но речь о нем я заводить не буду, потому что&#8230;)<br />
<span id="more-92"></span><br />
Очень хороший человек подсказал мне, что существует очень полезная штуковина, которая заменяет все мои извращения с антом и jsfl (точнее автоматизирует окончательно и бесповоротно).<br />
<a href="http://code.google.com/p/fuelanttasks/">Решение</a> очень элегантное и удобное, коим я и спешу с вами поделиться.</p>
<p>Если вы еще не разбирались с <a href="http://ant.apache.org/">ант&#8217;ом</a>, то крайне советую вам им заняться, ведь вы упускаете очень удобные возможности.</p>
]]></content:encoded>
			<wfw:commentRss>http://pastila.org/flash/kompilirovanie-iz-eclipse-fdt/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Как узнать значение allowNetworking</title>
		<link>http://pastila.org/flash/kak-uznat-znachenie-allownetworking/</link>
		<comments>http://pastila.org/flash/kak-uznat-znachenie-allownetworking/#comments</comments>
		<pubDate>Mon, 19 Oct 2009 21:46:11 +0000</pubDate>
		<dc:creator>Илья Маланьин</dc:creator>
				<category><![CDATA[flash]]></category>

		<guid isPermaLink="false">http://pastila.org/?p=85</guid>
		<description><![CDATA[Как узнать значение allowNetworking (AS3)]]></description>
			<content:encoded><![CDATA[<p>Рано или поздно перед каждым flash-программистом встает вопрос, как узнать доступно ли выполнение navigateToURL (проще говоря allowNetworking имеет значение internal\none или нет). </p>
<p>Секрет прост.<br />
<span id="more-85"></span></p>

<div class="wp_syntax"><div class="code"><pre class="actionscript3" style="font-family:monospace;"><span style="color: #3366bb; font-weight: bold;">public</span> static <span style="color: #339966; font-weight: bold;">function</span> <span style="color: #3366bb; font-weight: bold;">get</span> allowNetworking<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span> <span style="color: #000000; font-weight: bold;">:</span> <span style="color: #004993;">Boolean</span> <span style="color: #000000;">&#123;</span>
  <span style="color: #3366bb; font-weight: bold;">try</span> <span style="color: #000000;">&#123;</span>
    <span style="color: #004993;">ExternalInterface</span>.<span style="color: #004993;">call</span><span style="color: #000000;">&#40;</span><span style="color: #3366bb; font-weight: bold;">null</span><span style="color: #000000;">&#41;</span>;
  <span style="color: #000000;">&#125;</span>
  <span style="color: #3366bb; font-weight: bold;">catch</span> <span style="color: #000000;">&#40;</span>e <span style="color: #000000; font-weight: bold;">:</span> <span style="color: #004993;">SecurityError</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
    <span style="color: #3366bb; font-weight: bold;">return</span> <span style="color: #3366bb; font-weight: bold;">false</span>;
  <span style="color: #000000;">&#125;</span>
  <span style="color: #3366bb; font-weight: bold;">return</span> <span style="color: #3366bb; font-weight: bold;">true</span>;
<span style="color: #000000;">&#125;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://pastila.org/flash/kak-uznat-znachenie-allownetworking/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Встроенный прелоадер (AS3)</title>
		<link>http://pastila.org/flash/vstroennyj-preloader-as3/</link>
		<comments>http://pastila.org/flash/vstroennyj-preloader-as3/#comments</comments>
		<pubDate>Mon, 05 Oct 2009 17:13:03 +0000</pubDate>
		<dc:creator>Илья Маланьин</dc:creator>
				<category><![CDATA[flash]]></category>
		<category><![CDATA[internal]]></category>
		<category><![CDATA[внутренний]]></category>
		<category><![CDATA[встроенный]]></category>
		<category><![CDATA[предзагрузчик]]></category>
		<category><![CDATA[прелоадер]]></category>

		<guid isPermaLink="false">http://pastila.org/?p=72</guid>
		<description><![CDATA[Встроенный прелоадер (self-preloader) на AS3 без проблем.]]></description>
			<content:encoded><![CDATA[<p>Первую запись хочу посвятить этой многозначительной и мучительной теме, сколько я не искал материалов в сети всегда натыкался только на одну <a href="http://etcs.ru/blog/as3/export_in_second_frame_flash_cs3/">ссылку</a>. </p>
<p>Прочитав данный материал, освоив его, я приступил к делу.<br />
К моему большому удивлению, проделав все описанное в статье, для своего проекта, я обнаружил, что результат неудовлетворительный — полоса загрузки появлялась буквально под конец, и стоит учесть, что у меня использовалась конструкция [Embed] (благо CS4 позволяет это), вероятно я что-то сделал неверно, но факт остался фактом &#8211; реорганизация проекта получилась крайне замороченной и неудобной.</p>
<p><span id="more-72"></span>Я некоторое время бился с этой проблемой и решил поэкспериментировать. На деле же всё оказалось очень просто. </p>
<p>Начну с того что класс который используется у человека с ником etc (ссылку на его блог я привел выше) отлично подойдет и для нас. Прописываем его в качестве класса документа.</p>
<p>И далее производим следующие махинации: в Publish Settings (вкладка Flash) мы жмем Settings и прописываем экспорт классов на второй кадр. При этом на таймлайне у нас должно быть три <strong>пустых</strong> кадра.</p>
<p>Если у вас в проекте имеются компоненты, то для ассетов этих компонентов все свойства надо оставить такими как они есть — то есть галочка на экспорт класса во второй кадр должна быть отключена.</p>
<p>Теперь самое интересное &#8211; я думаю вы наделали уже своих спрайтов, мувиклипов и т.д. и присвоили им при необходимости классы? Если да то поздравляю, вам нужно чтобы в свойствах данных мувиклипов стояли галочки &#8211; экспортировать во второй кадр. А теперь магия чисел.</p>
<p>Создаем мувиклип с названием MainClass, где в качестве Base Class прописываем наш базовый класс (то есть класс основного действия вашей флэшки), и&#8230; Внимание! И тоже ставим галочку <strong>экспортировать во второй кадр</strong>.</p>
<p><strong>Никаких</strong> дополнительных мувиклипов создавать не нужно.</p>
<p>А давайте посмотрим как же будет выглядеть у нас класс прелоадера?<br />
А вот и он:</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript3" style="font-family:monospace;"><span style="color: #9900cc; font-weight: bold;">package</span> com.preloader <span style="color: #000000;">&#123;</span>
   <span style="color: #3366bb; font-weight: bold;">import</span> <span style="color: #004993;">flash.display</span>.<span style="color: #004993;">MovieClip</span>;
   <span style="color: #3366bb; font-weight: bold;">import</span> <span style="color: #004993;">flash.display</span>.<span style="color: #004993;">Sprite</span>;
   <span style="color: #3366bb; font-weight: bold;">import</span> <span style="color: #004993;">flash.events</span>.<span style="color: #004993;">Event</span>;
   <span style="color: #3366bb; font-weight: bold;">import</span> <span style="color: #004993;">flash.events</span>.<span style="color: #004993;">ProgressEvent</span>;
   <span style="color: #3366bb; font-weight: bold;">import</span> <span style="color: #004993;">flash.utils</span>.<span style="color: #004993;">getDefinitionByName</span>;
&nbsp;
   <span style="color: #3f5fbf;">/**
    * @author Ilya Malanin (designer@pastila.org)
    */</span>
   <span style="color: #3366bb; font-weight: bold;">public</span> <span style="color: #9900cc; font-weight: bold;">class</span> Preloader extends <span style="color: #004993;">MovieClip</span> <span style="color: #000000;">&#123;</span>
&nbsp;
      <span style="color: #3366bb; font-weight: bold;">private</span> <span style="color: #6699cc; font-weight: bold;">var</span> progressBar <span style="color: #000000; font-weight: bold;">:</span> <span style="color: #004993;">Sprite</span>;
      <span style="color: #3366bb; font-weight: bold;">private</span> static const ENTRY_FRAME <span style="color: #000000; font-weight: bold;">:</span> <span style="color: #004993;">int</span> = <span style="color: #000000; font-weight:bold;">3</span>;
&nbsp;
      <span style="color: #3366bb; font-weight: bold;">public</span> <span style="color: #339966; font-weight: bold;">function</span> Preloader<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span> <span style="color: #000000; font-weight: bold;">:</span> <span style="color: #3366bb; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
          <span style="color: #3366bb; font-weight: bold;">super</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
          <span style="color: #004993;">stop</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
          progressBar = <span style="color: #3366bb; font-weight: bold;">new</span> <span style="color: #004993;">Sprite</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
          progressBar.<span style="color: #004993;">y</span> = <span style="color: #004993;">stage</span>.<span style="color: #004993;">stageHeight</span> <span style="color: #000000; font-weight: bold;">/</span> <span style="color: #000000; font-weight:bold;">2</span> <span style="color: #000000; font-weight: bold;">-</span> <span style="color: #000000; font-weight:bold;">2</span>;
          <span style="color: #3366bb; font-weight: bold;">with</span> <span style="color: #000000;">&#40;</span>progressBar.<span style="color: #004993;">graphics</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
              <span style="color: #004993;">beginFill</span><span style="color: #000000;">&#40;</span>0x0, <span style="color: #000000; font-weight:bold;">1</span><span style="color: #000000;">&#41;</span>;
              <span style="color: #004993;">drawRect</span><span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">0</span>, <span style="color: #000000; font-weight:bold;">0</span>, <span style="color: #004993;">stage</span>.<span style="color: #004993;">stageWidth</span>, <span style="color: #000000; font-weight:bold;">4</span><span style="color: #000000;">&#41;</span>;
              <span style="color: #004993;">endFill</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
          <span style="color: #000000;">&#125;</span>
&nbsp;
          <span style="color: #004993;">addChild</span><span style="color: #000000;">&#40;</span>progressBar<span style="color: #000000;">&#41;</span>;
&nbsp;
          <span style="color: #004993;">loaderInfo</span>.<span style="color: #004993;">addEventListener</span><span style="color: #000000;">&#40;</span><span style="color: #004993;">ProgressEvent</span>.<span style="color: #004993;">PROGRESS</span>, progressHandler<span style="color: #000000;">&#41;</span>;
          <span style="color: #004993;">loaderInfo</span>.<span style="color: #004993;">addEventListener</span><span style="color: #000000;">&#40;</span><span style="color: #004993;">Event</span>.<span style="color: #004993;">COMPLETE</span>, completeHandler<span style="color: #000000;">&#41;</span>;
      <span style="color: #000000;">&#125;</span>
&nbsp;
      <span style="color: #3366bb; font-weight: bold;">private</span> <span style="color: #339966; font-weight: bold;">function</span> completeHandler<span style="color: #000000;">&#40;</span>event <span style="color: #000000; font-weight: bold;">:</span> <span style="color: #004993;">Event</span><span style="color: #000000;">&#41;</span> <span style="color: #000000; font-weight: bold;">:</span> <span style="color: #3366bb; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
          <span style="color: #004993;">play</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
          <span style="color: #004993;">addEventListener</span><span style="color: #000000;">&#40;</span><span style="color: #004993;">Event</span>.<span style="color: #004993;">ENTER_FRAME</span>, enterFrameHandler<span style="color: #000000;">&#41;</span>;
      <span style="color: #000000;">&#125;</span>
&nbsp;
      <span style="color: #3366bb; font-weight: bold;">private</span> <span style="color: #339966; font-weight: bold;">function</span> enterFrameHandler<span style="color: #000000;">&#40;</span>event <span style="color: #000000; font-weight: bold;">:</span> <span style="color: #004993;">Event</span><span style="color: #000000;">&#41;</span> <span style="color: #000000; font-weight: bold;">:</span> <span style="color: #3366bb; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
          <span style="color: #3366bb; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span><span style="color: #004993;">currentFrame</span> <span style="color: #000000; font-weight: bold;">&gt;</span>= ENTRY_FRAME<span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
              <span style="color: #004993;">removeEventListener</span><span style="color: #000000;">&#40;</span><span style="color: #004993;">Event</span>.<span style="color: #004993;">ENTER_FRAME</span>, enterFrameHandler<span style="color: #000000;">&#41;</span>;
              <span style="color: #004993;">stop</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
              <span style="color: #6699cc; font-weight: bold;">var</span> main <span style="color: #000000; font-weight: bold;">:</span> <span style="color: #004993;">Class</span> = <span style="color: #004993;">loaderInfo</span>.<span style="color: #004993;">applicationDomain</span>.<span style="color: #004993;">getDefinition</span><span style="color: #000000;">&#40;</span><span style="color: #990000;">&quot;MainClass&quot;</span><span style="color: #000000;">&#41;</span> <span style="color: #3366bb; font-weight: bold;">as</span> <span style="color: #004993;">Class</span>;
              <span style="color: #004993;">addChild</span><span style="color: #000000;">&#40;</span><span style="color: #3366bb; font-weight: bold;">new</span> main<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span>;
          <span style="color: #000000;">&#125;</span>
      <span style="color: #000000;">&#125;</span>
&nbsp;
      <span style="color: #3366bb; font-weight: bold;">private</span> <span style="color: #339966; font-weight: bold;">function</span> progressHandler<span style="color: #000000;">&#40;</span>event <span style="color: #000000; font-weight: bold;">:</span> <span style="color: #004993;">ProgressEvent</span><span style="color: #000000;">&#41;</span> <span style="color: #000000; font-weight: bold;">:</span> <span style="color: #3366bb; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
          progressBar.<span style="color: #004993;">scaleX</span> = <span style="color: #000000; font-weight:bold;">1</span> <span style="color: #000000; font-weight: bold;">/</span> event.<span style="color: #004993;">bytesTotal</span> <span style="color: #000000; font-weight: bold;">*</span> event.<span style="color: #004993;">bytesLoaded</span>;
      <span style="color: #000000;">&#125;</span>
   <span style="color: #000000;">&#125;</span>
<span style="color: #000000;">&#125;</span></pre></div></div>

<p>Поздравляю, вы стали обладателем внутреннего прелоадера, который не будет взрывать вам мозг.</p>
<p>p.s.<br />
Не забудьте пожалуйста, что в главном классе вашей флэшки в конструкторе необходимо использовать такую конструкцию:</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript3" style="font-family:monospace;">  <span style="color: #3366bb; font-weight: bold;">public</span> <span style="color: #339966; font-weight: bold;">function</span> SupaClass<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
      <span style="color: #3366bb; font-weight: bold;">super</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
      <span style="color: #004993;">addEventListener</span><span style="color: #000000;">&#40;</span><span style="color: #004993;">Event</span>.<span style="color: #004993;">ADDED_TO_STAGE</span>, initSupaClass<span style="color: #000000;">&#41;</span>;
  <span style="color: #000000;">&#125;</span>
&nbsp;
  <span style="color: #3366bb; font-weight: bold;">private</span> <span style="color: #339966; font-weight: bold;">function</span> initSupaClass<span style="color: #000000;">&#40;</span>event <span style="color: #000000; font-weight: bold;">:</span> <span style="color: #004993;">Event</span><span style="color: #000000;">&#41;</span> <span style="color: #000000; font-weight: bold;">:</span> <span style="color: #3366bb; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
      ...
  <span style="color: #000000;">&#125;</span></pre></div></div>

<p>Исходники вы можете взять <a href="http://files.pastila.org/flash/preloader/preloader.rar">тут</a> (чтобы скомпилировать и проверить работоспособность, после распаковки архива положите в папочку images любую картинку (желательно большого размера) и назовите файл logo.jpg, теперь можно компилировать).</p>
]]></content:encoded>
			<wfw:commentRss>http://pastila.org/flash/vstroennyj-preloader-as3/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
	</channel>
</rss>
