ActionScript Preloader Более подробные проценты - PullRequest
1 голос
/ 01 июня 2011

Я создаю предварительный загрузчик для приложения, которое я создаю. Я ищу способ получить более подробные проценты от ProgressEvent.PROGRESS, которые все предварительные загрузчики используют для отслеживания прогресса загрузки. Когда я запускаю оператор trace() в процентах загрузчика для небольшого файла, мое окно вывода отображает что-то вроде этого:

4
8
13
17
23 etc...

Я ищу способ более внимательно отслеживать этот прогресс, поэтому я получаю 1, 2, 3, etc.... Если числа повторяются, это нормально. Части моего прелоадера полагаются на эти значения, и поэтому было бы здорово иметь возможность получить их от 1 до 100 без пропущенных целых чисел.

Спасибо за ваше время.

Ответы [ 3 ]

2 голосов
/ 01 июня 2011

Это не имеет смысла - если ваше интернет-соединение не загружает ровно 1% файла за раз.

Что происходит, так это то, что после получения каждого нового пакета он может быть любого размера в зависимости от скорости загрузки (скажем, от 200 до 230 КБ). ProgressEvent.PROGRESS отправляется каждый раз при получении одного из них, увеличивая общий загруженный процент, как и следовало ожидать.

Итак, предположим, мы загружаем файл 1000kb , и ваша скорость загрузки составляет 100-150kbps .

Каждая trace() в вашей функции, вызываемой при каждой отправке ProgressEvent.PROGRESS, будет выполняться при получении нового пакета, поэтому:

100 КБ загружено - всего 100 - следы 10
120 КБ загружено - всего 220 - следы 22
150kb загружено - 370 всего - следы 37

1022 * Etc. *

0 голосов
/ 02 июня 2011

Зачем вам нужны эти проценты? Там нет способов заставить URLLoader давать вам что-то вроде обновления на каждые 1%, но вы можете подделать его.

Если вы хотите оценить свою скорость загрузки, вы можете получать время с помощью getTimer и количество загруженных файлов из ProgressEvent каждый раз, когда вы получаете событие прогресса; когда у вас есть это, вы можете сравнить новые и старые значения и получить приблизительную скорость загрузки.

Вы можете сделать то же самое, чтобы сгладить индикатор выполнения, если у вас есть скорость загрузки, вы можете чирикать свой индикатор выполнения и получать небольшое обновление каждый кадр и более точное обновление каждый раз, когда вы получаете ProgressEvent.

0 голосов
/ 01 июня 2011

Как быстро ваша частота кадров?Возможно, он установлен слишком низко, что приводит к тому, что прогресс обновляется реже.Я бы попробовал увеличить частоту кадров или основной фильм.

Еще один распространенный способ - смоделировать его, изменяя значения между двумя интервалами, чтобы он выглядел более плавным.Но это не совсем похоже на то, чего вы пытаетесь достичь.

...