Question

Je constate un comportement étrange avec la classe flash.media.Sound dans Flex 3.

var sound:Sound = new Sound();
try{
sound.load(new URLRequest("directory/file.mp3"))
} catch(e:IOError){
 ...
}

Cependant, cela n’aide pas. Je reçois une erreur de flux, qui se trouve dans le constructeur Sound.

  

Erreur n ° 2044: IOErrorEvent non géré.   text = Erreur # 2032: Erreur de flux. à ...]

J'ai vu un exemple dans les documents Flex dans lequel ils ajoutaient un écouteur d'événement pour IOErrorEvent. SÛREMENT, je n'ai pas à le faire et je peux simplement utiliser try-catch? Puis-je définir un écouteur d'événement nul?

Était-ce utile?

La solution

IOError = le fichier cible est introuvable ( ou pour une autre raison ne peut pas être lu). Vérifiez le chemin de votre fichier.

Edit: Je viens de me rendre compte que ce n’est peut-être pas votre problème, vous essayez juste d’attraper l’erreur IO? Si oui, vous pouvez le faire:

var sound:Sound = new Sound();
sound.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
sound.load(new URLRequest("directory/file.mp3"));

function ioErrorHandler(event:IOErrorEvent):void {
    trace("IO error occurred");
}

Autres conseils

Vous devrez ajouter un écouteur puisque l’URLRequest n’est pas instantanée. Il sera très rapide si vous chargez à partir du disque, mais vous aurez toujours besoin de l'écouteur d'événements. Il existe un bon exemple de la manière de configurer cela (avec la gestion IOErrorEvent) dans livesocs .

try ... catch ne s'applique qu'aux erreurs renvoyées lors de l'appel de cette fonction. Toute méthode impliquant le chargement d'éléments à partir du réseau, du disque, etc. sera asynchrone, c'est-à-dire qu'elle ne s'exécutera pas correctement lorsque vous l'appelez, mais qu'elle survient peu de temps après. Dans ce cas, vous avez besoin de addEventListener pour pouvoir détecter les erreurs ou les événements ou pour savoir quand le chargement est terminé.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top