Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Preloader (http://www.flasher.ru/forum/showthread.php?t=144972)

Nimmf 26.09.2010 17:38

Preloader
 
во флешку устанавливал прелоадер, код as3 не мой. суть в том что несовсем ясно зачем в конце кода идет обращение к функции main. ведь и без нее после загрузки, отличной отработки прелоудера флеш перейдет к 3 кадру, а что поместить в этот 3 кадр каждый решает сам.
Код AS3:

package 
{
 import flash.display.MovieClip;
 import flash.events.Event;
 import flash.events.ProgressEvent;
 import flash.display.Sprite;
 import flash.display.StageAlign;
 import flash.display.StageScaleMode;
 
 public class GamePreloader extends MovieClip
 {
  public static  const ENTRY_FRAME:Number=3;
  public static  const DOCUMENT_CLASS:String='GameApp';
 
  private var preloader:MovieClip;
 
  public function GamePreloader()
  {
  stage.align=StageAlign.TOP_LEFT;
  stage.scaleMode=StageScaleMode.NO_SCALE; 
  stop();
 
  preloader=getChildByName('mcPreloader') as MovieClip;
 
  loaderInfo.addEventListener(ProgressEvent.PROGRESS, progressHandler);
  loaderInfo.addEventListener(Event.COMPLETE, completeHandler)
  }
 
  private function progressHandler(event:ProgressEvent):void
  { 
  var loaded:uint = event.bytesLoaded;
  var total:uint = event.bytesTotal;
  var p:int=int((loaded/total)*100+1)
  preloader.gotoAndStop(p);
  preloader["pr"].text=(p-1)+'%';
  }
 
  private function completeHandler(event:Event):void
  {
  play();
  addEventListener(Event.ENTER_FRAME, enterFrameHandler);
 
  }
  private function enterFrameHandler(event:Event):void
  {
  if (currentFrame >= ENTRY_FRAME)
  {
    removeEventListener(Event.ENTER_FRAME, enterFrameHandler);
    stop();
    main();
  }
  }
 
  private function main():void
  {
  var programClass:Class = loaderInfo.applicationDomain.getDefinition(DOCUMENT_CLASS) as Class;
  var program:Sprite = new programClass() as Sprite;
  addChild(program);
  }
 
 }
}

прошу прощения за сумбурность. но main мен в тупик прямо поставила

Wolsh 27.09.2010 01:13

Просто этот прелоадер не для мультика придумали)) Если дальше с третьего кадра идет просто анимация - то вопросов нет, убирайте стоп и мейн, и вперед. Но судя по названию класса, этот прелоадер писали для игры, а не для мультфильма.

Воитель 27.09.2010 15:48

А я вот всё не понимаю, некоторые моменты.
Вот например как сделать прелоадер если у меня большинство файлов грузиться из вне. Их надо все загружать во второй кард?
Как вообще идёт код в AS 3.
Например сначала идёт конструктор основного класса, потом всё от событий.
А если мы перешли на второй кард, и там ещё какой-то код написан, во вкладке действия. То вообще путаница начинается.
Как код идёт когда у мувика несколько кадров?

Добавлено через 1 час 11 минут
Я использую CS 3 и там нет функции загружать во второй кадр, есть только загружать в первый кард.
Как более грамотно всё скинуть во второй кадр?

Wolsh 28.09.2010 01:12

Цитата:

как сделать прелоадер если у меня большинство файлов грузиться из вне
Вы смысл понятий разделите. Прелоадер флэшки - это прелоадер данного свф-файла, отслеживающий загрузку данного свф-файла на основе его веса. При чем тут внешние ресурсы, другие файлы? Их вес не входит в вес этой флэшки, и прелоадер никак не способен это отслеживать. Необходимо писать особый прелоадер. Здесь уже было немало обсуждений этой темы. Можно сделать несколько шкал загрузки, или поделить одну на фрагменты по количеству ресурсов, или по их весу, если он известен заранее, и заполнять ее последовательно на основе прогресса загрузки файлов.

Nimmf 28.09.2010 15:14

Wolsh, т.е. я правильно понял: в случае игры main - это основной класс игры?

-De- 28.09.2010 15:48

main - это метод. Функция. Основной класс - GameApp. И вот чтобы его создать в прелоадере (который в 1-м кадре), а сам класс GameApp был не в 1-м кадре пишут такую штуку. В CS 3 всё запущено, в CS4 даже лучше, там есть экспорт во 2-й фрейм - http://etcs.ru/blog/as1/export_in_se...ame_flash_cs3/ тут подробнее.


Часовой пояс GMT +4, время: 14:55.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.