Question intéressante - Je donne ce code un essai et n'a pas obtenu l'erreur que vous attendez (erreur de flux):
var urlLoader:URLLoader = new URLLoader();
urlLoader.load(new URLRequest("http://stackoverflow.com/test.jpg"));
urlLoader.addEventListener(IOErrorEvent.IO_ERROR, error);
function error(e:IOErrorEvent):void
{
// Don't get the stream error, meaning the stream is still open.
urlLoader.close();
}
Je me suis dit alors qu'il se ferme juste peut-être une demi-seconde plus tard, donc j'ai joint un setTimeout()
à l'appel de fermeture. N'a toujours pas eu l'erreur.
function error(e:IOErrorEvent):void
{
setTimeout(function()
{
// Still no error.
trace("Test.");
urlLoader.close();
}, 3000);
}
vérifier, je courais ce pour vous assurer que nous obtenons encore fait cette erreur:
var urlLoader:URLLoader = new URLLoader();
urlLoader.close(); // Error: Error #2029: This URLStream object does not have
// a stream opened.
Ainsi, il semble comme si vous avez réellement besoin de .close()
un flux en cas une erreur. Comme c'est bizarre. Cela dit, je suis toujours incrédule, alors je me réjouis de toute preuve contre cela.
Est-il possible que 'close()' soit uniquement destiné à arrêter un téléchargement en cours, et non une méthode de "nettoyage" obligatoire? Les [docs] (http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/net/URLLoader.html#close()) impliquent en quelque sorte ceci, mais sont laconiques et déclarent également renvoie l'erreur si "aucune URL n'est diffusée". –