Ответ 1
если вы используете загрузчик; попробуйте добавить eventListener в contentLoaderInfo загрузчика, например.
myLoader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, loaderIOErrorHandler);
Ошибка # 2044: необработанный IOErrorEvent:. text = Ошибка # 2036: загрузка никогда не завершена.
Это то, что я вижу каждый раз, когда я пытаюсь загрузить изображение, которое не существует с помощью Loader. Я получаю список URL-адресов и не могу подтвердить, указывают ли они на что-нибудь полезное. Всякий раз, когда он встречает 404, он дает мне эту ошибку.
Я попытался поймать ошибку с каждым доступным IOErrorEvent (их 7), но ни один из них, похоже, не захватил 404. Есть ли какое-то другое сетевое событие, которое я могу найти, чтобы поймать это условие?! Я чувствую, что мне не хватает чего-то очевидного.
Мне бы очень хотелось, чтобы вы могли поймать событие независимо от его описания и просто справиться с ним... вроде как
myLoader.addEventListener(IOErrorEvent. *, dealWithError);
Но это незаконно. Я даже пытался поймать
HTTPStatusEvent.HTTP_STATUS
но это никогда не перезвонит, потому что, я думаю, он получает статус HTTP после того, как он имеет дело с событиями ошибки, поэтому, поскольку он не работает на "необработанном" событии ошибки, он просто теряется. Есть ли события, которых нет в IDE, которые я пропускаю?
Вся помощь оценивается.
если вы используете загрузчик; попробуйте добавить eventListener в contentLoaderInfo загрузчика, например.
myLoader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, loaderIOErrorHandler);
Вы должны прослушать IOErrorEvent.IO_ERROR вашего URLLoader.
urlLoader.addEventListener(IOErrorEvent.IO_ERROR, loaderIOErrorHandler);
function loaderIOErrorHandler(errorEvent:IOErrorEvent):void{
trace("ioErrorHandler: " + errorEvent);
}
Если вы отслеживаете объект события, тогда он должен предоставить вам некоторую информацию о том, что происходит.
Вы пробовали
loader.addEventListener(IOErrorEvent.IO_ERROR, errorHandlerIOErrorEvent);
[EDIT]
Также включают события contentLoaderInfo?
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoadComplete);
loader.contentLoaderInfo.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpStatusHandler );
Похоже, IOErrorEvent.IO_ERROR
должен работать. Также убедитесь, что вы используете URLLoader
для извлечения изображения.
На основе примера из комментариев:
package {
import flash.display.Sprite;
import flash.utils.ByteArray;
import flash.display.Loader;
import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.net.URLLoaderDataFormat;
import flash.geom.Rectangle;
import flash.events.Event;
public class Main extends Sprite {
private var urlLoader:URLLoader = new URLLoader();
public function Main() {
urlLoader.dataFormat = URLLoaderDataFormat.BINARY;
urlLoader.load(new URLRequest("http://www.java2s.com/image2.jpg"));
urlLoader.addEventListener(Event.COMPLETE, completeHandler);
urlloader.addEventListener(IOErrorEvent.IO_ERROR, imageNotFound);
}
private function completeHandler(event:Event):void {
var loader:Loader = new Loader();
loader.loadBytes(urlLoader.data);
addChild(loader);
}
private function imageNotFound(ev:Event):void{
trace("File not found.");
}
}
}