Я загружаю несколько звуковых файлов и хочу проверять ошибки при каждой загрузке. однако вместо того, чтобы программировать каждый с их собственными функциями завершения / ошибки, я бы хотел, чтобы все они использовали одинаковые функции обработчика завершения / ошибки.
успешно загруженный звук должен создать новую переменную звукового канала, в то время как неудачно загруженный звук произведет простую трассировку с названием звука, который не удалось загрузить. однако для этого мне нужно динамически создавать переменные, которые я еще не выяснил, как это сделать.
вот мой код для моих полных и ошибочных функций:
function soundLoadedOK(e:Event):void
{
//EX: Sound named "explosion" will create Sound Channel named "explosionChannel"
var String(e.currentTarget.name + "Channel"):SoundChannel = new SoundChannel();
}
function soundLoadFailed(e:IOErrorEvent):void
{
trace("Failed To Load Sound:" + e.currentTarget.name);
}
- = - = - = - = - = - = - = - = -
ОБНОВЛЕНО (RE: viatropos)
- = - = - = - = - = - = - = - = -
не могу найти ошибку.
TypeError: Ошибка # 1009: Невозможно получить доступ к свойству или методу пустой ссылки на объект. at lesson12_start_fla :: MainTimeline / loadSounds () at lesson12_start_fla :: MainTimeline / frame1 ():
//Sounds
var soundByName:Object = {};
var channelByName:Object = {};
var soundName:String;
var channelName:String;
loadSounds();
function loadSounds():void
{
var files:Array = ["robotArm.mp3", "click.mp3"];
var i:int = 0;
var n:int = files.length;
for (i; i < n; i++)
{
soundName = files[i];
soundByName[soundName] = new Sound();
soundByName[soundName].addEventListener(Event.COMPLETE, sound_completeHandler);
soundByName[soundName].addEventListener(IOErrorEvent.IO_ERROR, sound_ioErrorHandler);
soundByName[soundName].load(new URLRequest(soundName));
}
}
function sound_completeHandler(event:Event):void
{
channelName = event.currentTarget.id3.songName;
channelByName[channelName] = new SoundChannel();
}
function sound_ioErrorHandler(event:IOErrorEvent):void
{
trace("Failed To Load Sound:" + event.currentTarget.name);
}