Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 17.10.2008, 13:25
Firefoxer вне форума Посмотреть профиль Отправить личное сообщение для Firefoxer Найти все сообщения от Firefoxer
  № 1  
Ответить с цитированием
Firefoxer

Регистрация: Aug 2007
Сообщений: 56
По умолчанию Ошибка в Mozilla при попытке загрузить несуществующую swf

Выскакивает ошибка "Error #2044: Unhandled IOErrorEvent:. text=Error #2035: URL Not Found.", когда флешка пытается загрузить отсутствующую на сервере другую флешку. Вопрос в том, как правильно обработать/обойти возникновение ошибки и избежать появление такого окошка в Mozilla (в других браузерах не появляется)?
Код:
var myLoader:Loader = new Loader();
var myRequest:URLRequest =  new URLRequest("...");
myLoader.load(myRequest);
Try...catch не помогли, либо неправильно использовал. Перехват IOErrorEvent вроде бы тоже никак не влияет.

Старый 17.10.2008, 13:37
Alex Lexcuk вне форума Посмотреть профиль Отправить личное сообщение для Alex Lexcuk Посетить домашнюю страницу Alex Lexcuk Найти все сообщения от Alex Lexcuk
  № 2  
Ответить с цитированием
Alex Lexcuk

блогер
Регистрация: Mar 2008
Адрес: Донецк_city
Сообщений: 1,094
Записей в блоге: 5
Так надо его URLLoader классом, там есть
ioErrorHandler
Код:
//куски документ класса
...
 my_url_img = "imag.jpg";
		sprite_creator();		
	}

	function menuItemSelectHandler(event:ContextMenuEvent):void {
		tool.x = mouseX;
		tool.y = mouseY+20;
	}

	//загрузочная функция
	function sprite_creator() {
		container = new Sprite();
		//addChild(container);
		loader = new URLLoader();///////////////////////////////////////////////////
		var pictURL:String = my_url_img;
		configureListeners(loader);
		var pictURLReq:URLRequest = new URLRequest(pictURL);
            try {
                loader.load(pictURLReq);
            } catch (error:Error) {
                trace("Unable to load requested document.");
            }

	}

	private function configureListeners(dispatcher:IEventDispatcher):void {
            dispatcher.addEventListener(Event.COMPLETE, completeHandler);
            dispatcher.addEventListener(Event.OPEN, openHandler);
            dispatcher.addEventListener(ProgressEvent.PROGRESS, progressHandler);
            dispatcher.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
            dispatcher.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpStatusHandler);
            dispatcher.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
        }

	private function completeHandler(event:Event):void {
            var loader:URLLoader = URLLoader(event.target);
            trace("completeHandler: " + loader.data);
            var pictLdr:Loader = new Loader();
		    var pictURL:String = my_url_img;
		    var pictURLReq:URLRequest = new URLRequest(pictURL);
		    pictLdr.load(pictURLReq);
		    pictLdr.contentLoaderInfo.addEventListener(Event.COMPLETE, imgLoaded);
		       function imgLoaded(event:Event):void {
			     container.addChild(pictLdr.content);
				 work_mc.addChild(container);
		        }
//            var vars:URLVariables = new URLVariables(loader.data);
//            trace("The answer is " + vars.answer);
//			container.addChild(loader.content);
		
        }

        private function openHandler(event:Event):void {
            trace("openHandler: " + event);
        }

        private function progressHandler(event:ProgressEvent):void {
            trace("progressHandler loaded:" + event.bytesLoaded + " total: " + event.bytesTotal);
        }

        private function securityErrorHandler(event:SecurityErrorEvent):void {
            trace("securityErrorHandler: " + event);
        }

        private function httpStatusHandler(event:HTTPStatusEvent):void {
            trace("httpStatusHandler: " + event);
        }

        private function ioErrorHandler(event:IOErrorEvent):void {
            trace("ioErrorHandler: " + event);
        }

	//конец  загрузочная функция
выдает такое
Код:
httpStatusHandler: [HTTPStatusEvent type="httpStatus" bubbles=false cancelable=false eventPhase=2 status=0]
ioErrorHandler: [IOErrorEvent type="ioError" bubbles=false cancelable=false eventPhase=2 text="Error #2032: Stream Error. URL: file:///D|/flash/AC3/Графика%20длинная%20линия/imag.jpg"]

Старый 17.10.2008, 14:22
Firefoxer вне форума Посмотреть профиль Отправить личное сообщение для Firefoxer Найти все сообщения от Firefoxer
  № 3  
Ответить с цитированием
Firefoxer

Регистрация: Aug 2007
Сообщений: 56
Ошибки теперь нет, но никак не хочет отображаться подгружаемая флешка. Что здесь не так:
Код:
var myLoader3:URLLoader = new URLLoader();
var myRequest3:URLRequest =  new URLRequest("...");
myLoader3.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);			
myLoader3.load(myRequest3);
mus.addChild(myLoader3.content);


