Hola:
¿Estás utilizando Flash supongo, no? Si es así, entonces te diré que FlashDevelop y Flash IDE (Flash CSX) incluyen plantillas de preloader.
Debes tener 2 archivos: el preloader y el archivo principal (main.as, por ejemplo, y este debes marcarlo como la clase de la aplicación).
En el preloader, el código generado por FlashDevelop es este:
package [COLOR="#FF0000"]tu.paquete[/COLOR] {
import flash.display.MovieClip;
import flash.events.ProgressEvent;
import flash.text.TextField;
import flash.utils.getDefinitionByName;
import flash.errors.IOError;
import flash.events.IOErrorEvent;
import flash.events.Event;
import flash.display.StageScaleMode;
import flash.display.StageAlign;
import flash.display.DisplayObject;
public class Preloader extends MovieClip {
private var _txt: TextField = null;
public function Preloader() {
_txt = new TextField();
if (stage) {
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.align = StageAlign.TOP_LEFT;
stage.stageWidth = 800;
stage.stageHeight = 600;
_txt.x = stage.stageWidth / 2.2;
_txt.y = stage.stageHeight / 2;
}
addEventListener( Event.ENTER_FRAME, checkFrame );
loaderInfo.addEventListener( ProgressEvent.PROGRESS, progress );
loaderInfo.addEventListener( IOErrorEvent.IO_ERROR, ioError );
_txt.textColor = 0x000000;
addChild( _txt );
}
private function ioError( e: IOErrorEvent ): void {
trace(e.text);
}
private function progress( e: ProgressEvent ): void {
// TODO update loader
var p: Number = ( e.bytesLoaded * 100 ) / e.bytesTotal;
_txt.text = 'Cargado: ' + p.toFixed( 2 );
}
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 );
// TODO hide loader
removeChild( _txt );
startup();
}
private function startup(): void {
var App:Class = getDefinitionByName( "[COLOR="#FF0000"]tu.paquete.ClasePrincipal[/COLOR]" ) as Class;
addChild( new App() as DisplayObject );
}
}
}
En realidad no es la plantilla, sino uno modificado que muestra un texto con el mensaje
Cargado: 0.00. Luego, el código se utiliza en la case principal:
package paquete {
import ...;
[Frame(factoryClass = "[COLOR="#FF0000"]paquete.Preloader[/COLOR]")]
public class ClasePrincipal {
public function ClasePrincipal() {
// Tu aplicación.
}
}
}
Esa es la forma más simple de incluir un preloader.
Espero que hayas estado utilizando ActionScript :).