Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Flash > Preloader стартует с 20%


Автор: Rollband 16.5.2005, 02:41
Preloader главного фильма стартует всегда с 18-20%, а не с 1% как должно быть.
Перепробовал разные загрузщики. Результат тот же.
Может кто знает в чём дело?

Автор: AntonioBanderaz 16.5.2005, 03:02
да так, он же у Тебя сам тоже подгружается... Вот Тебе твои 18-20%... =)))
Добавлено @ 03:04
Если хочешь с нуля - создай обёртку, для главного фильма или прелоадер сделай легче... =)))

Автор: Rollband 16.5.2005, 13:51
Да он и так легче некуда, балка процентная и всё.
И 20% от 300 кб он занимать не может.
Как лучше: ставить прелоадер на фильм в отдельную сцену, или в первый кадр сцены?

Автор: AlDev 16.5.2005, 14:15
Вообще imho - сделать один preloader в отдельной swf и везде его юзать.
Покажи код, как ты его объявляешь?
Про сцены: Flash-player не воспринимает сцену, как таковую, а считает всё фреймами, так-что разници никакой.

Автор: Jlekc 16.5.2005, 17:31
есе поставил в первый кадр, то вынеси из первого кадра все остальное
есе юзаеш компоненты то они по Дефолку загружают себя в первый кадр, и у тя проблемы. Тада нуна делать внешний файл с прилоадером, и грузить твой основной фильм

Автор: Rollband 16.5.2005, 18:17
Jlekc
Разумеется, в первом кадре ничиго не стоит. Со второго идёт фильм.
Что заметил: если на второй кадр кладу фотку с мегабайт, то счетает с одного процента, если кладу фотку на 15 кб, то считает с 10%; и так далее....

вот код: Только там всё чисто. Прелоадер готовый был.

Цитата

onClipEvent (load) {
gesamt = _root.getBytesTotal();
}
onClipEvent (enterFrame) {
bereits = _root.getBytesLoaded();
prozent = bereits*100/gesamt;
mc_balken._width = prozent*2;
prozent = int(prozent)+" %";
if (prozent == "100 %") {
  i++;
  if (i > 30) {
  _root.play ();
  }
}
}


Родных компонентов из общей библиотеки не используется. Можешь ещё раз обьяснить:
Цитата
есе юзаеш компоненты то они по Дефолку загружают себя в первый кадр
????

Alex Batsuev
если делать отдельным .swf, то как он узнает когда загрузился главный фильм?

Автор: Rollband 17.5.2005, 00:45
AntonioBanderaz
Jlekc
Alex Batsuev

Всем большое спасибо!
Разобрался, сделал отдельный preloader.swf




Автор: AlDev 17.5.2005, 12:45
Незачто, но:
Хоть ты и разобрался, однако imho если ты всё-таки всё сделал в отдельном файле, то используй такой замечательный класс, как MovieClipLoader.
И сделай так, чтобы просто передавать swf-файлу с прелоадером адрес загружаемого файла. Потом проще жить будет, если куда-то ещё надо будет использовать прелоадер.

Автор: Rollband 17.5.2005, 19:33
Привет!
Чтобы использовать загрузчик как отдельный .swf, сделал три файла: первый - куда грузятся загрузчик и фильм, второй сам загрузчик, и третий - главный фильм. В первом создал так называемые "container"; один для прелодера, другой для основного фильма:
Вот первый кадр:
Код

_root.createEmptyMovieClip("mccontainer5", 5);
_root["mccontainer5"]._x=0;
_root["mccontainer5"]._y=0;

_root.createEmptyMovieClip("loadercontainer", 10);
_root["loadercontainer"]._x=0;
_root["loadercontainer"]._y=0;

Это второй кадр:
Код

//_root.loadercontainer.gotoAndStop(2);
_root.loadercontainer.loadMovie("preloader.swf");
_root.mccontainer5.loadMovie("start.swf");

и третий:
Код

stop();

Главный start.swf теперь 1кб, т.к. грузится в "mccontainer5" другого файла.
В главном фильме исправил кнопки из мувиков вместо _root.gotoAndPlay("bla-bla") - на _root.mccontainer5.gotoAndPlay("bla-bla") - работает. Загрузчик теперь счетает чисто с 0%, это радует. Зато фотоальбом заглючил. СИЛ НЕТ ! ! ! Фотоальбом - одна из сцен главного фильма. Захожу в альбом без проблем, а обратно - глюк. Кнопка лежит на арене (не а клипе) и перейти надо тоже просто в другую сцену этого же фильма.
Код

on (release) {
 gotoAndStop("arbeitsproben", "menuVektor");
} 

И альбом виден, и одновременно страница на которую возвращаюсь, короче "два в одном" smile) Накладка. Думал, путь не правильно указываю. Всё перепробовал. Ради экспиремента, стёр скрипт управляющий альбомом, и всё заработало. Значит, что-то в скрипте. Но он мне не по зубам пока. Я вообще, до того как на этот форум пришёл только и знал, что "gotoAndPlay" smile)
Вообщем, чем дальше лезу в скрипт, тем больше проблем.
Вот код альбома:
Код

