PDA

Просмотр полной версии : NaN


CREDO
22.03.2006, 19:23
При тесте с локального? прелоадер коректно отображает загруженные проценты.
Если тестить с сервера, выдает NaN.

Из за чего происходит такая вещь?:


function checkprogress(xmlfile) {
var bytesLoaded:Number = xmlfile.getBytesLoaded();
var bytesTotal:Number = xmlfile.getBytesTotal();
var percentLoaded:Number = Math.floor((bytesLoaded/bytesTotal)*100);
_root.preloader_mc._visible = true;
_root.preloader_mc.line_mc._xscale = percentLoaded;
_root.preloader_mc.preloader_txt.text = "Загрузка описания... "+percentLoaded+" %";
_root.preloader_mc.preloader_txt.setTextFormat(preloader_fmt);
_root.preloader_mc.preloader_txt.selectable = false;
if (xmlfile.getBytesLoaded() == xmlfile.getBytesTotal()) {
clearInterval(progress_interval);
_root.preloader_mc._visible = false;
}
}
xml.load(way+"/Description.xml");
progress_interval = setInterval(checkprogress, 100, xml);

CREDO
22.03.2006, 19:48
Может ли такое происходить из за маленького веса загружаемого фаила 1 кб

__i
22.03.2006, 19:54
посмотри на то что у тя в xmlfile.getBytesLoaded(); и в xmlfile.getBytesLoaded();

и в xmlfile, повыводи это в текстовое поле,

Madasan
22.03.2006, 19:55
Вот это сомнения вызывает:
if (xmlfile.getBytesLoaded() == xmlfile.getBytesTotal())
Когда ты запускаешь загрузку, в самом начале getBytesTotal() = undefined. Может и NaN получается когда ты на 0 делишь, нужно проверить на 0.

__i
22.03.2006, 19:59
замени
if (xmlfile.getBytesLoaded() == xmlfile.getBytesTotal()) {....
}
на

if (l && t && l>=t){....}

где l = xmlfile.getBytesLoaded() t= xmlfile.getBytesTotal().

В полне вероятно что сервер не успевает получить какойто из параметров и поэтому гдето проскакивает undefined

CREDO
22.03.2006, 20:28
if (xmlfile.getBytesLoaded() == xmlfile.getBytesTotal())

не совсем понимаю

Это условие срабатывает, когда уже фаил загружен.

Madasan
22.03.2006, 20:37
if (xmlfile.getBytesLoaded() == xmlfile.getBytesTotal()&&xmlfile.getBytesTotal()!==0) А вообще можно заголовки проверить, может быть такая ситуация, что сервер не дает размер файла, тогда getBytesTotal() будет undefined пока файл полностью не загрузиться. В таком случае надо попробовать менять расширение файла, на такое, для которого сервер правильно размер выдает, или передавать размер отдетльным запросом с помощью php например.

CREDO
22.03.2006, 23:31
if (xmlfile.getBytesLoaded() == xmlfile.getBytesTotal()&&xmlfile.getBytesTotal()!==0) А вообще можно заголовки проверить, может быть такая ситуация, что сервер не дает размер файла, тогда getBytesTotal() будет undefined пока файл полностью не загрузиться. В таком случае надо попробовать менять расширение файла, на такое, для которого сервер правильно размер выдает, или передавать размер отдетльным запросом с помощью php например.


К счастью фаилы грузятся, просто почему-то % не отображается.

MIX-er
23.03.2006, 00:03
на 80 процентов трабл в том что прелоадер инициализируется раньше чем известен размер подгружаемой инфы...
попробуй воспользоваться онДата

CREDO
23.03.2006, 00:21
Может всё дело в порядке записи событий и функций?

MIX-er
23.03.2006, 00:23
завтра гляну я сща с ноута маковского а флеху под мак я не нарыл ещё)))

CREDO
23.03.2006, 00:25
на 80 процентов трабл в том что прелоадер инициализируется раньше чем известен размер подгружаемой инфы...
попробуй воспользоваться онДата


Не совсем понял.
К чему цеплять onData?

CREDO
23.03.2006, 00:28
завтра гляну я сща с ноута маковского а флеху под мак я не нарыл ещё)))


Красавец.
Ноуд с маком.
Вдруг, что случиться вот геморой будет.

MIX-er
23.03.2006, 10:18
Красавец.
Ноуд с маком.
Вдруг, что случиться вот геморой будет.
???(не менее 5 символов)

Madasan
23.03.2006, 12:46
К счастью фаилы грузятся, просто почему-то % не отображается. Когда файл грузиться в заголовке передается его размер, по этому заголовку флэш и определяет свойство getBytesTotal(). Если в заголовках размера нет, то getBytesTotal() будет undefined до того, пока файл полностью не загрузиться, и флэш не определит размер. Следовательно если в процессе загрузки getBytesTotal()=undefined , то прелоадер проценты показывать не может никак.

CREDO
23.03.2006, 15:44
Когда файл грузиться в заголовке передается его размер, по этому заголовку флэш и определяет свойство getBytesTotal(). Если в заголовках размера нет, то getBytesTotal() будет undefined до того, пока файл полностью не загрузиться, и флэш не определит размер. Следовательно если в процессе загрузки getBytesTotal()=undefined , то прелоадер проценты показывать не может никак.

Да, а как с этим бототься?

CREDO
23.03.2006, 15:46
???(не менее 5 символов)

Сервисных центров где могут подчинить мак оч мало.