#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. Хммм, понятно, так как именно мне добавить содержимое загрузчика в список отображения? Я такой новичок в этом….