PDA

Просмотр полной версии : loadSound preloader


$mival
05.06.2006, 17:10
нужен прелоадер для подгружаемого звука, но блин что-то не работает вот такой скрипт: (в первом кадре)

_root.stop();
_root.createEmptyMovieClip("s", 10);
snd = new Sound(s);
snd.onLoad = function() {
this.start();
}
snd.loadSound("so1.mp3", false);
_root.onEnterFrame = function() {
t = snd.getBytesTotal();
l = snd.getBytesLoaded();
pr.txt.text = (l/t) * 100 + "% loaded";
if (l >=t) {
delete _root.enterFrame;
_root.gotoAndStop(2);
}
}

тут сразу переходит на второй кадр, не дожидаясь загрузки звука. То есть getBytesLoaded==getBytesTotal вначале загрузки. Почему так происходит :wacko:

MyXus
05.06.2006, 17:16
такая тема бывает в локале. t = l = 0.
попробуй поставить условие

kayama
05.06.2006, 17:38
А имитация загрузки что показывала?

MyXus
05.06.2006, 17:53
Я что хочу сказать. Недавно я поднимал похожую тему, меня попинали, я и сам стал думать, что ошибся.
На самом деле у меня есть уже 3 проекта, в которых недоделанность общепринятого механизма прелоадинга дает нестабильные сбои.
Для себя я теперь полную загрузку ролика фиксирую таким набором условий: if(o.obj.getBytesLoaded() == o.obj.getBytesTotal() && o.obj.getBytesTotal()>0 && o.obj._width)

ЗЫ. это, понятно, для мувов. Для звука последнее условие не нужно ;-)

$mival
05.06.2006, 18:40
в том то и прикол что в локалке вначале загрузки показывает что загружено ВСЕ 94775 байт звука!
В нэт выкладывал - то же самое: они оба (getBytesLoaded & getBytesTotal) не равны нулю, а равны 94775 :rolleyes: и сразу на второй кадр

elzone
05.06.2006, 20:08
попробовал у себя - все крутится как надо

_root.stop();
_root.createEmptyMovieClip("s", 10);
snd = new Sound(s);
snd.onLoad = function() {
this.start();
}
snd.loadSound("tr1.mp3", false);
_root.onEnterFrame = function() {
t = snd.getBytesTotal();
l = snd.getBytesLoaded();
_root.text = int(l/t * 100) + "% loaded";
if (l == t) {
delete _root.enterFrame;
_root.gotoAndStop(2);
}
}

$mival
05.06.2006, 20:28
to elzone: будешь смеяться, но твой код действительно работает ... только локально :eek:

elzone
05.06.2006, 20:44
поправочка небольшая

_root.stop();
_root.createEmptyMovieClip("s", 10);
snd = new Sound(s);
snd.onLoad = function() {
this.start();
}
snd.loadSound("tr1.mp3", false);
_root.onEnterFrame = function() {
t = snd.getBytesTotal();
l = snd.getBytesLoaded();
_root.text = int(l/t * 100) + "% loaded";
if (l == t && t > 0) {
delete _root.enterFrame;
_root.gotoAndStop(2);
}
}

http://elzone.net/test/mp3/1.html

просто при загрузке из инета не всегда стразу определяет размер

$mival
06.06.2006, 05:20
ща попробую...
неа. даже локально не катается :eek:

Usnul
06.06.2006, 05:49
работать со звуком можно начинать со следующего кадра после окончания загрузки, не спрашивайте почему.


ЗЫ
ушел спать.

MyXus
06.06.2006, 14:14
Тогда уж проще всего loadSound(url, true);

iNils
06.06.2006, 14:17
работать со звуком можно начинать со следующего кадра после окончания загрузки, не спрашивайте почему.
А я думал звук потоково можно грузить.

Usnul
06.06.2006, 14:38
прошу прощения, глупость сказал.

$mival
07.06.2006, 13:54
я уж не знаю что и делать. с изображениями проблем нет, а вот звук подводит зараза. что же с ним делать... :wacko:

MyXus
07.06.2006, 22:10
loadSound(url, true) !!!