|
|
|||||
[+1.3 25.09.06]
Регистрация: Aug 2002
Сообщений: 42
|
Путешествие под 3 соснами
Есть у меня маааленькая проблема. Провозился уже большое количество времени, но ответа так и не нашел. Постановка задачки следующая: работаю с БД, отсылаю-собираю данные и прочее. Ну и решил картинки (фоты на людей из БД) рисовать при запросе на полные данные. Ну, дурное дело не хитрое - картинки Из БД повыковырял. Осталось дело за малым отображать. Что есть проще? Вроде бы делаешь loadMovie и все ОК. Все это хорошо, но физиономии есть не на всех человеков, поэтому когда нужного файлика нет нужно вместо фоты выводить картинку-дефолт. Значит в чем собственно проблема. Механизм определения наличия файла я высосал из пальца (но он работает). Но если файла из БД на человека нет, то дефолтовская картинка не рисуется (просто черный квадрат). Отдельно дефолт рисуется нормально, а совместно с фотками из БД нифига. Что за лажа?
По поводу кода, есть вводная: Face - псевдоклип, созданный createEmptyMovieClip("Face",0); filename-это относительный путь файла (фотка создается на основе Фамилии клиента). потом загружаем данные (someClip - просто пустой клип, мы его используем чтобы проверить "всасываемость" файла). Если if выполняется, то картинка из БД есть (уже в виде файла) и я ее благополучно всасываю. Вопрос в следующем, почему если !(if), то не отображается дефолтовская (путь точно правильный). Самое странное, что даже если то что в "else" поставить БЕЗ условия на строчку выше перед IF, то результат абсолютно не меняется? Если сменить IF на !IF (т.е. сделать от противного), то таже петрушка. ... var filename="images/"+index.Фамилия+".jpg"; loadVariables (filename, "someClip"); var i=0; if(_root.someClip)Face.loadMovie(filename); else Face.loadMovie("images/face.jpg"); |
|
|||||
[+1.3 25.09.06]
Регистрация: Aug 2002
Сообщений: 42
|
Никому я не скажу почему я торможу....блин, понял в чем косяк. Да только вопрос все равно остается открытым: как из flash узнать загрузился ролик (файл есть) или нет? А то я тут разбирал пару "левых" способов. С одним из которых еще и малость протормозил...
|
|
|||||
Banned
[+1 16.05.2006]
[++1 16.05.2006] [+ 1 21.05.06] [++ за хамство] [+1 21.05.2006] Регистрация: Dec 2003
Сообщений: 3,925
|
Сверять его getBytesLoaded с getBytesTotal... вернее не его, а мувика, в который грузишь
|
|
|||||
[+1.3 25.09.06]
Регистрация: Aug 2002
Сообщений: 42
|
Угу, интересное предположение. Если ролик есть, то получаем getBytesLoaded=10Кб, getBytesTotal=10Кб, а если не загружен, то getBytesLoaded=0, getBytesTotal=0 . Впрочем идея неплохая, если известно что image>1Кб, то все что меньше, есть "отсутствие изображения". Ок, спасибо за наводку - щаз проверю.
|
|
|||||
[+1.3 25.09.06]
Регистрация: Aug 2002
Сообщений: 42
|
Как и ожидалось, с точки зрения логики нелохо, а сточки зрения практики не очень. Имеем следующее:
function ShowData(a){ if(Face.getBytesTotal()==0)Face.loadMovie("images/face.jpg"); gotoAndPlay(xxx); } Face.loadMovie(filename); Face.OnLoad=ShowData(this); В итоге должны получить следующее: если BytesTotal!=0 (т.е. картинка есть), то катим на ххх. В жизни имеет место то, что хотя Movie.OnLoad (то есть загружено), его TotalBytes==0, почему? Мне тоже интересно почему. Дело в том что если картинки нет, то getTotalBytes может быть сколько? Можно написать <2048 (2Кб). А если загружена, то ТОЧНО больше (все images>4000 байтов). Но мы все равно вместо "filename" почему-то имеем "face.jpg". Короче вот такие вот пироги... P.S. Кстати мне казалось, что OnLoad срабатывает только после того, как весь мувик закачивается. С точки зрения этого примера это явно не так. Не успевает судя по всему и байта закачаться, из-за чего вместо нужной фотки имеем дефолтовсую и катим дальше по gotoAndPlay. |
Часовой пояс GMT +4, время: 08:34. |
|
« Предыдущая тема | Следующая тема » |
|
|