Последний раз редактировалось Firefoxer; 17.10.2008 в 14:57.
Старый 17.10.2008, 14:58
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 4  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Alex Lexcuk, внимательно читайте то, что спрашивают, а не вываливайте сразу тонну кривого кода (пусть даже с кусками из хелпа, это не отменяет его полнейшей кривости). И вообще, когда вы уже научитесь писать грамотный и стандартизированный код, а не учить своему чудо-синтаксису с подчеркиваниями и кодингу в кадрах?

URLLoader предназначен для загрузки текста, бинарных данных и т. п., но никак не для загрузки swf/png/jpg, кроме этого, он не является DisplayObject. Firefoxer, для отлова ошибки вам нужно подписаться на соответствующее событие.

Старый 17.10.2008, 15:02
Firefoxer вне форума Посмотреть профиль Отправить личное сообщение для Firefoxer Найти все сообщения от Firefoxer
  № 5  
Ответить с цитированием
Firefoxer

Регистрация: Aug 2007
Сообщений: 56
Подозревал я, даже в хелпе ничего про возможность загрузки swf через URLLoader нет. Благодарю за бдительность, _etc.

В первом посте ошибся, действительно подписка на соответствующее событие спасает:
Код:
var myLoader3:Loader = new Loader();
var myRequest3:URLRequest =  new URLRequest("...");
myLoader3.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
try {
   myLoader3.load(myRequest3);
   mus.addChild(myLoader3);
} catch (error:Error) {		
}			

private function ioErrorHandler(event:IOErrorEvent):void {
}


Последний раз редактировалось Firefoxer; 17.10.2008 в 15:16.
Старый 17.10.2008, 15:51
Alex Lexcuk вне форума Посмотреть профиль Отправить личное сообщение для Alex Lexcuk Посетить домашнюю страницу Alex Lexcuk Найти все сообщения от Alex Lexcuk
  № 6  
Ответить с цитированием
Alex Lexcuk

блогер
Регистрация: Mar 2008
Адрес: Донецк_city
Сообщений: 1,094
Записей в блоге: 5
Ну... Да Неужели никто не читал то, что напечатал я.
URLLoader просто грузит...она не отбражает ничего, если он загрузил (см. текст выше) то уж Loader загрузит и подавно.
Найдите 10 отличий, все работает... Отображается отлично gif, jpg, swf (не важно)
Код:
//Draw_doc_class
package {
	import flash.display.*;//библиотека объектов 
	import flash.events.*;//библиотека событий
	import flash.text.*;//библиотека текста
	import flash.ui.*;
	import flash.system.System;
	import flash.net.*;
	import flash.utils.*;
	import flash.ui.*;

	dynamic public class Doc_class extends Sprite{;
	var loader:URLLoader;
	var container:Sprite;
	var my_url_img:String;
	var work_mc:Sprite;
	function Doc_class() {
		work_mc = this;
		my_url_img="http://www.dnadillo.dn.ua/fla/anim-spider.swf";
		sprite_creator();
	}

	//загрузочная функция
	function sprite_creator() {
		container=new Sprite  ;
		//addChild(container);
		loader=new URLLoader  ;///////////////////////////////////////////////////
		var pictURL:String=my_url_img;
		configureListeners(loader);
		var pictURLReq:URLRequest=new URLRequest(pictURL);
		try {
			loader.load(pictURLReq);
		} catch (error:Error) {
			trace("Unable to load requested document.");
		}

	}

	private function configureListeners(dispatcher:IEventDispatcher):void {
		dispatcher.addEventListener(Event.COMPLETE,completeHandler);
		dispatcher.addEventListener(Event.OPEN,openHandler);
		dispatcher.addEventListener(ProgressEvent.PROGRESS,progressHandler);
		dispatcher.addEventListener(SecurityErrorEvent.SECURITY_ERROR,securityErrorHandler);
		dispatcher.addEventListener(HTTPStatusEvent.HTTP_STATUS,httpStatusHandler);
		dispatcher.addEventListener(IOErrorEvent.IO_ERROR,ioErrorHandler);
	}

	private function completeHandler(event:Event):void {
		var loader:URLLoader=URLLoader(event.target);
		trace("completeHandler: " + loader.data);
		var pictLdr:Loader=new Loader;
		var pictURL:String=my_url_img;
		var pictURLReq:URLRequest=new URLRequest(pictURL);
		pictLdr.load(pictURLReq);
		pictLdr.contentLoaderInfo.addEventListener(Event.COMPLETE,imgLoaded);
		function imgLoaded(event:Event):void {
			container.addChild(pictLdr.content);
			work_mc.addChild(container);
		}
	}

	private function openHandler(event:Event):void {
		trace("openHandler: " + event);
	}

	private function progressHandler(event:ProgressEvent):void {
		trace("progressHandler loaded:" + event.bytesLoaded + " total: " + event.bytesTotal);
	}

	private function securityErrorHandler(event:SecurityErrorEvent):void {
		trace("securityErrorHandler: " + event);
	}

	private function httpStatusHandler(event:HTTPStatusEvent):void {
		trace("httpStatusHandler: " + event);
	}

	private function ioErrorHandler(event:IOErrorEvent):void {
		trace("ioErrorHandler: " + event);
	}

	//конец  загрузочная функция
}
}
Даже скомпили для вас 1.2 кБ
http://www.dnadillo.dn.ua/fla/Doc_loading.swf

