Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   preloader и MovieClipLoader (http://www.flasher.ru/forum/showthread.php?t=113820)

solo19770701 10.07.2008 08:35

preloader и MovieClipLoader
 
Всем доброго времени суток. Может кто поможет советом. Есть основная врем. линейка куда посредством MovieClipLoader в различные клипы, последовательно загружаю 4 кактинки. Пример
Код:

var mclListener:Object = new Object();
var image_mcl:MovieClipLoader = new MovieClipLoader();
mclListener.onLoadComplete = function(target_mc:MovieClip)
{
        mclListener.onLoadComplete = function(target_mc:MovieClip)
        {
                mclListener.onLoadComplete = function(target_mc:MovieClip)
                {
                        slideClip04.loadMovie("slideShowPic/image4.jpg");
                        //image_mcl.removeListener(mclListener); это так на всякий случай
                        gotoAndPlay("start");
                };
                image_mcl.loadClip("slideShowPic/image3.jpg",slideClip03);
        };
        image_mcl.loadClip("slideShowPic/image2.jpg",slideClip02);
};

image_mcl.loadClip("slideShowPic/image1.jpg",slideClip01);

image_mcl.addListener(mclListener);

Потом ставлю прелоадер. Пример
Код:

frame 2
if (_root.getBytesLoaded () == _root.getBytesTotal ()) {
        percents = percents + 5.0;
        if (percents > 100.0) {
                percents = 100.0;
        }
} else {
        percents = Math.floor (_root.getBytesLoaded () / _root.getBytesTotal () * 100.0);
}
label = percents;

frame 3
if (percents < 100.0) {
        gotoAndPlay (2);
} else {
        _visible = false;
        _root.gotoAndPlay ("start");
        stop ();
}

и дело в том, что прелоадер не видит MovieClipLoader, и после загрузки всего мувика показывает пустые клипы, в то время как MovieClipLoader подгружает картинки. В конечном счете, со времененм, все картинки появляются но идея заключается в то, что бы сначала все картинки загрузились, а потом уже пошле проигрывание фильма. При этом мне нужно отображать процент загрузки фильма. Так вот вопрос. Как связать прелоадер с MovieClipLoader, так что бы прелоадер видел и отображал процент загрузки не только основной временной линейки ну и того что в нее загружается?:confused:

Infectedcell 10.07.2008 10:31

Что?????

Я бы объяснил, но не могу понять того, что Вы написали... бардак.
- Грузите основной мувик, потом картинки, в чем проблема то?
- Зачем вообще в мувиклиплоадер писать - лоадмуви? Вы сами себе противоречите...
- где вы взяли эти примеры?
- если вы обращаетесь к байтслоадед и байтстотал... зачем какие то +5... что за бред, с ними и работайте.

Код:

/*
  Разобьем на 2 кадра весь наш процесс, хотя это неправильн. ИМХО!
  В данном случае придется корректировать LinkageID у всех объектов подтягиваемых на сцену из библиотеки.
  Т.е. не грузить их в  первый кадр, как минимум, чтобы у первого кадра весь был нолевой...
  кадр 1
/*/
stop();
this.onEnterFrame=function() {
  var percentage:Number = Math.round((_root.getBytesLoaded()/_root.getBytesTotal())*100)
  outputText.text = percentage+'%';
  if (persentage==100){
      delete this.onEnterFrame;
      gotoAndStop(2)
  }
}
/*
  рисуем в кадре 2 (больше кадров у нас воообще не будет)
  В принципе можно и нужно использовать пример, приведенный ниже как функцию, чтобы потом, если что вызывать,
  когда понадобится.
  В данном конкретном случае я этого делать не стал, просто закомментив строки, для наглядности...
/*/
stop();
//function loadContent() {
  var mcl:Object = new Object();
  var mclL:MovieCLipLoader = new MovieClipLoader();
  mclL.onLoad=function(target,loaded,total){
      outPutText.text = 'Заргузка изображения'+Math.round((loaded/total)*100)+'%'
  }
  mclL.onLoadComplete=function() {
      //действие при окончании загрузки
  }
  mclL.load(url, holder)
  mcl.addListener(mclL);
//}

Вообще, нарисованый выше пример считаю не правильным, поскольку всегд разделаю проект на 2 клипа, немного поправив, можно легко распилить вариант выше на два отдельных ролика, которые будут взаимодействовать друг с другом, а именно:
1 клип. Загрузчик. В нем содержатся осн. параметры проекта, загрузчик основного клипа в контейнер, которым является в свою очередь сам мувик. Все!
2 клип. Сам проект. Содержит в себе собственно все, что я хочу показать конечному пользователю...

Удачи.

AlexDesinger 10.07.2008 19:00

в событии onLoadStart создавайте предзагрузчик, в событии onLoadProgress считайте загруженные проценты, в событии onLoadComplete удаляйте что хотите, в событии onLoadInit можно делать все с пдгруженными клипами...

solo19770701 10.07.2008 20:02

to Infectedcell: хай. Спасибо за ответ. То что код написан через ж.... это понятно, в целях экономии времени просто копирую из прошлых работ и модифицирую так что бы работал. За это мои извинения. То что ты показал, с внешним прелоадером, это понятно. Но мой вопрос заключался в другом. Неважно, если прелоадер внешний или внутренний, вопрос в том, что бы прелоадер видел то что загружается из вне в клипы, которые встроены в сцену. Дело в том, что он видит клипы, грузит их, но не считает время которое нужно на загрузку содержимого в эти клипы.
to AlexDesinger: хай. то что ты говоришь, ближе к истине. Я и сам об этом думал
Код:

myListener.onLoadProgress = function(target_mc:MovieClip, bytesLoaded:Number, bytesTotal:Number)
{
        var percentDone:Number = bytesLoaded / bytesTotal * 100;
        showProgress(percentDone, progressMovie)
};
///////
myListener.onLoadComplete = function(target_mc:MovieClip)
{
  var loadProgress:Object = my_mcl.getProgress(target_mc);
  progressMovie._visible = false;
};

myListener.onLoadInit = function(target_mc:MovieClip)
{
        target_mc._alpha = 0;
        fade_dir = true;
        my_interval = setInterval(fade, fade_time);
};

(в этом примере я привел некоторые куски кода) с помощью onLoadProgress я могу следить за процессом загрузки в клипы на сцене, но как все это привязать к загрузке всей сцены? Можно ли создать слушатель для сцены _root и содержимого в клипах _mc как единый прелоадер?

solo19770701 10.07.2008 21:45

Всем доброго времени суток. Решил поделится тем, к чему я на данный момент пришел.
Код:

var mclListener:Object = new Object();

mclListener.onLoadProgress = function(target_mc:MovieClip, bytesLoaded:Number, bytesTotal:Number)
{
        var percentDone:Number = bytesLoaded / bytesTotal * 100;
        progressMovie.percentDoneLabel.text = String(Math.ceil(percentDone))+ " %";
};

var image_mcl:MovieClipLoader = new MovieClipLoader();

mclListener.onLoadComplete = function(target_mc:MovieClip)
{
        mclListener.onLoadComplete = function(target_mc:MovieClip)
        {
                mclListener.onLoadComplete = function(target_mc:MovieClip)
                {
                        slideClip04.loadMovie("slideShowPic/image4.jpg");
                        gotoAndPlay("start");
                };
                image_mcl.loadClip("slideShowPic/image3.jpg",slideClip03);
        };
        image_mcl.loadClip("slideShowPic/image2.jpg",slideClip02);
};
image_mcl.loadClip("slideShowPic/image1.jpg",slideClip01);

image_mcl.addListener(mclListener);

stop();

во втором кадре я запускаю этот код, счетчик показывает прцент загрузки внешнего контента в клипы, но дело в том, что с загрузкой новой картинки, счетчик обнуляется что и понятно. Мой вопрос, может кто подскажет, как показать общий процент загрузки в клипы? Дальше я буду думать как все это приплюсовать к процентам загрузки основной сцены.


Часовой пояс GMT +4, время: 19:22.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.