<?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/preloader/feed/" rel="self" type="application/rss+xml" />
	<link>http://pastila.org</link>
	<description>Блог flash-разработчика</description>
	<lastBuildDate>Fri, 11 May 2012 18:17:21 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</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 позволяет это), вероятно я что-то сделал неверно, но факт остался фактом &#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><pre class="crayon-plain-tag">package com.preloader {
   import flash.display.MovieClip;
   import flash.display.Sprite;
   import flash.events.Event;
   import flash.events.ProgressEvent;
   import flash.utils.getDefinitionByName;

   /**
    * @author Ilya Malanin (designer@pastila.org)
    */
   public class Preloader extends MovieClip {

      private var progressBar : Sprite;
      private static const ENTRY_FRAME : int = 3;

      public function Preloader() : void {
          super();
          stop();
          progressBar = new Sprite();
          progressBar.y = stage.stageHeight / 2 - 2;
          with (progressBar.graphics) {
              beginFill(0x0, 1);
              drawRect(0, 0, stage.stageWidth, 4);
              endFill();
          }

          addChild(progressBar);

          loaderInfo.addEventListener(ProgressEvent.PROGRESS, progressHandler);
          loaderInfo.addEventListener(Event.COMPLETE, completeHandler);
      }

      private function completeHandler(event : Event) : void {
          play();
          addEventListener(Event.ENTER_FRAME, enterFrameHandler);
      }

      private function enterFrameHandler(event : Event) : void {
          if (currentFrame &amp;gt;= ENTRY_FRAME) {
              removeEventListener(Event.ENTER_FRAME, enterFrameHandler);
              stop();
              var main : Class = loaderInfo.applicationDomain.getDefinition(&quot;MainClass&quot;) as Class;
              addChild(new main());
          }
      }

      private function progressHandler(event : ProgressEvent) : void {
          progressBar.scaleX = 1 / event.bytesTotal * event.bytesLoaded;
      }
   }
}</pre><p>Поздравляю, вы стали обладателем внутреннего прелоадера, который не будет взрывать вам мозг.</p>
<p>p.s.<br />
Не забудьте пожалуйста, что в главном классе вашей флэшки в конструкторе необходимо использовать такую конструкцию:</p><pre class="crayon-plain-tag">public function SupaClass() {
      super();
      addEventListener(Event.ADDED_TO_STAGE, initSupaClass);
  }

  private function initSupaClass(event : Event) : void {
      ...
  }</pre><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>

