Flash gamedevСтатьи

Preloader

Автор:

Preloader. Ликбез.

Прелоадер делается не просто, а очень просто. По крайней мере в FlashDevelop 3.0
В главном меню выбираем Project -> New Project -> AS3 Project with Preloader ;-)
В проекте будет всего два файла: Preloader.as и  Main.as
В Main.as находится вся логика нашей игры (потенциально), а в Preloader.as - предварительный загрузчик, вернее просто индикатор загрузки.

Стандартный шаблон прелоадера ничего не показывает поэтому я добавил ТextField

    private var progress:TextField;

его инициализацию

      progress = new TextField();
      progress.x = 100;
      progress.y = 100;
      addChild(progress);

и строчку, которая показывает отношение загруженного ко всему объему swf-файла

progress.text = loaderInfo.bytesLoaded.toString() + " / " + loaderInfo.bytesTotal.toString();


Для тех у кого нет FlashDevelop'а и кто не может/ не хочет его скачать - исходник.

Preloader.as

package 
{
  import flash.display.DisplayObject;
  import flash.display.MovieClip;
  import flash.events.Event;
  import flash.text.TextField;
  import flash.utils.getDefinitionByName;
  
  public class Preloader extends MovieClip 
  {
    private var progress:TextField;
    public function Preloader() 
    {
      addEventListener(Event.ENTER_FRAME, checkFrame);
      // show loader
      progress = new TextField();
      progress.x = 100;
      progress.y = 100;
      addChild(progress);
    }
    
    private function checkFrame(e:Event):void 
    {
      // update loader
      if (currentFrame == totalFrames) 
      {
        removeEventListener(Event.ENTER_FRAME, checkFrame);
        startup();
      }
      else
      {
        progress.text = loaderInfo.bytesLoaded.toString() + " / " + loaderInfo.bytesTotal.toString();
      }
    }
    
    private function startup():void 
    {
      // hide loader
      stop();
      var mainClass:Class = getDefinitionByName("Main") as Class;
      addChild(new mainClass() as DisplayObject);
    }    
  }  
}

Для того чтобы проверить, что все работает, встройте пару мегабайт музыки директивой [Emded(source="path_to_file")] и upload'ите флешку на внешний хост.
Если будете запускать с локального диска, то никакой загрузки увидеть не успеете.

#as3, #flashdevelop

8 ноября 2008

Комментарии [4]