Показать сообщение отдельно
Старый 27.06.2006, 12:40
mssn вне форума Посмотреть профиль Отправить личное сообщение для mssn Посетить домашнюю страницу mssn Найти все сообщения от mssn
  № 5  
Ответить с цитированием
mssn
 
Аватар для mssn

Регистрация: Jul 2005
Адрес: Ukraine, Kharkov
Сообщений: 21
Отправить сообщение для mssn с помощью ICQ Отправить сообщение для mssn с помощью MSN
Конечно, я пытался использовать stop(), при этом проигрывание останавливается а загрузка продолжается. Вот код:
Код:
import mx.utils.Delegate;
import classes.*;
class ManageSound {
	public var url:String;
	public var autostart:Boolean;
	public var icon:MovieClip;
	public var sound:Sound;
	public var container:MovieClip;
	private var __defined:Boolean;
	private var __checkProgressIID:Number;
	function ManageSound($url:String, $autostart:String, $icon:MovieClip) {
		url = $url;
		autostart = $autostart.toLowerCase() == "yes" ? true : false;
		icon = $icon;
		init();
	}
	public function init():Void {
		icon.onRelease = Delegate.create(this, onReleaseIcon);
		__defined = false;
		_root.preloader._visible = false;
		if (url != undefined && url != "") {
			icon._mark = "enabled";
			icon.enabled = true;
			if (autostart) {
				_loadSound();
			} else {
				icon._mark = "disabled";
			}
		} else {
			icon._mark = "disabled";
			icon.enabled = false;
		}
	}
	private function _loadSound():Void {
		if (!__defined) {
			container = _root.createEmptyMovieClip("container", 0.);
			sound = new Sound(container);
			sound.onLoad = Delegate.create(this, onSoundLoad);
			sound.onSoundComplete = Delegate.create(this, onSoundComplete);
			sound.loadSound(url, true);
			__checkProgressIID = setInterval(this, "checkProgress", 200);
			_root.preloader._visible = true;
		}
		sound.start();
	}
	private function _stopSound():Void {
		sound.stop();
		if (!__defined) {
			//*** загрузка не закончена, ее нужно прекратить ***//
			/*/
			container.unloadMovie();
			container.removeMovieClip();
			sound.loadSound("not realy url");
			delete sound;
			//*/
		}
	}
	public function onReleaseIcon():Void {
		if (icon._mark == "enabled") {
			_stopSound();
			icon._mark = "disabled";
		} else {
			_loadSound();
			icon._mark = "enabled";
		}
	}
	public function checkProgress():Void {
		var percents = Math.floor((sound.getBytesLoaded() / sound.getBytesTotal()) * 100);
		_root.preloader.gotoAndStop(percents);
		if (percents == 100) {
			_root.preloader._visible = false;
		}
	}
	private function onSoundComplete():Void {
		sound.start();
	}
	private function onSoundLoad(success:Boolean):Void {
		__defined = true;
		clearInterval(__checkProgressIID);
		_root.preloader._visible = false;
		if (success) {
		} else {
			_global.error = "1001";
			icon._mark = "disabled";
			icon.enabled = false;
		}
	}
	public function toString():String {
		return "[object MangeSound]";
	}
}

Последовательность вызовов функций прибл. такая:
init()->_loadSound()->onReleaseIcon()->_stopSound()|__defined=false|

В _root :
Код:
import classes.*;
_root.soundUrl = "sounds/tenors.mp3";
_root.soundAutoStart = "no";
var sound_manager:ManageSound = new ManageSound(_root.soundUrl, _root.soundAutoStart, _root.icon);


Последний раз редактировалось iNils; 27.06.2006 в 12:46.