![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Aug 2007
Сообщений: 56
|
Выскакивает ошибка "Error #2044: Unhandled IOErrorEvent:. text=Error #2035: URL Not Found.", когда флешка пытается загрузить отсутствующую на сервере другую флешку. Вопрос в том, как правильно обработать/обойти возникновение ошибки и избежать появление такого окошка в Mozilla (в других браузерах не появляется)?
Try...catch не помогли, либо неправильно использовал. Перехват IOErrorEvent вроде бы тоже никак не влияет. |
|
|||||
|
Так надо его 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);
}
//конец загрузочная функция
|
|
|||||
|
Регистрация: Aug 2007
Сообщений: 56
|
Ошибки теперь нет, но никак не хочет отображаться подгружаемая флешка. Что здесь не так:
Последний раз редактировалось Firefoxer; 17.10.2008 в 14:57. |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Alex Lexcuk, внимательно читайте то, что спрашивают, а не вываливайте сразу тонну кривого кода (пусть даже с кусками из хелпа, это не отменяет его полнейшей кривости). И вообще, когда вы уже научитесь писать грамотный и стандартизированный код, а не учить своему чудо-синтаксису с подчеркиваниями и кодингу в кадрах?
URLLoader предназначен для загрузки текста, бинарных данных и т. п., но никак не для загрузки swf/png/jpg, кроме этого, он не является DisplayObject. 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. |
|
|||||
|
Ну... Да Неужели никто не читал то, что напечатал я.
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);
}
//конец загрузочная функция
}
}
http://www.dnadillo.dn.ua/fla/Doc_loading.swf |
|
|||||
|
Регистрация: Aug 2007
Сообщений: 56
|
Что-то я смысл конструкции не понимаю, начинаем грузить через URLLoader, показать не можем, т.к. не является DisplayObject, как выше сказал _etc, и заново качаем через Loader? Расчет на то, что возьмет из кэша? Аналогичное событие ошибки есть и в классе Loader, которым я и воспользовался в итоге, потому мне кажется излишними и даже неприемлимым подобное использование URLLoader, хотя и соглашусь с тем, что это может работать.
Последний раз редактировалось Firefoxer; 17.10.2008 в 16:08. |
|
|||||
|
Ну так я конечно не настаиваю, однако событие в вашем примере
myLoader3.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
private function ioErrorHandler(event:IOErrorEvent):void {
}
и если вставить trace и попытаться загрузить, то чего на самом деле нет то мы увидим Вехний Error не наш, это точно и следовательно эта конструкция на чувствительном мозиловском движке работать не будет. |
|
|||||
|
Регистрация: Aug 2007
Сообщений: 56
|
Я собственно и успокоился потому, что мой пример работает. Ошибки в мозилле больше нет.
|
|
|||||
|
Виноват... тоже попробовал, только, что, работает отлично. Если кому-понадобится
отобразить именно из 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. |
|
|
« Предыдущая тема | Следующая тема » |
|
|