Cuestión de orden

En un proyecto estaba cargando audio dinámicamente y esperando en la función delegada el típico parámetro success que te dice si el archivo se ha cargado bien o no. Tenía algo como esto:

beepAudio = new Sound();
beepAudio.loadSound(beepAudioPath,false);
beepAudio.onLoad = Delegate.createVoid(this,beepSoundLoaded);

Pues si encontraba el archivo, beepSoundLoaded saltaba correctamente, pero sino lo encontraba, la función no era llamada. Pero no era llamada para nada, cuando debería ser llamada con false.

Después de un par de absurdas pruebas, me dí cuenta de que el orden es importante. Definir el onLoad antes de llamar al método de carga solucionó el problema:

beepAudio = new Sound();
beepAudio.onLoad = Delegate.createVoid(this,beepSoundLoaded);
beepAudio.loadSound(beepAudioPath,false);

Bastante tonto, pero te puede hacer perder un tiempito. Porque además estoy seguro de que puede pasar con todos los eventos asíncronos.

Educa al friki

Leave a Reply