Экран загрузки
onClipEvent(load) { // Определяем размер файла. totalFileSize = _root.getBytesTotal(); // Прячем полосу загрузки. this._xscale = 0; } onClipEvent(enterFrame) { // Выясняем, сколько байт уже загружено. bytesLoaded = _root.getBytesLoaded(); // Преобразуем это значение в величину от 0 до 1. amountLoaded = bytesLoaded / totalFileSize; // Преобразуем полученное значение в величину от 0 до 100. percentLoaded = int(100 * amountLoaded); // Определяем масштаб полосы загрузки. this._xscale = percentLoaded; // Устанавливаем текстовое поле в основной временной шкале. _root.loadingMessage = percentLoaded + "%"; // Проверяем, все ли уже загружено, if (amountLoaded >= 1.0) { _root.gotoAndStopt "complete"); } }Просмотрите ролик Loaderl.fla, чтобы понять, как работает приведенный код. Загрузка выполняется в первой сцене, а остальная часть ролика – во второй. Когда пользователь щелкает по кнопке Play (Начать игру), с помощью команды play() ролик переходит от кадра "complete" к последующим.
Обратите внимание, что если вы откроете swf-файл Loaderl.fla и просмотрите его во Flash, то увидите немногое. С вашего локального жесткого диска ролик грузится слишком быстро, чтобы можно было увидеть экран загрузки. Вам нужно разместить файл на вашем Web-сайте, а затем просмотреть его с помощью браузера.
Намного проще все-таки использовать возможность Flash эмулировать модемное соединение. В меню окна предварительного просмотра выберете View › Show Streaming (или нажмите CTRL + Enter) и ролик будет отображаться так же, как если бы он загружался по модемному, то есть очень медленному соединению. Пропускную способность этого виртуального соединения вы можете установить, выбрав пункт меню Debugging в окне предварительного просмотра.
Сложные экраны загрузки
Исходный файл: Loader2.fla.
На рис. 17.3 видно, что в текстовом поле отображается величина 63%. Вместо такого метода измерения можно сообщать пользователю, сколько байт уже загружено и каков размер всего ролика. Для этого нужно изменить значение loadingmessage, записав следующее:
_root.loadingmessage = int(bytesLoaded / 1000) + "kb/" + int(totalFileSize / 1000) + "kb";Тогда вместо 63% вы увидите 90 Kb/143 Kb, что лично мне больше нравится.
Выполняя несложные математические вычисления, вы можете сообщить пользователю, как быстро идет загрузка. Для этого нужно создать переменные, в которых будет храниться количество загруженных байт и время на их загрузку. Теперь вы можете определить скорость загрузки, разделив первую величину на вторую. Это позволит спрогнозировать, сколько времени займет загрузка всего ролика.
Следующий код представлен в ролике Loader2.fla. Он похож на предыдущий фрагмент кода, только здесь на экран выводится еще и дополнительная информация: скорость загрузки и оставшееся время.
onClipEvent(load) { // Получаем исходную информацию. totalFileSize = _root.getBytesTotal(); startTime = getTimer(); startBytes = _root.getBytesLoadedf); // Прячем полосу загрузки, this._xscale = 0; } onClipEvent(enterFrame) { // Выясняем, сколько байт уже загружено. bytesLoaded = _root.getBytesLoaded(); // Преобразуем это значение в величину от 0 до 1. amountLoaded = bytesLoaded / totalFileSize; // Преобразуем полученное значение в величину от 0 до 100. percentLoaded = int(100 * amountLoaded); // Определяем масштаб полосы загрузки. this._xscale = percentLoaded; // Определяем скорость загрузки. timeSoFar = getTimer() - startTime; speed = bytesLoaded / timeSoFar; // Выясняем, сколько времени осталось до конца загрузки. bytesLeft = totalFileSize - bytesLoaded; timeLeft = (bytesLeft / speed) / 1000; // Преобразуем полученное значение в величину с одной цифрой после запятой. speed = int(10 * speed) / 10; // Устанавливаем текстовые поля. _root.bytesMessage = int(bytesLoaded / 1000) + "kb/" + int(totalFileSize / 1000) + "kb"; _root.speedMessage = speed + "k/sec"; _root.timeMessage = int(timeLeft) + " seconds remaining"; }Поскольку мы округлили значение timeLeft до целого числа, то в течение последней секунды загрузки в соответствующем окне будет отображаться ноль. Если вас не устраивает такое положение дел, то вы можете округлить это значение до одного или большего количества знаков после запятой.
// Проверяем, все ли уже загружено. if (amountLoaded >= 1.0) { _root.gotoAndStop("complete"); }Другие типы экранов загрузки
Только что рассмотренные экраны загрузки – стандартные. Кроме них существует множество других вариантов. Самый простой: можно отображать только статический кадр с надписью "Loading, Please Wait…" (Идет загрузка, пожалуйста, подождите…). Когда загрузка будет завершена, ролик просто перейдет следующему кадру.
— Регулярная проверка качества ссылок по более чем 100 показателям и ежедневный пересчет показателей качества проекта.
— Все известные форматы ссылок: арендные ссылки, вечные ссылки, публикации (упоминания, мнения, отзывы, статьи, пресс-релизы).
— SeoHammer покажет, где рост или падение, а также запросы, на которые нужно обратить внимание.
SeoHammer еще предоставляет технологию Буст, она ускоряет продвижение в десятки раз, а первые результаты появляются уже в течение первых 7 дней. Зарегистрироваться и Начать продвижение
Этот вариант можно усложнить и поместить какую-либо повторяющуюся анимацию в кадр.
Еще более сложный вариант: каждый кадр будет отображать различные этапы загрузки. Например, будет собираться некая картинка: чем ближе загрузка будет подходить к концу, тем более целостным будет становиться изображение.
Возможно, для создания таких экранов загрузки функции getBytesTotal () и getBytesLoaded () не понадобятся. Вместо них можно воспользоваться функцией ifFrameLoaded (), чтобы узнать, загружены ли все графические объекты определенного кадра. Эта функция пригодится, если вы хотите, чтобы пользователь начал какую-то часть игры, но не смог продолжить до тех пор, пока необходимые кадры не будут готовы.
Но лучше сделать время загрузки полезным для игрока. Например, поместить в кадр руководство к игре. Вместо того чтобы просто сидеть и смотреть, как заполняется полоса загрузки, игрок сможет узнать полезную и необходимую для него информацию.
