суббота, 22 января 2011 г.

Предзагрузчик

Кажется самым удобным и гибким прелоадер, взятый из книги Колина Мука "ActionScript 3.0 для Flash". Прелоадер здесь это отдельный файл .swf, который загружает в себя сам рабочий ролик. Преимущество в том, что сам прелоадер весит очень мало, начинает отображать загрузку ровно с 0. Полагаю, что и заменить его на сторонний предзагрузчик (например рекламодателя) будет несложно.

 Файл .fla имеет в Document Class приведенный ниже класс (в пакете preloader). Для данного примера в библиотеке созданы два символа для графического отображения шкалы загрузки (StripLoad) и её рамки (Border). Внешний файл называется Game.swf.
Описание в комментариях:
  1. package preloader
  2. {
  3.         import flash.display.Sprite;
  4.         import flash.display.Loader;
  5.         import flash.net.URLRequest;
  6.         import flash.events.Event;
  7.         import flash.events.ProgressEvent;
  8.         import flash.text.TextField;
  9.         import flash.text.TextFormat;
  10.        
  11.         /**
  12.          * предзагрузчик для внешнего файла swf.
  13.          * За основу взят код из книги К.Мука
  14.          */
  15.         public class  Preloader extends Sprite
  16.         {
  17.                 private var loader:Loader;              //загрузчик
  18.                 private var progressOutput:TextField;   //текст загрузки
  19.                 private var formatText:TextFormat;      //форматирование
  20.                 private var scaleLoad:StripLoad;        //шкала загрузки
  21.                 private var scaleLoadBrd:Border;        //окантовка шкалы
  22.                
  23.                 public function Preloader()
  24.                 {
  25.                         createLoader();
  26.                         createProgressIndicator();
  27.                        
  28.                         //начинается загрузка:
  29.                         load(new URLRequest("Game.swf"));
  30.                 }
  31.                
  32.                 private function createLoader():void
  33.                 {
  34.                         //создается объект Loader
  35.                         loader = new Loader();
  36.                        
  37.                         //регистрация приемников событий
  38.                         loader.contentLoaderInfo.addEventListener
  39.                                 (ProgressEvent.PROGRESS, progressListener);
  40.                         loader.contentLoaderInfo.addEventListener
  41.                                 (Event.INIT, initListener);
  42.                         loader.contentLoaderInfo.addEventListener
  43.                                 (Event.COMPLETE, completeListener);
  44.                 }
  45.                
  46.                 //индикатор хода загрузки
  47.                 private function createProgressIndicator():void
  48.                 {
  49.                         //рамка шкалы загрузки
  50.                         scaleLoadBrd = new Border();
  51.                         scaleLoadBrd.x = 200;
  52.                         scaleLoadBrd.y = 170;
  53.                        
  54.                         //шкала загрузки
  55.                         scaleLoad = new StripLoad();
  56.                         scaleLoad.x = scaleLoadBrd.x;
  57.                         scaleLoad.y = scaleLoadBrd.y;
  58.                        
  59.                         addChild(scaleLoadBrd);
  60.                         addChild(scaleLoad);
  61.                        
  62.                         //создание текста загрузки
  63.                         progressOutput = new TextField();
  64.                         progressOutput.width = 200;
  65.                         progressOutput.x = 210;
  66.                         progressOutput.y = 200;
  67.                         progressOutput.selectable = false;
  68.                         progressOutput.text = "Loading...";
  69.                        
  70.                         //его форматирование
  71.                         //форматирование будет вызываться
  72.                         //каждый раз при обновлении текста
  73.                         formatText = new TextFormat();
  74.                         formatText.font = "_sans";
  75.                         formatText.color = 0x795E43;
  76.                         formatText.size = 18;
  77.                         progressOutput.setTextFormat(formatText);
  78.                 }
  79.                
  80.                 //начало загрузки
  81.                 private function load(urlRequest:URLRequest):void
  82.                 {
  83.                         loader.load(urlRequest);
  84.                         if (!contains(progressOutput))
  85.                         {
  86.                                 addChild(progressOutput);
  87.                         }
  88.                 }
  89.                
  90.                 //приемник вызывается, когда появляются данные
  91.                 private function progressListener(event:ProgressEvent):void
  92.                 {
  93.                         var varPerc:Number =
  94.                                 event.bytesLoaded / event.bytesTotal;
  95.                         var loadPercent:String =
  96.                                 Math.round(100 * varPerc) + "%";
  97.                         var loadBytes:String =
  98.                                 Math.floor(event.bytesLoaded / 1024) + "/" +
  99.                                 Math.floor(event.bytesTotal / 1024) + " KB";
  100.                        
  101.                         //обновление текстового индикатора хода загрузки...
  102.                         progressOutput.text =
  103.                                 "Loading: " + loadPercent + "-" + loadBytes;
  104.                         progressOutput.setTextFormat(formatText);
  105.                         //... и шкалы загрузки
  106.                         scaleLoad.scaleX = varPerc;
  107.                        
  108.                         if (varPerc >= 1)
  109.                         {
  110.                                 progressOutput.text = "Loading: completed.";
  111.                                 progressOutput.setTextFormat(formatText);
  112.                         }
  113.                 }
  114.                
  115.                 //когда загружаемый объект становится доступным
  116.                 private function initListener(event:Event):void
  117.                 {
  118.                         //загруженный элемент добавляется
  119.                         //в список отображения
  120.                         addChild(loader.content);
  121.                 }
  122.                
  123.                 //приемник вызывается,
  124.                 //когда загрузка элемента полностью завершена
  125.                 private function completeListener(event:Event):void
  126.                 {
  127.                         //удаляется индикатор хода загрузки
  128.                         removeChild(scaleLoad);
  129.                         removeChild(scaleLoadBrd);
  130.                         removeChild(progressOutput);
  131.                 }
  132.         }
  133. }


1 комментарий:

  1. Harrah's Reno Casino & Hotel - JamBase
    Information and Reviews 서귀포 출장마사지 about Harrah's Reno 충주 출장샵 Casino 삼척 출장마사지 & Hotel in Reno, NV. Find reviews, hours, directions, 구미 출장안마 coupons and 부천 출장마사지 more for Harrah's Reno Casino & Hotel in

    ОтветитьУдалить