<?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; внутренний</title>
	<atom:link href="http://pastila.org/tag/vnutrennij/feed/" rel="self" type="application/rss+xml" />
	<link>http://pastila.org</link>
	<description>Блог flash-разработчика</description>
	<lastBuildDate>Mon, 10 Oct 2011 05:16:26 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<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, Actionscript 3]]></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><strong>Предупреждение: материал устаревший, частично трактовка технологий неверная.</strong></p>
<p>Первую запись хочу посвятить этой многозначительной и мучительной теме, сколько я не искал материалов в сети всегда натыкался только на одну <a href="http://etcs.ru/blog/as3/export_in_second_frame_flash_cs3/">ссылку</a>.</p>
<p>Прочитав данный материал, освоив его, я приступил к делу.<br />
К моему большому удивлению, проделав все описанное в статье, для своего проекта, я обнаружил, что результат неудовлетворительный — полоса загрузки появлялась буквально под конец, и стоит учесть, что у меня использовалась конструкция [Embed] (благо CS4 позволяет это), вероятно я что-то сделал неверно, но факт остался фактом &#8212; реорганизация проекта получилась крайне замороченной и неудобной.</p>
<p><span id="more-72"></span>Я некоторое время бился с этой проблемой и решил поэкспериментировать. На деле же всё оказалось очень просто.</p>
<p>Начну с того что класс который используется у человека с ником etc (ссылку на его блог я привел выше) отлично подойдет и для нас. Прописываем его в качестве класса документа.</p>
<p>И далее производим следующие махинации: в Publish Settings (вкладка Flash) мы жмем Settings и прописываем экспорт классов на второй кадр. При этом на таймлайне у нас должно быть три <strong>пустых</strong> кадра.</p>
<p>Если у вас в проекте имеются компоненты, то для ассетов этих компонентов все свойства надо оставить такими как они есть — то есть галочка на экспорт класса во второй кадр должна быть отключена.</p>
<p>Теперь самое интересное &#8212; я думаю вы наделали уже своих спрайтов, мувиклипов и т.д. и присвоили им при необходимости классы? Если да то поздравляю, вам нужно чтобы в свойствах данных мувиклипов стояли галочки &#8212; экспортировать во второй кадр. А теперь магия чисел.</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<span style="color: #000066; font-weight: bold;">.</span>preloader <span style="color: #000000;">&#123;</span>
   <span style="color: #0033ff; font-weight: bold;">import</span> <span style="color: #004993;">flash.display</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">MovieClip</span><span style="color: #000066; font-weight: bold;">;</span>
   <span style="color: #0033ff; font-weight: bold;">import</span> <span style="color: #004993;">flash.display</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">Sprite</span><span style="color: #000066; font-weight: bold;">;</span>
   <span style="color: #0033ff; font-weight: bold;">import</span> <span style="color: #004993;">flash.events</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">Event</span><span style="color: #000066; font-weight: bold;">;</span>
   <span style="color: #0033ff; font-weight: bold;">import</span> <span style="color: #004993;">flash.events</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">ProgressEvent</span><span style="color: #000066; font-weight: bold;">;</span>
   <span style="color: #0033ff; font-weight: bold;">import</span> <span style="color: #004993;">flash.utils</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">getDefinitionByName</span><span style="color: #000066; font-weight: bold;">;</span>
&nbsp;
   <span style="color: #3f5fbf;">/**
    * @author Ilya Malanin (designer@pastila.org)
    */</span>
   <span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #9900cc; font-weight: bold;">class</span> Preloader <span style="color: #0033ff; font-weight: bold;">extends</span> <span style="color: #004993;">MovieClip</span> <span style="color: #000000;">&#123;</span>
&nbsp;
      <span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #6699cc; font-weight: bold;">var</span> progressBar <span style="color: #000066; font-weight: bold;">:</span> <span style="color: #004993;">Sprite</span><span style="color: #000066; font-weight: bold;">;</span>
      <span style="color: #0033ff; font-weight: bold;">private</span> static const ENTRY_FRAME <span style="color: #000066; font-weight: bold;">:</span> <span style="color: #004993;">int</span> = <span style="color: #000000; font-weight:bold;">3</span><span style="color: #000066; font-weight: bold;">;</span>
