2dguy Here's an example from FlashDevelop's template "AS3 Project with Preloader", it's more designed for web but you can apply these same concepts to a mobile project:
Main Document Class:
package {
import flash.display.Sprite;
import flash.events.Event;
[Frame(factoryClass="Preloader")]
public class Main extends Sprite {
public function Main():void {
//when using a Frame metadata preloader, the stage isn't available right away,
//so listen for that before attempting to do anything in this document class:
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}
private function init(e:Event = null):void {
removeEventListener(Event.ADDED_TO_STAGE, init);
// entry point
}
}
}
Preloader Class that's added by the Frame metadata:
package {
import flash.display.DisplayObject;
import flash.display.MovieClip;
import flash.display.StageAlign;
import flash.display.StageScaleMode;
import flash.events.Event;
import flash.utils.getDefinitionByName;
public class Preloader extends MovieClip {
public function Preloader() {
if (stage) {
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.align = StageAlign.TOP_LEFT;
}
addEventListener(Event.ENTER_FRAME, checkFrame);
// TODO show loader/splash
}
private function checkFrame(e:Event):void {
if (currentFrame == totalFrames) {
stop();
loadingFinished();
}
}
private function loadingFinished():void {
removeEventListener(Event.ENTER_FRAME, checkFrame);
// TODO hide loader/splash
startup();
}
private function startup():void {
var mainClass:Class = getDefinitionByName("Main") as Class;
addChild(new mainClass() as DisplayObject);
}
}
}
Like @joshtynjala said, this may not make much difference if your SWF size isn't the culprit here with the startup delay, but it's worth a shot!