Я пытаюсь настроить предварительный загрузчик, чтобы показать ход загрузки основного swf, в который встроены все его активы. Я нашел метод класса фабрики как described on bit-101, но никакой прогресс загрузки никогда не появляется. Swf загружается отлично, но bytesLoaded всегда равен bytesTotal, и поэтому предварительный загрузчик никогда не вызывается.Основные проблемы с предварительным загрузчиком SWF
Это класс фабрики я использую
package src
{
import flash.display.DisplayObject;
import flash.display.MovieClip;
import flash.display.StageScaleMode;
import flash.display.StageAlign;
import flash.events.Event;
import flash.utils.getDefinitionByName;
/**
* ...
* @author DefaultUser (Tools -> Custom Arguments...)
*/
public class Factory extends MovieClip
{
private var preloader:Preloader;
public function Factory()
{
stop();
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.align = StageAlign.TOP_LEFT;
addEventListener(Event.ENTER_FRAME, enterFrame);
}
public function enterFrame(e:Event):void
{
trace(root.loaderInfo.bytesLoaded, root.loaderInfo.bytesTotal);
if (framesLoaded == totalFrames) {
removeEventListener(Event.ENTER_FRAME, enterFrame);
nextFrame();
init();
}
else {
var percent:Number = root.loaderInfo.bytesLoaded/root.loaderInfo.bytesTotal;
trace(percent);
}
}
private function init():void
{
var mainClass:Class = Class(getDefinitionByName("Main"));
if (mainClass) {
var mainApp:Object = new mainClass();
addChild(mainApp as DisplayObject);
mainApp.init();
}
}
}
}
трассировку, вызываемую на событиях enterFrame показывает, что bytesLoaded и BYTESTOTAL равны.
И это основной класс, который называется при загрузке swf.
package
{
import flash.display.Sprite;
[Frame(factoryClass="src.Factory")]
public class Main extends Sprite
{
[Embed(source="images/FinalImg01.jpg")]
private var Image1:Class;
[Embed(source="images/FinalImg02.jpg")]
private var Image2:Class;
[Embed(source="images/FinalImg03.jpg")]
private var Image3:Class;
public function init():void
{
trace("loaded");
}
}
}
Это правильно сначала вызывает класс Factory, а затем инициализирует Main и вызывает init(). Но, как я уже упоминал выше, предварительная загрузка никогда не отображается, поскольку кажется, что она сразу загружает все.
Это проблема с тем, как я внедряю изображения или потому, что я тестирую локально?
Кто-нибудь еще сталкивается с этими проблемами?
Благодаря Rich
Ya, кажется, что вы проверяете его на месте, поэтому он становится загружен в одном кадре. Попробуйте использовать некоторые другие тяжелые изображения (желательно не в вашей системе, может быть из Интернета). – bhups