PDA

Просмотр полной версии : Помогите с прелоадером


Melgod
29.08.2002, 00:43
Проблема такая: нужно сделать прелоадер.
Он состоит из пяти кадров, в каждом из которых вставлен мувик.
Идея в том, чтобы как только фильм начал грузиться играл мувик первого кадра, затем при наборе 20% объема - мувик второго кадра и т.д. до 100% на пятом кадре, при наборе которых начинет крутиться сам фильм, начиная с 6 кадра.
В каждом кадре я добавлял скрипт к мувику этого кадра (правой по мувику и т.д.).
Но в результате получилось, что при загрузке фильма кадры сразу пробегают от 1 до 5, затем ждет до 100% (при этом мувик 5-го кадра не играет, вообще говоря не один из 5 мувиков не играет при остановке на соответствующем кадре) и продолжает играть.
Ниже приведены скрипты всех 5 кадров(мувиков). Подскажите, пожалуйста, в чем ошибка?
//------- Кадр #1 --------------//
onClipEvent (load)
{
tot =getBytesTotal();
}
onClipEvent (enterFrame)
{
loaded = getBytesLoaded();
percent = loaded/tot*100;
if(loaded==tot) { gotoAndPlay(6); }
if(percent>=20) { gotoAndPlay(2); }
}
//------ Кадр #2 ------------//
onClipEvent (load)
{
tot =getBytesTotal();
}
onClipEvent (enterFrame)
{
loaded = getBytesLoaded();
percent = loaded/tot*100;
if(percent>=40) { gotoAndPlay(3); }
}
//------- ... и так далее--------------//
//--------Кадр #5-----------//
onClipEvent (load)
{
tot =getBytesTotal();
}
onClipEvent (enterFrame)
{
loaded = getBytesLoaded();
percent = loaded/tot*100;
if(loaded==tot) { gotoAndPlay(6); }
}
//-----------end---------//

Iv
29.08.2002, 01:57
1. расставь стопы в каждом кадре.
onClipEvent (load)
{
tot =_root.getBytesTotal();
}
onClipEvent (enterFrame)
{
loaded = _root.getBytesLoaded();
percent = loaded/tot*100;
if(loaded==tot) { this._parent.gotoAndPlay(6); }
if(percent>=20) { this._parent.gotoAndStop(2); }
else{this._parent.stop(); }
}

- примерно в таком духе

JeeP
29.08.2002, 13:32
Ошибка в неправильном подходе :)

Во первых: onClipEvent потому и называется КлипИвент что ставится на клип а не в кадр!!!
Поставил ты правильно, назвал криво!

Далее: не страдай ф#%ней, создай пустой мувик "лоадер" и положи его, скажем, слоем выше чем твои пять кадров в нижнем слое. "Лоадер" длится с 1 по 5 кадр и свой код

onClipEvent (load)
{
tot =_root.getBytesTotal();
}
onClipEvent (enterFrame)
{
loaded = _root.getBytesLoaded();
percent = loaded/tot*100;
if(loaded==tot) { _root.gotoAndPlay(6); }
if(percent>=20) {_root.gotoAndStop(2); }
}

вешаешь именно на один мув, который управляет переходами по кадрам. Только условия перехода на следующий кадр, сам понимаешь, надо прописать по другому
например:
if (percent>20 && percent<=40) {_root.gotoAndStop(2);}
else if (percent>40 && percent<=60) {_root.gotoAndStop(3);}
... и т.д.


стоп действительно поставь хотябы в первом кадре!

а то что мувики не играют, так может внутри их стоп стоит, вот и ждут они тебя! :p

Melgod
31.08.2002, 23:13
вот что я сделал руководствуясь советами :)
onClipEvent (load) {
tot = _root.getBytesTotal();
}
onClipEvent (enterFrame) {
tot = _root.getBytesTotal();
loaded = _root.getBytesLoaded();
percent = loaded/tot*100;
if (percent>20) {
_root.gotoAndStop(2);}
else if (percent>40) {
_root.gotoAndStop(3);}
else if (percent>60) {
_root.gotoAndStop(4);}
else if (percent>80) {
_root.gotoAndStop(5);}
else if (loaded==tot) {
_root.gotoAndPlay(6);}
}
однако не фига не работает, а только виснет на 2 кадре, с работающим мувиком.
код разместил на пустом муве в отдельном верхнем слое и продлил на 5 кадров (1-5). все как положено

Iv
31.08.2002, 23:58
положи где-нибудь зипок, потому как оч сложно определить цвет по запаху, а вкус по звуку :D

Melgod
01.09.2002, 15:59
тока вести че-то много

Melgod
01.09.2002, 16:09
там в принципе, смотреть не на что.
обычный линейный фильм.
а что нужно я написал в первом посте.
количество процентов - номер фрейма.

Iv
01.09.2002, 20:22
проблема не втом, что и как ты написал, а где это расположено и т.п.
ошибка может быть где угодно.
телепатов здесь нет, поэтому и просим положить исходник. лучше, если будет попиленый в смысле размеров

JeeP
02.09.2002, 19:21
я ж тебе ясно написал:
if (percent>20 && percent<=40) {_root.gotoAndStop(2);}
else if (percent>40 && percent<=60) {_root.gotoAndStop(3);}...

а ты:
if (percent>20) {_root.gotoAndStop(2);}
else if (percent>40) {_root.gotoAndStop(3);}


разницу замешаешь?

вот из-за такого кода и виснет на 2 КАДРЕ!!! (первое условие выполняется, а дальше ему на все ложить).