Старый 17.10.2008, 16:03
Firefoxer вне форума Посмотреть профиль Отправить личное сообщение для Firefoxer Найти все сообщения от Firefoxer
  № 7  
Ответить с цитированием
Firefoxer

Регистрация: Aug 2007
Сообщений: 56
Что-то я смысл конструкции не понимаю, начинаем грузить через URLLoader, показать не можем, т.к. не является DisplayObject, как выше сказал _etc, и заново качаем через Loader? Расчет на то, что возьмет из кэша? Аналогичное событие ошибки есть и в классе Loader, которым я и воспользовался в итоге, потому мне кажется излишними и даже неприемлимым подобное использование URLLoader, хотя и соглашусь с тем, что это может работать.


Последний раз редактировалось Firefoxer; 17.10.2008 в 16:08.
Старый 17.10.2008, 16:23
Alex Lexcuk вне форума Посмотреть профиль Отправить личное сообщение для Alex Lexcuk Посетить домашнюю страницу Alex Lexcuk Найти все сообщения от Alex Lexcuk
  № 8  
Ответить с цитированием
Alex Lexcuk

блогер
Регистрация: Mar 2008
Адрес: Донецк_city
Сообщений: 1,094
Записей в блоге: 5
Ну так я конечно не настаиваю, однако событие в вашем примере
Код:
myLoader3.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
private function ioErrorHandler(event:IOErrorEvent):void {
}
сработает только в случае вызова функции
Код:
myLoader3.load(myRequest3);
и если вставить trace
Код:
function ioErrorHandler(event:IOErrorEvent):void {
	trace("error");
}
и попытаться загрузить, то чего на самом деле нет
то мы увидим
Код:
Error opening URL 'http://www.dnadillo.dn.ua/fla/cat_.swf'
error
Вехний Error не наш, это точно и следовательно эта конструкция на чувствительном мозиловском движке работать не будет.

Старый 17.10.2008, 16:35
Firefoxer вне форума Посмотреть профиль Отправить личное сообщение для Firefoxer Найти все сообщения от Firefoxer
  № 9  
Ответить с цитированием
Firefoxer

Регистрация: Aug 2007
Сообщений: 56
Я собственно и успокоился потому, что мой пример работает. Ошибки в мозилле больше нет.

Старый 17.10.2008, 17:19
Alex Lexcuk вне форума Посмотреть профиль Отправить личное сообщение для Alex Lexcuk Посетить домашнюю страницу Alex Lexcuk Найти все сообщения от Alex Lexcuk
  № 10  
Ответить с цитированием
Alex Lexcuk

блогер
Регистрация: Mar 2008
Адрес: Донецк_city
Сообщений: 1,094
Записей в блоге: 5
Виноват... тоже попробовал, только, что, работает отлично. Если кому-понадобится
отобразить именно из URLLoader то можно так
Код:
...
loader=new URLLoader  ;///////////////////////////////////////////////////
		var pictURL:String=my_url_img;
		configureListeners(loader);
		var pictURLReq:URLRequest=new URLRequest(pictURL);
		loader.dataFormat= URLLoaderDataFormat.BINARY;
		try {
			loader.load(pictURLReq);
		} catch (error:Error) {
			trace("Unable to load requested document.");
		}
		txt.text = 'Прикол';

	}

	private function configureListeners(dispatcher:IEventDispatcher):void {
		dispatcher.addEventListener(Event.COMPLETE,completeHandler);
		dispatcher.addEventListener(Event.OPEN,openHandler);
		dispatcher.addEventListener(ProgressEvent.PROGRESS,progressHandler);
		dispatcher.addEventListener(SecurityErrorEvent.SECURITY_ERROR,securityErrorHandler);
		dispatcher.addEventListener(HTTPStatusEvent.HTTP_STATUS,httpStatusHandler);
		dispatcher.addEventListener(IOErrorEvent.IO_ERROR,ioErrorHandler);
	}

	private function completeHandler(event:Event):void {
		var pictLdr:Loader=new Loader;
		pictLdr.loadBytes(loader.data);
	    this.addChild(pictLdr);
	}
...


Последний раз редактировалось Alex Lexcuk; 17.10.2008 в 17:22.
Создать новую тему Ответ Часовой пояс GMT +4, время: 09:30.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 09:30.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.