Попробуйте Catch With Sound Element во Flash CS5-as3 - PullRequest
0 голосов
/ 12 февраля 2011

Привет всем - кто-нибудь знает, почему этот код не работает?

При другой загрузке [пример изображения] прекрасно работает со звуком ... нет: (

mySoundURL = new URLRequest(var+".mp3"); 
mySoundURLDefault = new URLRequest("default.mp3"); 

try{ 
    sound.load(mySoundURL); 
}catch(e:IOErrorEvent){ 
    trace("Can't load sound: "+e); 
    sound.load(mySoundURLDefault);
} 

это ошибка, которую я получаю:

Error #2044: Unhandled IOErrorEvent:. text=Error #2032: Stream Error

Спасибо и хорошего дня!

Ответы [ 2 ]

3 голосов
/ 12 февраля 2011

Вы не используете try / catch с загрузчиками.Вот что вы делаете вместо этого:

sound.addEventListener(IOErrorEvent.IO_ERROR, onIOErrorEvent);
sound.load(mySoundURL); 

private function onIOErrorEvent(e:IOErrorEvent):void{
  trace(e);
  trace(e.message);

  // ^  This will show you the file it tried to load and failed at

  e.currentTarget.removeEventListener(IOErrorEvent.IOError, onIOErrorEvent);
  e.currentTarget.removeEventListener(Event.COMPLETE, onComplete;
  // ^ don't forget to clean up your listeners!
}

Причина этого, как вы видели, заключается в том, что неперехваченная ошибка не говорит вам ничего полезного, например, какой звук не удалось загрузить или какой URL выпопытка контакта была.

Я думаю, что @ Соболев находится на правильном пути со своим первым предположением, основываясь на том факте, что вы все еще получаете ошибку.Обработка ошибок из загрузчиков отличается от обработки ошибок из синхронного кода, и try / catch вам здесь не поможет.

Если вы хотите воспроизвести альтернативный звук при сбое с первого раза, вы сделаете это в функции onIOErrorEvent.

В других случаях вы будете слушать IOErrorEvent при использовании Loaderзагрузить SWF-файл или файл изображения

 loader.contentLoaderInfo.addEventListener(IOErrorEvent....

Или URLLoader

 urlLoader.addEventListener(IOErrorEvent...
0 голосов
/ 12 февраля 2011

В сообщении не так много информации, я предлагаю проверить следующие условия:

1) Ваш var+".mp3" правильный URI?Это указывает на существующий файл?Просто попробуйте в браузере - должен ли он найти файл?Если вы указываете на файл в Интернете, вы должны использовать нотацию, например http://site.com/song.mp3. Если вы пытаетесь воспроизвести файл на жестком диске, вы должны использовать прямой адрес файла, например C: /audio/song.mp3

2) Если с URI все в порядке, возможно, файл не в формате mp3.

3) Вы можете попробовать поиграть с SoundLoaderContext, например

            var mySoundURL = new URLRequest(var+".mp3")
            var context:SoundLoaderContext = new SoundLoaderContext(0, false);
            snd.load(mySoundURL , context);
...