Статик я убрал чтобы не писать из фла весь путь к классу, а создать экземпляр класса.

Код:
import com.flashgangsta.*;
var preloader:Preloader = new Preloader();
function StartProgramm():Void {
trace("Ы");
}
stop();
preloader.listenLoading(this, StartProgramm);
Понял. Сенкс. Я вот как решил беду:

Код AS1/AS2:
class com.flashgangsta.Preloader {
public static var loaded:Boolean;
public static function setLoadComplete(value:Boolean):Void {
loaded = value;
}
public function getLoadComplete():Boolean {
return loaded;
}
public function listenLoading(target:MovieClip, completeHandler:Function):Void {
setLoadComplete(false);
target.onEnterFrame = function() {
if(target.getBytesLoaded() == target.getBytesTotal()) {
setLoadComplete(true);
delete target.onEnterFrame;
completeHandler();
trace(target + " loading is complete");
} else trace(target + "loaded: " + Math.round((target.getBytesLoaded() / target.getBytesTotal() * 100)) + "%");
}
}
}
Интересно, правильное решение я предпринял? Может есть какие-то иные варианты?
Wolsh По последнему добавлению, ьольшой сенкс. Нарушать «этику» не хочу, сейчас же перепишу
Переписал:

Код AS1/AS2:
class com.flashgangsta.Preloader {
public static var loaded:Boolean;
public static var loadListener:Number;
public static var listenInterval:Number = 250;
public static var handler:Function;
public static var trg:MovieClip;
public static function setLoadComplete(value:Boolean):Void {
loaded = value;
}
public function getLoadComplete():Boolean {
return loaded;
}
public static function listenLoading():Void {
setLoadComplete(false);
if(trg.getBytesLoaded() == trg.getBytesTotal()) {
setLoadComplete(true);
clearInterval(loadListener);
handler();
trace(trg + " loading is complete");
} else trace(trg + " loaded: " + Math.round((trg.getBytesLoaded() / trg.getBytesTotal() * 100)) + "%");
}
public function start(target:MovieClip, completeHandler:Function):Void {
handler = completeHandler;
trg = target;
loadListener = setInterval(listenLoading, listenInterval);
}
}