usando getDefinitionByName obtienes la clase, pero tienes que crear una instancia de ella (aunque no entiendo por qué te da error). He hecho una prueba y sí que funciona, aunque he cambiado un poco tu código:
- He creado un swf llamado "sonido", donde he importado a la biblioteca un mp3 llamado "XiaoChengGushi.mp3". En sus propiedades he activado "exportar para actionscript" y le he dado el nombre de clase "XiaoChengGushi".
- Dentro del mismo directorio he creado otro .fla con el siguiente código:
Código ActionScript :
import flash.utils.getDefinitionByName;
import flash.media.Sound;
var url_sonidos:URLRequest = new URLRequest();
var cargador:Loader = new Loader();
cargador.contentLoaderInfo.addEventListener(Event.COMPLETE, inicializar_sonidos);
var contexto:LoaderContext = new LoaderContext();
contexto.applicationDomain = ApplicationDomain.currentDomain;
url_sonidos.url = "sonido.swf";
cargador.load(url_sonidos, contexto);
function inicializar_sonidos(event:Event):void
{
var XiaoChengGushi:Class = getDefinitionByName("XiaoChengGushi") as Class;
var sonido:Sound = new XiaoChengGushi();
sonido.play();
} 