Помощь · Поиск · Пользователи · Календарь
Полная версия этой страницы: как отловить ошибку - Error opening URL "....." ?
Flash Zone Forum > Macromedia Flash > Общие вопросы
Cesar
Допустим у меня в папке неизвестное число картинок (1.jpg .... n.jpg) - они с опеределенным интервалом загружаются во флеш (с помощью loadMovie и счетчика i++) и нужно, чтоб я мог отключить цикл, когда картинки кончатся  - у меня в этот момент в панели "Output" появляется ошибка например " Error opening URL "file:///F|/%thumbnails/10.jpg" " - как мне эту ошибку отловить (чтоб я мог на нее повесить выход из цикла)?
Duncon
Ну стандартно обычно подобное делается так: считываются файлы из папки заганяються в список и цикл организуеться уже по количеству элементов в списке. Единственное на флеше я подобное еще не вытворял так что на 100% не уверен что это можно, но скорей всего да...
Cesar
Да, это понятно, но меня интересует именно отлов данной ошибки (Error opening URL ...) - может есть какая-то стандартная функция для отлова таких ошибок для ActionScript 1.0-2.0 - например "try..catch..finally" можно использовать для отлова назначенных мной ошибок, а где и как ловить эту - неясно.
Может есть какие специальные стандартные переменные, которые можно проверять?
MustLive
Cesar

В ActionScript 1 такой возможности (проверять на наличие файла по имени) не было - как минимум я такой не нашёл. Поэтому отлавливать ошибку "отсутствия файла" возможности не было (напрямую). В ActionScript 2 мне о подобных функциях не известно (могла и появится) - детальное изучение хелпа и руководства может здесь помочь.

Также имей ввиду, что то что в "Output" выводится, это никак на флешке не скажется, т.к. при проигрыше флешки в плеере, никаких отпутов не будет (он лишь в редакторе). Так что просто флешка не загрузит файл (картинку).

Подобные вещи можно было реализовать самому (если нужно) - можно например грузить swf-ки (в которых будут картинки), и потом посылать контрольный запрос в "вроде бы загруженную" флешку, и получать от неё ответ (символизирующий об успешной загрузке). Но это уже чересчур муторные варианты.

А реально нужно поступить по другому - использовать внешние (в данном случае серверные) возможности. Используется серверный скрипт (на перл, пхп или другом языке), который уже сам проверяет на наличие файлов и передаёт флешке только рабочие имена файлов картинок. При чём помимо проверки на наличие в скриптах можно сделать ещё лучше - просто считать всю директорию с картинками и вернуть массив имён файлов (рабочих) с картинками.

При этом не просто проверяется есть ли файл (и если нет, то заканчиваем), а передаётся сразу весь список, при этом возможны пропуски (и любое количество) - а при этом все файлы, в любом порядке, с любыми именами будут переданы во флешку. Так что серверные скрипты - это как раз тот единственный и реальный вариант.
Rohan
 загружай через MovieClipLoader. Например:
Код
_root.createEmptyMovieClip("mc",1);
var listener:Object = {};
listener.onLoadError = function(target:MovieClip,error:Error){
    trace(error);
}
var loader:MovieClipLoader = new MovieClipLoader();
loader.addListener(listener);
loader.loadClip("notexists.swf",_root.mc);
Cesar
Спасибо за подробные ответы!

Через MovieClipLoader - обязательно попробую.

Вчера нашел неплохой вариант - в дебаггере сидел - при отсутствии требуемого url-a некоторые свойства мувиклипа (movieclip instance properties) принимают ненормальные значения: _framesloaded = -1; _height = 0; _width = 0; - собственно по этим свойствам теперь выполняю проверку. Правда в этом случае пустой (отсутствующий) файл все-таки "загружается" - в результате получаю пустой кадр.

А "перл, пхп или другой язык" - использовать не хочется, т.к. конечный продукт еще и на CD-болванках будет распространяться. Правда и тут можно нормальные варианты придумать.
MustLive
Цитата
А "перл, пхп или другой язык" - использовать не хочется, т.к. конечный продукт еще и на CD-болванках будет распространяться. Правда и тут можно нормальные варианты придумать.

Cesar

Можно записывать весь список рабочих файлов (учитывая пропуски) в текстовик (прогой) и считывать во флеш. Этот вариант подойдёт как для веб, так и для CD/DVD распространения. Прога для этого пишется на перл, пхп или другом языке (для CD помимо скриптов, можно заюзать бинарники откомпиленной проги на других языках).

Так что это ещё один реальный вариант - опять же с использованием внешних (серверных или локальных) возможностей.
Duncon
Не проще ли тогда exe написать и в него вставить уже флешь там на сях например (ну кто на чем)
MustLive
Ребята, в любом случае при нормальной работе с файлами (где требуется хоть какой-то функционал) придётся использовать внешние проги, на других языках программирования (не на AS) - которые при этом обладают достойным функционалом для работы с файлами.

Флеш (AS) такого функционала не имеет. Т.к. особо для работы с файлами не затачивался (лишь самый базовый функционал). Сама технология имеет другие приоритеты.

P.S.

Для подобных проектов, требующих серьёзной работы с файлами, вообще можно заюзать другую технологию, вместо флеша. К примеру, когда у меня был один серьёзный проект в 2000, и для него предпологалась необходимость обильной работы с файлами (а также запись на CD), то тогда встал вопрос об использовании Shockwave.
Русская версия IP.Board © 2001-2016 IPS, Inc.