stop ();
// Spalten und Reihen
pS = 1;
pR = 5;
// Limit
max = pS * pR;
// Zweidimensionales Array erzeugen
function setArray (pT)
{
 spielLevel = new Array ();
 for (var m = 0; m < pR; m++)
 {
  spielLevel[m] = [];
  for (var n = 0; n < pS; n++)
  {
   spielLevel[m].push (alleBilder[pT++]);
  }
 }
 tabelle (10, 10, 60, 60);
}
// Movieclips setzen
function tabelle (posX, posY, pB, pW)
{
 for (i in this.mc_bild)
 {
  if (typeof (this.mc_bild[i]) == "movieclip")
  {
   this.mc_bild[i].removeMovieClip ();
  }
 }
 tiefe = 0;
 for (var i = 0; i < spielLevel[0].length; i++)
 {
  for (var j = 0; j < spielLevel.length; j++)
  {
   nName = "block_" + i + "_" + j;
   this.mc_bild.attachMovie ("contclip", nName, tiefe++);
   this.mc_bild[nName].nummer = i;
   this.mc_bild[nName].bildname = "daten/" + spielLevel[j][i];
   this.mc_bild[nName]._x = posX + pB * i * 1.2;
   this.mc_bild[nName]._y = posY + pW * j * 1.2;
   this.mc_bild[nName].onRelease = function ()
   {
    this._parent._parent.createEmptyMovieClip ("inhalt", 10000);
    this._parent._parent.inhalt.attachMovie ("grosscontclip", "grossclip", 1);
    this._parent._parent.inhalt.grossclip.bildname = this.bildname;
    this._parent._parent.inhalt.grossclip._x = 90;
    this._parent._parent.inhalt.grossclip._y = 10;
    this._parent._parent.inhalt.grossclip.leiste_mc.onPress = function ()
    {
     this._parent.startDrag ();
    };
    this._parent._parent.inhalt.grossclip.leiste_mc.onRelease = this._parent._parent.inhalt.grossclip.leiste_mc.onReleaseOutside = function ()
    {
     this._parent.stopDrag ();
    };
    this._parent._parent.inhalt.grossclip.leiste_mc.onMouseMove = function ()
    {
     updateAfterEvent ();
    };
   };
  }
 }
}

var seite:Number = 0;

// Schaltflächen
w_btn.onRelease = function ()
{
 if (seite < alleBilder.length - max)
 {
  seite += max;
  setArray (seite);
 }
};
z_btn.onRelease = function ()
{
 if (seite > 0)
 {
  seite -= max;
  setArray (seite);
 }
};
// Starten
loadVariables ("bilder.txt", this);
this.onData = function ()
{
 alleBilder = new Array ();
 alleBilder = bildnamen.split (",");
 createEmptyMovieClip ("mc_bild", 1);
 setArray (0);
};

Что нужно в нём изменить, чтобы при переходе к другому фрейму альбом исчезал, и не был виден поверх другой сцены? Может кто знает?
Только пожалуйста не пишите на слэнге.

Автор: Rollband 17.5.2005, 23:22
Alex Batsuev
Можешь скинуть на мыло исходник, пример, того, что ты предлагаешь?

Автор: AntonioBanderaz 18.5.2005, 01:39
Rollband Я тут подумал, можно ведь сделать чтобы повторно не грузилась swf...
Код

//проверяешь подгружен ли клип
if(название_клипа.getDepth() == undefinrd) {
      //клип не подгружен
      //ставишь код для подгрузки
} else {
     название_клипа.gotoAndPlay('твоя метка');
     название_клипа._visible = true;
}

А чтобы она у тебя не светилась в других местах делай визибле = false;
Или конечноможешь делать removeMovieClip();, но тогда тебе заново придётся грузить swf...


Автор: Jlekc 18.5.2005, 12:05
Цитата(AntonioBanderaz @ 18.5.2005, 01:39)
но тогда тебе заново придётся грузить swf

из кеша

Автор: Rollband 18.5.2005, 13:01
AntonioBanderaz
Куда это ставить? В код альбома?

Автор: AlDev 18.5.2005, 14:49
Цитата(Rollband @ 18.5.2005, 04:22)
Alex Batsuev
Можешь скинуть на мыло исходник, пример, того, что ты предлагаешь?


А чего скидывать-то?
Прочитай help про класс MovieClipLoader... и используй его.
Адрес подгружаемого файла передавай через get или через flashvars....
усё собственно

Автор: AntonioBanderaz 18.5.2005, 23:41
Цитата(Jlekc @ 18.5.2005, 12:05)
из кеша
- смотря какой браузер =) Если IE, то из кеша, а если какая-нид Opera или Netscape или Mozilla...

Добавлено @ 23:48
Цитата(Rollband @ 18.5.2005, 13:01)
Куда это ставить? В код альбома?
В код подгрузки, там где Ты свой альбом хочешь загрузить, сделай проверку, вместо имени клипа укажи имя куда Ты грузишь свою альбом...
А чтобы не светился - на кнопке перехода добавь если это в самом альбоме - _parent._visible = false; к примеру, смотря как глубоко у тя кнопка зарыта, если в главном, то клипу в котором хранится сам альбом задать _visible = false;

Автор: AlDev 19.5.2005, 13:10
Цитата(AntonioBanderaz @ 19.5.2005, 04:41)
- смотря какой браузер =) Если IE, то из кеша, а если какая-нид Opera или Netscape или Mozilla...

В Mozilla всё путём. Сам Firefox юзаю и ничего. Флэшки грузяться не из кэша только в опере. И то вроде в послежних версиях они начали в эту сторону двигаться и упрощать жизнь Flasher-ам. Например сделали возможность поддержки прозрачных Flash-ек. А про кэш не знаю... может быть и сделано что-то.... но вроде как ничего не изменилось.

Автор: Rollband 19.5.2005, 20:34
Всё. На свой сайт больше времени не будет. Нашёл работу.
Если руки дойдут на выходных попробую. Большоё спасибо.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)