Pergunta

Eu estou vendo um comportamento estranho com o flash.meios de comunicação.Som de classe em Flex 3.

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

No entanto, isso não está ajudando.Eu estou recebendo um erro de stream, e ele vê de verdade para ser o Som do construtor.

Erro #2044:Não Processada IOErrorEvent:.texto=Error #2032:Fluxo De Erro.em...]

Eu vi um exemplo no Flex docs onde adicionar um ouvinte de evento para IOErrorEvent, CERTAMENTE eu não tenho que fazer isso, e podem simplesmente usar o try-catch?Posso definir um valor nulo ouvinte de evento?

Foi útil?

Solução

IOError = arquivo de destino não pode ser encontrado (ou por algum outro motivo não pode ser lido).Verifique o caminho do arquivo.

Editar:Eu só percebi isso pode não ser o seu problema, você está apenas tentando pegar o IO erro?Se assim for, você pode fazer isso:

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

Outras dicas

Você precisa adicionar um ouvinte desde o URLRequest não é instantânea.Ele vai ser muito rápido, se você está a carregar a partir do disco, mas você ainda vai precisar do Evento-ouvinte.Há um bom exemplo de como configurar isso (Completo com IOErrorEvent manipulação) no livedocs.

try...catch só se aplica para erros que são iniciados quando a função é chamada.Qualquer tipo de método que envolve o carregamento de um material a partir da rede, disco, etc vai ser assíncrona, isto é, não executa logo quando você chamá-lo, mas em vez disso, ele acontece pouco depois de você chamá-lo.Nesse caso, você precisa FAZER o addEventListener, a fim de detectar quaisquer erros ou eventos, ou para saber quando ele terminar de carregar.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top