Приветствую! Перечитал кучу тем по части создания такого прелоадера, но нужной информации не нашел (да, читал и темы с этого форума, в которые вы можете перенаправить). История такова, что осваивая FD пришел к решению подгрузить вот такую строчку перед классом прелоадера: [Frame(factoryClass="src.Preloader")] и мой драгоценный класс Main наконец то заработает. Тестирую на сервере через сеть, закидывая скомпилированное туда, но прелоадер не появляется. Трейсы из него не видны.
src.Main

Код AS3:
package src
{
import flash.display.MovieClip;
import flash.events.Event;
import flash.display.Sprite;
import flash.display.DisplayObject;
[SWF(width="600", height="500", backgroundColor="#1a1a1a")] //кажется строку эту не видит
[Frame(factoryClass="src.Preloader")]// эту строчку игнорирует
public class Main extends Sprite
{
public function Main()
{
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}//fun Main
public function init(e:Event = null):void
{
removeEventListener(Event.ADDED_TO_STAGE, init);
здесь начинается загрузка вторичных классов addChild(...);
}
src.Preloader

Код AS3:
package src
{
import flash.display.DisplayObject;
import flash.display.MovieClip;
import flash.display.StageAlign;
import flash.display.StageScaleMode;
import flash.events.Event;
import flash.events.IOErrorEvent;
import flash.events.ProgressEvent;
import flash.utils.getDefinitionByName;
import flash.text.TextField;
import flash.text.TextFieldAutoSize;
import flash.display.LoaderInfo;
public class Preloader extends MovieClip
{
private var preloader_text:TextField;
private var swf_w:int=600;
private var swf_h:int=500;
public function Preloader()
{
trace("Oh mein Gott!");//чуда не произошло
if (stage) {
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.align = StageAlign.TOP_LEFT;
}
addEventListener(Event.ENTER_FRAME, checkFrame);
loaderInfo.addEventListener(ProgressEvent.PROGRESS, progress);
loaderInfo.addEventListener(IOErrorEvent.IO_ERROR, ioError);
// Прелоадер - визуальная часть
preloader_text=new TextField();
preloader_text.text="Load 0 % ";
preloader_text.textColor=0xA0A0A0;
preloader_text.selectable=false;
preloader_text.autoSize=TextFieldAutoSize.CENTER;
preloader_text.x=swf_w/2-preloader_text.width/2;
preloader_text.y=swf_h/2;
addChild(preloader_text);
}
private function ioError(e:IOErrorEvent):void
{
trace(e.text);
}
private function progress(e:ProgressEvent):void
{
// Update loader
preloader_text.text="Load "+(Math.round((loaderInfo.bytesLoaded*100)/loaderInfo.bytesTotal))+" %";
}
private function checkFrame(e:Event):void
{
if (currentFrame == totalFrames)
{
stop();
loadingFinished();
}
}
private function loadingFinished():void
{
removeEventListener(Event.ENTER_FRAME, checkFrame);
loaderInfo.removeEventListener(ProgressEvent.PROGRESS, progress);
loaderInfo.removeEventListener(IOErrorEvent.IO_ERROR, ioError);
// Спрятать прелоадер
preloader_text.visible=false;
startup();
}
private function startup():void
{
var mainClass:Class = getDefinitionByName("Main") as Class;// пробовал с "src.Main" но не пошло тоже
if (parent == stage) stage.addChildAt(new mainClass() as DisplayObject, 0);
else addChildAt(new mainClass() as DisplayObject, 0);
}
}
}
В настройках компилятора Project -> Properties -> Compiler Options -> Additional Compiler Options пробовал дописывать: -frame two Main , но результат отрицательный.