Показать сообщение отдельно
Старый 26.04.2009, 18:13
джонатан вне форума Посмотреть профиль Отправить личное сообщение для джонатан Найти все сообщения от джонатан
  № 9  
Ответить с цитированием
джонатан
 
Аватар для джонатан

Регистрация: Jan 2007
Адрес: Минск
Сообщений: 781
Отправить сообщение для джонатан с помощью Skype™
Статик я убрал чтобы не писать из фла весь путь к классу, а создать экземпляр класса.

Код:
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);
	}
}
__________________
Убейте меня!


Последний раз редактировалось джонатан; 26.04.2009 в 22:37.