PDA

Просмотр полной версии : Буферизация звука


FMensk
26.08.2007, 22:18
Вопрос первый:
- Можно ли как небудь _soundbuftime = 20 подвязать не к времени а к % загрузки, допустим 10% загрузилось и пошло воспроизведение, ведь у всех разная скорость интернета! кому то и 60 секунд будет мало, а кому и 5 много.

Вопрос второй:
- Можно ли отследить находиться звук в процессе буферизации, или играет, если прошла 10 сек. буферизация звук начал играть (надо отследить что он начал играть), потом звук догнал загрузку и опять остановился буферизироваться (тоже надо отследить), потом опять пошел и т.д.

Спасибо:)

Mr. Fixit
26.08.2007, 22:58
Вопрос №1:

_soundbuftime = 20;
var s:Sound = new Sound(this);
s.loadSound("path", true); //true - потоковая загрузка с буферизацией в 20 сек

FMensk
26.08.2007, 23:19
Уточнение.
20 сек - это когда в буфере 20 секунд звука загрузилось???
или по прошествии 20 секунд начнется воспроизведение??
-ну вообщем я и сам дагодался.
спасибо что вывели меня из заблуждения. :)

ВОПРОС №2 в силе!!!

stutsm
20.11.2007, 12:32
Люди добрые а может подскажите как к этому коду еще прикрутить визуальную полоску на которой будет обозначено сколько чего загрузилось и проигралось? Очень нужно, во Flash профан.

screamge
20.11.2007, 12:52
Видимо на вопрос ответ уже найден но…отвечу:
1. Если нужны проценты то можно считывать из тагов длину дорожки и затем высчитать 20 или сколько нужно процентов от общей длины и буфтайм ставить в полученный результат.
2. position за кол-во миллисекунд уже проигранных, можно проверять это значение, если на протяжении нескольких секунд оно не обновлялось значит звук буферезируется.

stutsm, так как в хелпе в коде ошибка выложу сюда, но на будущее стоит заглядывать в него.


var pb_height:Number = 10;
var pb_width:Number = 100;
var pb:MovieClip = this.createEmptyMovieClip("progressBar_mc", this.getNextHighestDepth());
pb.createEmptyMovieClip("bar_mc", pb.getNextHighestDepth());
pb.createEmptyMovieClip("vBar_mc", pb.getNextHighestDepth());
pb.createEmptyMovieClip("stroke_mc", pb.getNextHighestDepth());
pb.createTextField("pos_txt", pb.getNextHighestDepth(), 0, pb_height, pb_width, 22);

pb._x = 100;
pb._y = 100;

with (pb.bar_mc) {
beginFill(0x00FF00);
moveTo(0, 0);
lineTo(pb_width, 0);
lineTo(pb_width, pb_height);
lineTo(0, pb_height);
lineTo(0, 0);
endFill();
_xscale = 0;
}
with (pb.vBar_mc) {
lineStyle(1, 0x000000);
moveTo(0, 0);
lineTo(0, pb_height);
}
with (pb.stroke_mc) {
lineStyle(3, 0x000000);
moveTo(0, 0);
lineTo(pb_width, 0);
lineTo(pb_width, pb_height);
lineTo(0, pb_height);
lineTo(0, 0);
}

var my_interval:Number;
var my_sound:Sound = new Sound();
my_sound.onLoad = function(success:Boolean) {
if (success) {
trace("sound loaded");
}
};
my_sound.onSoundComplete = function() {
clearInterval(my_interval);
trace("Cleared interval");
}
my_sound.loadSound("song3.mp3", true);
my_interval = setInterval(updateProgressBar, 100, my_sound);

function updateProgressBar(the_sound:Sound):Void {
var pos:Number = Math.round(the_sound.position / the_sound.duration * 100);
pb.bar_mc._xscale = pos;
pb.vBar_mc._x = pb.bar_mc._width;
pb.pos_txt.text = pos+"%";
}

stutsm
20.11.2007, 12:56
Спасибо большое.