Просмотр полной версии : MovieClipLoader - проблема
у меня проблема
есть karta.swf = 200 Кб
чтобы сделать к нему предзагрузчик я использую MovieClipLoader
// Создаем объект MovieClipLoader
var mcl:MovieClipLoader = new MovieClipLoader();
// Создаем объект-приемник
var mclListener:Object = new Object();
// Регистрируем mclListener на получение сообщений от mcl
mcl.addListener(mclListener);
// Начальный масштаб полосы состояния загрузки
preloader.statusBar._xscale = 1;
// инициируем загрузку документа в клип holder
mcl.loadClip("karta.swf", 1);
mclListener.onLoadStart = function(target) {
target.onEnterFrame = function() {
// Локальный объект с информацией о состоянии загрузки
var progress:Object = mcl.getProgress(this);
var loadStatus:Number = Math.round(progress.bytesLoaded / progress.bytesTotal * 100);
// Если информация о загруженном объеме поступила...
if (progress.bytesLoaded) {
// Изменяем ширину полосы состояния
this._parent.preloader.statusBar._xscale = loadStatus;
// Выводим процент загрузки
this._parent.preloader.statusTxt.text = loadStatus + "%";
// Выводим данные о загрузке
this._parent.preloader.infoTxt.text = "Загружено " + Math.round(progress.bytesLoaded / 1024) + "Кб из " + Math.round(progress.bytesTotal / 1024);
}
// Если загрузка окончена...
if (loadStatus == 100) {
// Выгружаем содержимое предзагрузчика и заканчиваем его работу
mcl.unloadClip(preloader);
delete this.onEnterFrame;
}
};
};
проценты не идут, а карта подгружается
наверно ошибка в этой строчке:
mcl.loadClip("karta.swf", 1);
используй событие onProgress класса MovieClipLoader
используй событие onProgress класса MovieClipLoader
СПАСИБО!!!
только ты описался: onProgress --> onLoadProgress
Если кому интересно, то вот исходник:
// Создаем объект MovieClipLoader
var mcl:MovieClipLoader = new MovieClipLoader();
// Создаем объект-приемник
var mclListener:Object = new Object();
// Регистрируем mclListener на получение сообщений от mcl
mcl.addListener(mclListener);
// Начальный масштаб полосы состояния загрузки
preloader.statusBar._xscale = 1;
// инициируем загрузку документа в клип holder
mcl.loadClip("karta75.swf", 1);
mclListener.onLoadProgress = function(target, loadedBytes, totalBytes) {
var loadStatus:Number = Math.round(loadedBytes / totalBytes * 100);
preloader.statusBar._xscale = loadStatus;
preloader.statusTxt.text = loadStatus + "%";
preloader.infoTxt.text = "Загружено " + Math.round(loadedBytes / 1024) + "Кб из " + Math.round(totalBytes / 1024);
// Если загрузка окончена...
if (loadStatus == 100) {
// Выгружаем содержимое предзагрузчика и заканчиваем его работу
mcl.unloadClip(preloader);
delete this.onEnterFrame;
}
};
Странно, но у меня мувик загружаемый весит 210 Кб а написано 400 ??
Извиняй, забыл, а насчет размера, это потому что ты используешь сжатие
Опсь! Nirth в догонку ответь пожалуйста. Почему у меня эта штука не пашет?
var my_mcl:MovieClipLoader=new MovieClipLoader();
var mcl_list=new Object();
my_mcl.addListener(mcl_list);
//Сорри. Забыл вставить сюда это для полноты. Но в исходнике то эти объявления имеются.
mcl_list.onLoadStart=function(mc){
loader.txt="Загрузка "+imgCurrent+" кадра";
loader.bar._xscale=0;
loader.procent='0 %';
var lp=my_mcl.getProgress(mc);
trace('LoadStart\t'+mc+'\n*********');
trace('Bytes Total='+lp.bytesTotal+'\tBytes Loaded='+lp.bytesLoaded);
mcl_timer=setInterval(mcl_tracer,50,mc);// Приходится извращаться с тимером
}
//"onLoadStart" Трейсится, но все по 0. Хотя в доках вроде сказано, что уже отсюда можно получить размер файла и первой порции загрузки
mcl_list.onLoadProgress=function(mc, loadedBytes, totalBytes){//Do not working!
var lp=my_mcl.getProgress(mc);
trace('LoadProgress\nTotal='+totalBytes+'\tLoaded='+loadedBytes);
}
//А вот этого трейса у меня нету! :( ПОЧЕМУ????
mcl_list.onLoadInit=function(mc){
var lp=my_mcl.getProgress(mc);
loader.bar._xscale=150;
loader.procent='100 %';
//trace('LoadInit'+mc+'\nTotal='+lp.bytesTotal+'\tLoaded='+lp.bytesLoaded);
clearInterval(mcl_timer);
//create();
}
//onLoadInit трейсится нормально
function mcl_tracer(mc,lp){
var lp=my_mcl.getProgress(mc);
//trace('\t\tBytes\nTotal='+lp.bytesTotal+'\tLoaded='+lp.bytesLoaded);
loader.bar._xscale=(lp.bytesLoaded/lp.bytesTotal)*150;
loader.procent=Math.floor((lp.bytesLoaded/lp.bytesTotal)*100)+' %';
updateAfterEvent();
}
Не пойму: чего не так сделал? Почему не отрабатывает "onLoadProgress"?
onLoadProgress в 7-ке вроде не работает.
onLoadProgress в 7-ке вроде не работает.
Ну! :mad: И че это за класс такой? Половина работает, половина нет?
Ну! :mad: И че это за класс такой? Половина работает, половина нет?
Классами нужно ещё и пользоваться уметь ...
этот класс был добавлен в 7 и полностью работоспособен.
Классами нужно ещё и пользоваться уметь ...
Согласен! Информации маловато. Объясни пожалуйста, в чем тут проблема? Код то, по сути, из хелпа взят. Таймер нормально работает, а "родной" метод даж не трейсится, стало быть - не вызывается?
у меня все трейсится
loadListener = new Object();
loadListener.onLoadComplete = function(target_mc, httpStatus) {
trace(">> loadListener.onLoadComplete()");
};
loadListener.onLoadProgress = function(){
trace("test");
}
mcl = new MovieClipLoader();
mcl.addListener(loadListener);
mc = _root.createEmptyMovieClip("mc",1)
mcl.loadClip("1.swf", mc)
публикую в семерке
Открываем хелп и видим: onLoadProgress при локальном тестировании не работает.
2 Король Спасибо. А у меня тож для 7, но не пашет...???... Бред какой-то... Щас, из принципу, ваш код воткну в кадр и гляну.
2 Kuzen Возможно вас насторожило отсутствие обьявления переменных класса и слушателя? Дико извиняюсь, отредактировал! Просто, в исходнике, они были обьявлены довольно далеко от обработчика и я, честно говоря, забыл их закопи-пэйстить сюда. Ну и картинку гружу так:"my_mcl.loadClip(img,mc);"
Открываем хелп и видим: onLoadProgress при локальном тестировании не работает.
:eek: Ёпрст!А ведь точно! Проглядел. Спасибо всем! Жаль, что эта штука на симуляторе не работает.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.