Форум 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)
-   -   loadMovie как прелоудер для swf (http://www.flasher.ru/forum/showthread.php?t=133086)

MANN 26.11.2009 21:27

loadMovie как прелоудер для swf
 
я сделал проэкт во флеш и остался прелоудер, я сделал дополнительный swf, который подгружает главный (так как у меня атачятся мувики я не могу встроить прелоудер в основной проэкт)
в дополнительном прелоудере всего один mc (loading) и такой код :
Код:

_root.loading.onEnterFrame=function() {
_root.loadMovie("main.swf");
l=_root.getBytesLoaded();
t=_root.getBytesTotal();
this.txt = Math.floor(100*l/t)+"%";
}

оно все равно загружает с 60%
почему?

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

amexdesign 26.11.2009 22:04

Цитата:

так как у меня атачятся мувики я не могу встроить прелоудер в основной проэкт
почему же нет? вставте все аттачи в отдельную функцию и запускайте её по заключению загрузкирута основного фильма

MANN 26.11.2009 22:39

export in first frame отмечено, тогда прелоудер загрузится после мувиков и будет пустой экран а потом сразу с 40% начнет
если не отметить, то тогда они вобще не будут атачится

должено же быть какоето простое решение

amexdesign 27.11.2009 01:30

1. создаёшь в swf с прелоудером пустой мувик как контейнер, в который загружается твой основной проект. вот это:
Код AS1/AS2:

_root.loadMovie("main.swf")

работать не будет, так как loadMovie работает только с целевым объектом.
2.а теперь AS:
Код AS1/AS2:

loadMovie("main.swf", container);// container - это мувик на сцене
this.onEnterFrame=function() {
  var l = container.getBytesLoaded();
  var t = container.getBytesTotal();
  if(l == t){
      // здесь функция, выполняемая по завершению загрузки, например
      this.txt._visible = 0;
  }else{
      this.txt.text = Math.floor(100*l/t)+"%";
  }
}


MANN 27.11.2009 02:53

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

DarkChris 27.11.2009 13:06

поставь галочку Generate size report при паблише и посмотри результат что у тебя там в первом фрэйме грузится. Там сразу станет все понятно :)

jony_e 27.11.2009 17:19

а почему нельзя воспользоваться прослушивателем
Код AS1/AS2:

var mcLoader:MovieClipLoader = new MovieClipLoader();
var listener:Object = new Object();
mcLoader.addListener(listener);
listener.onLoadProgress = function(target:MovieClip, bytesLoaded:Number, bytesTotal:Number):Void {
          total = bytesTotal;
        loaded = bytesLoaded;
        percent = int ((loaded / total) * 100); //можно присвоить текстовому полю и будут показываться проценты загрузки
        if(total==loaded){
                //тут будет всё выполняться, когда мувик загрузится
        }
}
 
mcLoader.loadClip("main.swf", container);//вместо container указать мувиклип куда будет грузится main.swf

вот что-то вроде этого :)

DarkChris 27.11.2009 17:24

хмм. а оно работать будет ?:)
слушатель вешается на mcLoader. что бы это заработало мне кажется нужно вместо:
Код AS1/AS2:

loadMovie("main.swf", container);

сделать так
Код AS1/AS2:

mcLoader.loadClip("main.swf",container);


jony_e 27.11.2009 17:31

верно, просто не то поле скопировал :)
поправил код...

MANN 27.11.2009 19:57

когда локрут = тру то все в теории должно быть норм, но оно как то по китайски грузит и всегда не до 100%, пару муви клипов не будут загружены
ldr = контейнер
Код:

_root.ldr._lockroot = true;
var mcLoader:MovieClipLoader = new MovieClipLoader();
var listener:Object = {}
mcLoader.addListener(listener);
mcLoader.loadClip("main.swf",ldr);
listener.onLoadProgress = function(target:MovieClip, bytesLoaded:Number, bytesTotal:Number)  {
        _root.loading.txt = Math.floor((bytesLoaded/bytesTotal)*100)+"%";
};

listener.onLoadComplete = function() {
        mcLoader.removeListener(listener);
       
       
};

убрал галочку с Export in First Frame и загрузил все атачеемые мс в кадр между лоудером и проэктом, но мне не хотелось этого делать


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

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