PDA

Просмотр полной версии : Прелодер для файлов из вне!


Tankian
11.11.2006, 00:52
Всем привет. Это снова я. И, наверное, снова с глупым вопросом. Ну так вот: с горем пополам написал я прелодер( для самого мувика):

onClipEvent (load) {
total = _root.getBytesTotal();
}
onClipEvent (enterFrame) {
loaded = _root.getBytesLoaded();
percent = int(loaded/total*100);
this.gotoAndStop(percent);
if (percent == 100) {
_root.gotoAndPlay(2);
}
}
Он работает прелестно.

Теперь я загружаю музыку:

snd1 = new Sound();
snd1.loadSound("http://www.site.ru/music1.mp3", true);

и мне нужен прелодер для этой музыки.
Первое, что пришло на ум:

onClipEvent (load) {
total = snd1.getBytesTotal();
}
............

не работает(
Помогите, плз, кто чем сможет...

2: это к делу не относится... так, для общего развития:

я тут в одном прелодере( уже готовом) увидел вот что:

...........
if (loaded == total and total>380 and a<>1) {
a=1;
_root.gotoAndStop(2);
}

ну что написано в первой части этого условия понятно. А вот что такое "total>380", что это за число 380 непонятно... И уж совсем не понятно что такое "а"... объясните плз.

Всем заранее примного благодарен!

Хемуль
11.11.2006, 01:48
2 Tankian:
Удивительно, но Гугл почему-то выдал в первой же ссылке ответ. о_0
http://209.85.129.104/search?q=cache:ICH6oaqpRHUJ:www.kennybellew.com/tutorial/dynamic_preloader.htm+flash+sound+preloader&hl=en&ct=clnk&cd=1&client=opera

Dessert
11.11.2006, 03:39
Недавно нашол исходник на одном сайте, попробуй это:

Чтобы подгрузить mp3 во флешку, воспользуемся функцией Sound.loadSound.
Берём любой mp3, называем его sound.mp3 и кладём в папку рядом с флешкой. Создаём флешку и в первом кадре пишем код:
my_sound = new Sound();
my_sound.loadSound("sound.mp3", false);

Тестим и проверяем работоспособность. Остаётся добавить прелоадер - для этого дописываем наш код следующим образом:
my_sound = new Sound();
my_sound.loadSound("sound.mp3", false);
//
my_sound.onLoad = function(ok) {
if (ok) {
clearInterval(interval);
this.start();
tf_txt.text = "100%";
}
};
_root.createTextField("tf_txt", 1, 100, 100, 350, 200);
function loader(sound) {
var gbl = sound.getBytesLoaded();
var gbt = sound.getBytesTotal();
tf_txt.text = int(gbl/gbt*100)+"%";
}
interval = setInterval(loader, 100, my_sound);

Хемуль
11.11.2006, 03:46
Да, поскольку у обьекта Sound нет обработчиков, вызываемых при загрузке, нужно использовать либо setInterval, либо onEnterFrame для отображения прогресса загрузки.

iNils
11.11.2006, 03:48
Dessert, для оформления своего кода, надо использовать теги .

Dessert
11.11.2006, 18:24
тоесть?

Хемуль
11.11.2006, 22:46
2 Dessert:
То есть, например, без форумных тэгов ваш текст выглядит так:
function myFunction()
{
trace("Что такое форумные тэги?");
}

А если вставить код между тэгами, про которые вам написал iNils, получите:

function myFunction()
{
trace("Вау, форумные тэги - это круто!");
}

Сохраняется форматирование, да и код выделяется из остального текста.

Diestro
11.11.2006, 23:50
Думаю стоит обратить внимание на второй параметр передаваемый в фукцию loadSound, true это потоковый звук, который проирывается по мере загрузки. Попробуйте false.

Хемуль
12.11.2006, 00:02
2 Diestro:
В последнем куске кода вроде было false...

Diestro
12.11.2006, 01:16
В коде то оно было, не было сказно что в этом причина, на что я и обратил внимание вопрошающего :)

Dessert
12.11.2006, 03:12
Хемуль, спасибо, незнал, учту на будущее