Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript (http://www.flasher.ru/forum/forumdisplay.php?f=5)
-   -   Путешествие под 3 соснами (http://www.flasher.ru/forum/showthread.php?t=64130)

Visor 24.10.2004 02:59

Путешествие под 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");

Visor 24.10.2004 03:30

Никому я не скажу почему я торможу....блин, понял в чем косяк. Да только вопрос все равно остается открытым: как из flash узнать загрузился ролик (файл есть) или нет? А то я тут разбирал пару "левых" способов. С одним из которых еще и малость протормозил...

Antares 24.10.2004 04:57

Сверять его getBytesLoaded с getBytesTotal... вернее не его, а мувика, в который грузишь

Visor 24.10.2004 21:03

Угу, интересное предположение. Если ролик есть, то получаем getBytesLoaded=10Кб, getBytesTotal=10Кб, а если не загружен, то getBytesLoaded=0, getBytesTotal=0 :). Впрочем идея неплохая, если известно что image>1Кб, то все что меньше, есть "отсутствие изображения". Ок, спасибо за наводку - щаз проверю.

Visor 24.10.2004 21:38

Как и ожидалось, с точки зрения логики нелохо, а сточки зрения практики не очень. Имеем следующее:

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, время: 17:33.

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