Внешний предварительный загрузчик вызывает ошибку типа

#flash #actionscript-3 #preloader

#flash #actionscript-3 #предварительный загрузчик

Вопрос:

Я создаю файл FLA, который имеет класс документа «Main», и в его конструкторе я указал ему трассировку (stage). Я добавил внешний предварительный загрузчик для загрузки этого SWF-файла, но что вы знаете, оператор трассировки показывает NULL.

Вот предварительный загрузчик, который в данный момент работает.

 import flash.display.Loader;
import flash.events.ProgressEvent;
import flash.events.Event;
import flash.net.URLRequest;

var l:Loader = new Loader();
l.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, onProgress);
l.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete);
l.load(new URLRequest("Main.swf"));

function onProgress(e:ProgressEvent):void {
    preloader.mask.height = (e.bytesLoaded / e.bytesTotal) * preloader.lemon.height;
}

function onComplete(e:Event):void {
    removeChildAt(0);
}
  

Для самого Main.swf вот класс document:

 package  {

    import Position;
    import flash.display.*;
    import flash.events.Event;

    public class Main extends MovieClip {

        public function Main():void {
            trace(stage);
        }
    }
}
  

//// РЕШАЕМАЯ///
Я забыл добавить элемент на сцену, но, к счастью, в коде Филлипа я увидел это. Так что просто запомните один раз событие.Завершает работу, добавьте содержимое загрузчика на сцену, иначе класс document для swf-файла покажет null.

Ответ №1:

вам нужно подождать, пока ваш основной класс не будет добавлен на сцену (событие.ADDED_TO_STAGE ). Предварительный загрузчик теперь является владельцем этапа…

Если вы загружаете внешний SWF-файл через загрузчик, вам нужно дождаться события.Сначала выполняется инициализация, которая запускается загрузчиком после завершения загрузки и выполнения конструктора вашего загруженного swf-файла. Если вы затем добавляете содержимое загрузчиков в список отображения, также запускается событие ADDED_TO_STAGE. Перед добавлением отображаемого объекта в Stage свойству stage присваивается значение null.

 ldr //your loader
  

ldr.LoaderInfo.addEventListener (событие.ИНИЦИАЛИЗАЦИЯ, foo );
ldr.load();

функция foo( e: событие):void { содержимое переменной:* e.target.content; addChild(содержимое); }

Комментарии:

1. я только что добавил эту строку в конструктор «addEventListener (событие. ADDED_TO_STAGE, go); » чтобы вызвать эту функцию «go», затем я выполнил инструкцию trace в «go» и все еще ничего, почему??

2. возможно ли отредактировать код, необходимый для отслеживания завершения этапа? Я пытался в течение нескольких часов….

3. Хммм, понятно, так как именно мне добавить содержимое загрузчика в список отображения? Я такой новичок в этом….