Frage

Ich sehe seltsames Verhalten mit der flash.media.Sound Klasse in Flex 3.

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

Dies ist jedoch nicht zu helfen. Ich bin ein Strom Fehler bekommen, und es sieht tatsächlich im Sound-Konstruktor sein.

  

Error # 2044: Unbehandelte IOErrorEvent :.   text = Error # 2032: Stream Error. bei ...]

Ich sah ein Beispiel in der Flex-Dokumentation, wo sie ein Ereignis-Listener für IOErrorEvent hinzufügen, SICHER muss ich nicht das tun, und können einfach verwenden try-catch? Kann ich einen Null-Ereignis-Listener?

War es hilfreich?

Lösung

IOError = Zieldatei nicht gefunden werden kann ( oder aus einem anderen Grunde nicht) gelesen werden. Überprüfen Sie die Dateipfad.

Edit: Ich habe gerade dies kann Ihr Problem nicht sein, Sie versuchen, nur den IO-Fehler zu fangen? Wenn ja, können Sie dies tun:

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");
}

Andere Tipps

Sie müssen einen Zuhörer hinzuzufügen, da die URLRequest nicht augenblicklich ist. Es wird sehr schnell, wenn Sie von der Festplatte geladen sind, aber Sie werden immer noch die Ereignis Zuhörer brauchen. Es ist ein gutes Beispiel dafür, wie dies einzurichten (Komplett mit IOErrorEvent Handling) in dem LiveDocs .

versuchen ... catch gilt nur für Fehler, die ausgelöst werden, wenn diese Funktion aufgerufen wird. Jede Art von Verfahren, das Laden Sachen aus dem Netz, Platte beinhaltet, etc wird asynchron sein, das ist es nicht richtig ausgeführt werden, wenn Sie es nennen, sondern es kommt irgendwann kurz nachdem Sie es nennen. In diesem Fall beurteilen Sie die addEventListener benötigen, um Fehler oder Ereignisse zu fangen oder zu wissen, wann es fertig geladen ist.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top