Можно сделать что-то наподобие класса-оболочки. Примерно так:

Код:
package
{
import flash.events.EventDispatcher;
//можно и не наследовать от EventDispatcher, если события от этого класса не нужны
public class SoundWrapper extends EventDispatcher
{
import flash.events.Event;
import flash.events.IOErrorEvent;
import flash.media.Sound;
import flash.media.SoundChannel;
import flash.net.URLRequest;
//экземпляр Sound
protected var __sound:Sound;
public function get sound():Sound
{
return __sound;
}
//экземпляр SoundChannel
protected var __soundChannel:SoundChannel;
public function get soundChannel():SoundChannel
{
return __soundChannel;
}
//true - если произошло событие OPEN объекта __sound
protected var __isOpened:Boolean;
/**
* если true, то при событии OPEN объекта __sound
* нужно закрыть соединение
*/
protected var __toClose:Boolean;
//constructor
public function SoundWrapper()
{
__sound = new Sound();
__sound.addEventListener(Event.OPEN, __onSoundOpen);
__sound.addEventListener(IOErrorEvent.IO_ERROR, __onSoundIOError);
__isOpened = false;
__toClose = false;
}
//начинает воспроизведение
public function play():void
{
__soundChannel = __sound.play();
}
//останавливает воспроизведение
public function stop():void
{
if(__soundChannel != null)
{
__soundChannel.stop();
}
}
//начинает загрузку
public function load(__aURLRequest:URLRequest):void
{
__sound.load(__aURLRequest);
}
//останавливает загрузку
public function close():void
{
if(__isOpened)
{
__sound.close();
__sound.removeEventListener(Event.OPEN, __onSoundOpen);
__sound.removeEventListener(IOErrorEvent.IO_ERROR, __onSoundIOError);
}
else
{
__toClose = true;
}
}
//при событии OPEN объекта __sound
protected function __onSoundOpen(event:Event):void
{
__isOpened = true;
if(__toClose)
{
close();
}
}
//при событии IOError объекта __sound
protected function __onSoundIOError(event:IOErrorEvent):void
{
}
}
}
Соответственно, использование будет как и для Sound (этот объект будет тоже одноразовым)
Ещё можно проверять экземпляр Sound в этом классе на bytesLoaded, потому что бывают ситуации, когда загрузка началась (т.е. событие OPEN произошло) и больше ничего не грузится. Тогда при попытке закрыть тоже появляется ошибка #2029