&nbsp;
      <span style="color: #0033ff; 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: #000066; font-weight: bold;">:</span> <span style="color: #0033ff; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
          <span style="color: #0033ff; font-weight: bold;">super</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
          <span style="color: #004993;">stop</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
          progressBar = <span style="color: #0033ff; 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: #000066; font-weight: bold;">;</span>
          progressBar<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">y</span> = <span style="color: #004993;">stage</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">stageHeight</span> <span style="color: #000066; font-weight: bold;">/</span> <span style="color: #000000; font-weight:bold;">2</span> <span style="color: #000066; font-weight: bold;">-</span> <span style="color: #000000; font-weight:bold;">2</span><span style="color: #000066; font-weight: bold;">;</span>
          <span style="color: #0033ff; font-weight: bold;">with</span> <span style="color: #000000;">&#40;</span>progressBar<span style="color: #000066; font-weight: bold;">.</span><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: #000066; font-weight: bold;">,</span> <span style="color: #000000; font-weight:bold;">1</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</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: #000066; font-weight: bold;">,</span> <span style="color: #000000; font-weight:bold;">0</span><span style="color: #000066; font-weight: bold;">,</span> <span style="color: #004993;">stage</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">stageWidth</span><span style="color: #000066; font-weight: bold;">,</span> <span style="color: #000000; font-weight:bold;">4</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
              <span style="color: #004993;">endFill</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</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><span style="color: #000066; font-weight: bold;">;</span>
&nbsp;
          <span style="color: #004993;">loaderInfo</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">addEventListener</span><span style="color: #000000;">&#40;</span><span style="color: #004993;">ProgressEvent</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">PROGRESS</span><span style="color: #000066; font-weight: bold;">,</span> progressHandler<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
          <span style="color: #004993;">loaderInfo</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">addEventListener</span><span style="color: #000000;">&#40;</span><span style="color: #004993;">Event</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">COMPLETE</span><span style="color: #000066; font-weight: bold;">,</span> completeHandler<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
      <span style="color: #000000;">&#125;</span>
&nbsp;
      <span style="color: #0033ff; 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: #000066; font-weight: bold;">:</span> <span style="color: #004993;">Event</span><span style="color: #000000;">&#41;</span> <span style="color: #000066; font-weight: bold;">:</span> <span style="color: #0033ff; 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: #000066; font-weight: bold;">;</span>
          <span style="color: #004993;">addEventListener</span><span style="color: #000000;">&#40;</span><span style="color: #004993;">Event</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">ENTER_FRAME</span><span style="color: #000066; font-weight: bold;">,</span> enterFrameHandler<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
      <span style="color: #000000;">&#125;</span>
&nbsp;
      <span style="color: #0033ff; 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: #000066; font-weight: bold;">:</span> <span style="color: #004993;">Event</span><span style="color: #000000;">&#41;</span> <span style="color: #000066; font-weight: bold;">:</span> <span style="color: #0033ff; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
          <span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span><span style="color: #004993;">currentFrame</span> <span style="color: #000066; font-weight: bold;">&amp;</span>gt<span style="color: #000066; font-weight: bold;">;</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: #000066; font-weight: bold;">.</span><span style="color: #004993;">ENTER_FRAME</span><span style="color: #000066; font-weight: bold;">,</span> enterFrameHandler<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
              <span style="color: #004993;">stop</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
              <span style="color: #6699cc; font-weight: bold;">var</span> main <span style="color: #000066; font-weight: bold;">:</span> <span style="color: #004993;">Class</span> = <span style="color: #004993;">loaderInfo</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">applicationDomain</span><span style="color: #000066; font-weight: bold;">.</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: #0033ff; font-weight: bold;">as</span> <span style="color: #004993;">Class</span><span style="color: #000066; font-weight: bold;">;</span>
              <span style="color: #004993;">addChild</span><span style="color: #000000;">&#40;</span><span style="color: #0033ff; 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: #000066; font-weight: bold;">;</span>
          <span style="color: #000000;">&#125;</span>
      <span style="color: #000000;">&#125;</span>
&nbsp;
      <span style="color: #0033ff; 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: #000066; font-weight: bold;">:</span> <span style="color: #004993;">ProgressEvent</span><span style="color: #000000;">&#41;</span> <span style="color: #000066; font-weight: bold;">:</span> <span style="color: #0033ff; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
          progressBar<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">scaleX</span> = <span style="color: #000000; font-weight:bold;">1</span> <span style="color: #000066; font-weight: bold;">/</span> event<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">bytesTotal</span> <span style="color: #000066; font-weight: bold;">*</span> event<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">bytesLoaded</span><span style="color: #000066; font-weight: bold;">;</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: #0033ff; 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: #0033ff; font-weight: bold;">super</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
      <span style="color: #004993;">addEventListener</span><span style="color: #000000;">&#40;</span><span style="color: #004993;">Event</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">ADDED_TO_STAGE</span><span style="color: #000066; font-weight: bold;">,</span> initSupaClass<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
  <span style="color: #000000;">&#125;</span>
&nbsp;
  <span style="color: #0033ff; 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: #000066; font-weight: bold;">:</span> <span style="color: #004993;">Event</span><span style="color: #000000;">&#41;</span> <span style="color: #000066; font-weight: bold;">:</span> <span style="color: #0033ff; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
      <span style="color: #000066; font-weight: bold;">...</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>25</slash:comments>
		</item>
	</channel>
</rss>

