PDA

Просмотр полной версии : параллельный прелоад данных разных типов


priroda
30.03.2008, 01:33
Скажите пожалуйста. Я хочу сделать прелоадер на музыку а ниже на данные.
Процес идет паралельно.
Я умею загружать movieClipLoader'ом данные и музыку. Но использовать это одновременно я не знаю как. У меня есть скрипт и копировать его в слой 1 и в 2 для данных и для музыки - идиотизм помоему. пусть так - но ведь не работает так
скажите как сделать не по идиотски
ничего уже не получается

Molecula
30.03.2008, 03:22
Так для музыки у нас есть класс Sound и его методы getBytesLoaded и getBytesTotal - их и используйте.

А данные какого рода Вы подгружаете?

priroda
30.03.2008, 17:09
под днанными я имела ввиду сам флэш(swf) или *.jpg (сейчас не принципиально)


посмотрите пожалуйста.
работает только когда в самом исходнике нажимаешь ctrl+enter два раза.
нужно чтоб музыка заиграла и показалась картинка только тогда когда эти два файла окончательно загрузятся.
я попыталась при ранней загрузке картинки - сделать её прозрачной, а когджа загрузится всё, отобразить её на альфа0. но это кажется какой то урывистый способ(тем более работает при двойном ctrl+enter). подправьте меня пожалуйста
3003.rar

priroda
31.03.2008, 19:43
для меня это очень важно. помогите пожалуйста. всё не так сложно как описано. нужно только исходник посмотреть. а это я думаю многим бы пригодилось. или это уже все умеют?)
а если серьёзно. очень расчитываю на Вас.

архив 3003.rar
PS. iNils простите что создала новое сообщ. Просто новое - оно лучше воспринимается. Может кто-то и откликнется

ra26info
31.03.2008, 22:31
:) http://www.flasher.ru/forum/showpost.php?p=729362&postcount=11

сделать её прозрачной, а когджа загрузится всё
А по этому поводу логика следующая:
1. есть 10 файлов
2. загружаешь по очереди и сразу делаешь невидимым (любым способом)
3. проверяешь если 10-й загрузился - показать все

В том скрипте, что находится по ссылке выше, реализовать это не сложно...

Вот пример )) http://www.26info.ru/studio26/gallery.swf
А тут все идет своим чередом )) http://www.26info.ru/studio26/Content_scroller.swf

priroda
31.03.2008, 23:22
Спасибо что откликнулись. Я посмотрела на код. Но помоему там swf и jpg. а хотелось бы чтоб mp3 и swf/jpg - ведь это совершенно другое помоему). там надо специально как то обращаться к муз. файлу. ну т.е. не как то. как я знаю. а вот как правильно к swf и mp3 не знаю

хотя я думаю если там чтото изменить( совсем чуть-чуть) ) - будет как надо. сейчас попробую

**
не то это всё.
то что вы мне предложили - такой пример даже на форуме есть и ничего там менять даже не надо. меня интересует конкретный вопрос. SWF и MP3 - загрузка поочередно в одном прелоадере(нормальный код). код ненормальный - я выложила.

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

я очень ценю все ваши попытки, и хотела бы чтоб к моим просьбам тоже прислушивались.

ra26info
01.04.2008, 00:15
SWF и MP3 - это разные вещи по сути. Если ты хочешь последовательно грузить такие файлы, то сделай для этого дополнительный прототип, который будет в себя грузить mp3 файл. Т.е. принцип остается, добавляется одно условие if(.mp3){mc.getMp3();}

priroda
01.04.2008, 03:08
ra26info, не утруждайте себя. ваши ответы мне не помогают продвинуться ни на миллиметр

ra26info
01.04.2008, 03:34
да, не все так просто.. ты права.

Molecula
01.04.2008, 04:41
Люди, погугли бы там вдоём лучше и хелп почитали.
Картинки и СФВ грузите через loadClip - всё весно.
iNils, приводил тут скрип - поищите на 2-3 странице раньше.
А звук мы не грузим через MovieClipLoader.
А грузим где-то так:
import mx.utils.Delegate;
var s:Sound = new Sound(this);
var s_url:String = '1.mp3';
var s_streaming:Boolean = true;
s.onLoad = Delegate.create(this, loadSound);

function loadSound(success:Boolean) {
if (success) {
s.start();
trace('//----------Sound Loaded------------')
}
else trace('//----------Failed to load Sound------------')
};
s.loadSound(s_url, s_streaming);

var i:Number = setInterval(Delegate.create(this, soundInProgress), 100, s);
function soundInProgress(so:Sound):Void {
var pct:Number = Math.round(so.getBytesLoaded()/so.getBytesTotal()*100);
var pos:Number = Math.round(so.position/so.duration*100);
trace(so.getBytesLoaded()+" of "+so.getBytesTotal()+" bytes ("+pct+"%)");
trace(so.position+" of "+so.duration+" milliseconds ("+pos+"%)");
/*if(somestate){
clearInterval(i);
}*/
}

Эти две строки:
trace(so.getBytesLoaded()+" of "+so.getBytesTotal()+" bytes ("+pct+"%)");
trace(so.position+" of "+so.duration+" milliseconds ("+pos+"%)");
позволяют нам сформировать условие, при котором мы можем начать проигрывать звук, или задержать его до выполнения какого-то действия и т.д.

Незабываем, что:
getBytesLoaded()
мы получаем благодаря:
s_streaming = true;

Можно ещё упомянуть:
_soundbuftime = на_сколько_секунд_забуфферизите;

priroda
01.04.2008, 23:04
понимаете проблема не втом какой код использовать.
мне не нужно сравнивать позицию загрузившуюся музыки с позицией проигравшейся. всё куда проще.
moviClipLoader'ом никто mp3 и не грузит. ведь в архиве всё видно.

_там всё работает_
John, ваш код дал мне понять что я делала всё правильно. спасибо.
единственное чего я не могу сделать. найти место куда поставить условие которое бы запускало картинку и музыку когда они оба будут загружены на 100%. не могу понять в какую строку и между чем это написать.

я пробовала присваивать переменной = true при загрузке картинки. а когда загружается музыка - проверять на true. но такой вариант работает когда нажимаешь ctrl+enter дважды.
мне нужно лишь правильное условие, исходя из того что есть.

Molecula
01.04.2008, 23:13
работает когда нажимаешь ctrl+enter дважды
Двойным таким нажатием Вы включаете эмулятор инета в IDE.
В инете тестировали?

место куда поставить условие которое бы запускало картинку
и музыку когда они оба будут загружены на 100%.
MovieClipLoader.onLoadInit - когда каринка загрузится, те функции, которые Вы там написали - сработают, вот и всё.