Конечно, я пытался использовать 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);