Допустим у меня в папке неизвестное число картинок (1.jpg .... n.jpg) - они с опеределенным интервалом загружаются во флеш (с помощью loadMovie и счетчика i++) и нужно, чтоб я мог отключить цикл, когда картинки кончатся - у меня в этот момент в панели "Output" появляется ошибка например " Error opening URL "file:///F|/%thumbnails/10.jpg" " - как мне эту ошибку отловить (чтоб я мог на нее повесить выход из цикла)?
Ну стандартно обычно подобное делается так: считываются файлы из папки заганяються в список и цикл организуеться уже по количеству элементов в списке. Единственное на флеше я подобное еще не вытворял так что на 100% не уверен что это можно, но скорей всего да...
Да, это понятно, но меня интересует именно отлов данной ошибки (Error opening URL ...) - может есть какая-то стандартная функция для отлова таких ошибок для ActionScript 1.0-2.0 - например "try..catch..finally" можно использовать для отлова назначенных мной ошибок, а где и как ловить эту - неясно.
Может есть какие специальные стандартные переменные, которые можно проверять?
MustLive
8.06.2006 - 20:29
Cesar
В ActionScript 1 такой возможности (проверять на наличие файла по имени) не было - как минимум я такой не нашёл. Поэтому отлавливать ошибку "отсутствия файла" возможности не было (напрямую). В ActionScript 2 мне о подобных функциях не известно (могла и появится) - детальное изучение хелпа и руководства может здесь помочь.
Также имей ввиду, что то что в "Output" выводится, это никак на флешке не скажется, т.к. при проигрыше флешки в плеере, никаких отпутов не будет (он лишь в редакторе). Так что просто флешка не загрузит файл (картинку).
Подобные вещи можно было реализовать самому (если нужно) - можно например грузить swf-ки (в которых будут картинки), и потом посылать контрольный запрос в "вроде бы загруженную" флешку, и получать от неё ответ (символизирующий об успешной загрузке). Но это уже чересчур муторные варианты.
А реально нужно поступить по другому - использовать внешние (в данном случае серверные) возможности. Используется серверный скрипт (на перл, пхп или другом языке), который уже сам проверяет на наличие файлов и передаёт флешке только рабочие имена файлов картинок. При чём помимо проверки на наличие в скриптах можно сделать ещё лучше - просто считать всю директорию с картинками и вернуть массив имён файлов (рабочих) с картинками.
При этом не просто проверяется есть ли файл (и если нет, то заканчиваем), а передаётся сразу весь список, при этом возможны пропуски (и любое количество) - а при этом все файлы, в любом порядке, с любыми именами будут переданы во флешку. Так что серверные скрипты - это как раз тот единственный и реальный вариант.
загружай через 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);
Спасибо за подробные ответы!
Через MovieClipLoader - обязательно попробую.
Вчера нашел неплохой вариант - в дебаггере сидел - при отсутствии требуемого url-a некоторые свойства мувиклипа (movieclip instance properties) принимают ненормальные значения: _framesloaded = -1; _height = 0; _width = 0; - собственно по этим свойствам теперь выполняю проверку. Правда в этом случае пустой (отсутствующий) файл все-таки "загружается" - в результате получаю пустой кадр.
А "перл, пхп или другой язык" - использовать не хочется, т.к. конечный продукт еще и на CD-болванках будет распространяться. Правда и тут можно нормальные варианты придумать.
MustLive
10.06.2006 - 02:54
Цитата
А "перл, пхп или другой язык" - использовать не хочется, т.к. конечный продукт еще и на CD-болванках будет распространяться. Правда и тут можно нормальные варианты придумать.
CesarМожно записывать весь список рабочих файлов (учитывая пропуски) в текстовик (прогой) и считывать во флеш. Этот вариант подойдёт как для веб, так и для CD/DVD распространения. Прога для этого пишется на перл, пхп или другом языке (для CD помимо скриптов, можно заюзать бинарники откомпиленной проги на других языках).
Так что это ещё один реальный вариант - опять же с использованием внешних (серверных или локальных) возможностей.
Duncon
10.06.2006 - 08:36
Не проще ли тогда exe написать и в него вставить уже флешь там на сях например (ну кто на чем)
MustLive
10.06.2006 - 17:32
Ребята, в любом случае при нормальной работе с файлами (где требуется хоть какой-то функционал) придётся использовать внешние проги, на других языках программирования (не на AS) - которые при этом обладают достойным функционалом для работы с файлами.
Флеш (AS) такого функционала не имеет. Т.к. особо для работы с файлами не затачивался (лишь самый базовый функционал). Сама технология имеет другие приоритеты.
P.S.
Для подобных проектов, требующих серьёзной работы с файлами, вообще можно заюзать другую технологию, вместо флеша. К примеру, когда у меня был один серьёзный проект в 2000, и для него предпологалась необходимость обильной работы с файлами (а также запись на CD), то тогда встал вопрос об использовании Shockwave.