Просмотр полной версии : прелоадер
julie525
29.01.2008, 15:00
подскажите, почему в прелоадере не отображаются правильно процент загрузки и общий размер подгружаемых файлов - процент сразу проскакивает на 100 и размер всегда 14 к
Люди, подскажите почему проценты неправильно отображаются.
Да там грузить практически нечего...
julie525
30.01.2008, 14:28
Грузить есть чего. Грузятся фотки, причем прелоадер проскакивает почти сразу на 100, а потом еще некоторое время крутится. Если фотки так быстро загружаются, то и отображаться должны сразу. И почему прелоадер неправильно общий размер вычисляет (14 к) - как будто одну фотографию грузит, а не несколько.
В файле в аттаче прелоадер никак не связан с фотками =/ Он показывает загрузку основной флешки, ну а она и весит где-то около 10К...
julie525
30.01.2008, 15:37
а как прелоадер привязать к фоткам
объясните, плиз, а то так происходит в любом прелоадере.
http://livedocs.adobe.com/flash/9.0/main/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Parts&file=00001993.html
Вот, почитайте тут, или во Flash IDE наберите MovieClipLoader, выделите и нажмите F1
julie525
01.02.2008, 12:01
Проблема по-прежнему не решается. Я использую
for (var i = 0; i<galleryLength; i++) {
var thisMC:MovieClip = this.createEmptyMovieClip("image"+i+"_mc", i+1);
mcLoader_mcl.loadClip(gallery_array[i].src, thisMC);}
но
mclListener.onLoadProgress = function(target_mc, loadedBytes, totalBytes) {
var pctLoaded:Number = Math.round(loadedBytes/totalBytes*100);
};
показывает процент загрузки для каждого файла в отдельности, а как узнать общий процент загрузки для всех файлов.
Народ, ну может кто-нибудь знает как по-проще считать общий процент
никак, так как надо знать общий вес файлов
Ну, я не знаю... я бы составил спсик всех файлов, которые нужно загрузить, оформил его в ХМЛ, в ХМЛе же записал размер каждого файла. Дальше, загрузил бы сначала ХМЛ, посчитал общий размер и из этого исходил уже.
julie525 получает плюс за систематический мультипостинг.
julie525
01.02.2008, 15:47
вот и не думала, что прелоадер для нескольких файлов настолько сложен. Странно, что флеш неприспособлен для такой задачи.
julie525
01.02.2008, 16:18
ну как я думала - запускаешь загрузку файлов, ставишь прелоадер и нет проблем.
Жизнь прекрасна? :)
Для создания общего прелоадера флеш должен знать общий размер файлов. Для этого он должен получит первоначальный ответ на запрос к серверу, без этого не куда. Но все запросы проходят через браузер, которые регулирует число одновременных потоков загрузки. И таких потоков может быть у каждого браузеру разное. Я вот знаю про IE, у него их два. То есть, когда вы собираетесь загрузить 40 картинок и делаете одновременный запрос ко всем, с надеждой подсчитать общий размер, на самом дела к серверу уходит только два запроса и пока вы не получите первых две картинки, остальные запросы будут стоять в очереди.
julie525
04.02.2008, 16:43
Общий размер файлов я передаю из php через переменные. Через
mclListener.onLoadProgress = function(target_mc, loadedBytes, totalBytes)
считаю процент, во флеше все работает нормально, но в IE откуда-то появляется еще 300 K, а в opera - 400 K. Т.е. если размер общий загружаемых файлов 1.1 М, то грузится - 1.4 - 1.6 М. Не понимаю как тогда считать размер загружаемых файлов.
julie525
04.02.2008, 17:57
var btTotal:Number = _root.fs; //общий размер
gallery_xml.onLoad = function(success:Boolean) {
try {
if (success) {
var gallery_array:Array = new Array();
for (var i = 0; i<=_root.pictures.length; i++) {
if(i==0)
{
gallery_array.push(path_album+"albums/"+album+"/"+_root.first_photo);
}
else
{
gallery_array.push(path_album+"albums/"+album+"/flash/"+_root.first_photo+"/"+_root.pictures[i-1]);
}
}
/* call the displayGallery function which handles loading in each
of the gallery images and placing them on the Stage. */
displayGallery(gallery_array);
} else {
throw new Error("Unable to parse XML");
}
} catch (e_err:Error) {
trace(e_err.message);
} finally {
delete this;
}
};
// load the gallery.xml file from the current directory.
gallery_xml.load("gallery_tween.xml");
/* create a function which loops through the images in an array,
and creates new movie clips on the Stage. */
function displayGallery(gallery_array:Array) {
var galleryLength:Number = gallery_array.length;
// loop through each of the images in the gallery_array.
for (var i = 0; i<galleryLength; i++) {
/* create a movie clip instance which holds the image. We'll also set a variable,
thisMC, which is an alias to the movie clip instance. */
var thisMC:MovieClip = this.createEmptyMovieClip("image"+i+"_mc", i+1);
/* load the current image source into the new movie clip instance,
using the MovieClipLoader class. */
mcLoader_mcl.loadClip(gallery_array[i], thisMC);
}
}
// define the MovieClipLoader instance and MovieClipLoader listener Object.
var mcLoader_mcl:MovieClipLoader = new MovieClipLoader();
var mclListener:Object = new Object();
mclListener.onLoadStart = function(target_mc:MovieClip) {
};
// while the content is preloading, modify the width of the progress bar.
mclListener.onLoadProgress = function(target_mc, loadedBytes, totalBytes) {
var pctLoaded:Number = Math.round(loadedBytes/totalBytes*100);
if(pctLoaded < 100)
{
varPercent = (_root.btLoaded + loadedBytes)/(_root.btTotal)*100;
}
else
{
varPercent = (_root.btLoaded + totalBytes)/(_root.btTotal)*100;
_root.btLoaded += totalBytes;
}
//trace("Процент загрузки в "+target_mc+" составляет "+varPercent+"%");
//Показываем процент загрузки в текстовых полях
anim_num.num_pr.text = Math.round(varPercent) + "%";
anim_num.num_kb.text = Math.round(_root.btLoaded) + " of " + Math.round((_root.btTotal))+" "+_root.bTotal + " kb";
};
Кто-нубуть проверял этот скрипт в действии? Потому что мне кажется, что
в представленом коде функция displayGallery() использует один загрузчик "mcLoader_mcl" для всех картинок одновременно.
julie525
04.02.2008, 18:51
картинки грузятся нормально, вот только непонятно откуда берется еще 300-400 к, а то как-то непонятно, когда прелоадер показывает, что загружено 137 или 154%. Причем так происходит только в броузере, во флеше ничего лишнего не грузится.
Эсли учесть слова iNilsа про потоки загрузки, то интересно, получится ли такой вариант:
Считать все ссылки на картинки в переменную-массив (например linksArray).
Начать загрузку первой картинки через mcLoader_mcl, а когда наступит событие onLoadStart, считать значение picture.getBytesTotal() и доплюсовать его к переменной в которой хранится общий размер файлов (_root.total) , а потом оборвать загрузку с помощью unloadClip, и начать загрузку следущей картинки через тот же mcLoader_mcl и т. д., пока не считаются все размера файлов.
После таких операций в переменной _root.total должен находится размер всех картинок. И можно приступать к нормальной загрузке картинок...
Не слишком ли глупая идея? Хотелось бы узнать мнение опытных флешеров.
Здравствуйте всем. Кто-нибудь может мне написать код на preloading для flash 8, где шла бы процентная загрузка, а потом переход на следущий кадр.
Зарание спасибо.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.