PDA

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


inspace
23.03.2006, 02:16
Вот такая проблемка:
Есть функция, которая отрисовывает количество прошешего времени с момента начала показа видео
var loaded_interval:Number = setInterval(checkBytesLoaded, 1, my_ns);

function checkBytesLoaded(my_ns:NetStream) {
var pctLoaded:Number = Math.round(my_ns.bytesLoaded/my_ns.bytesTotal*100);
var timePlayng:Number =(100*my_ns.bytesLoaded*my_ns.time/(_root.meta.duration*my_ns.bytesTotal));
trace(my_ns.time+" ААА");
progressBar_mc.bar_mc._xscale = pctLoaded;
progressBar_mc.play_mc._xscale =timePlayng;
updateAfterEvent();
if (timePlayng>=100) {
clearInterval(loaded_interval);
}
}
}
И есть функция, которая при нажатии на видео бар делает следующее

function setControl(a:Number) {

progressBar_mc.play_mc._xscale = Math.floor(100*a/videoWidth);
Time =Number(a*_root.meta.duration*my_ns.bytesLoaded/(videoWidth*my_ns.bytesTotal));
var d = Time.toFixed(2).valueOf();
my_ns.time =d;
trace("ВВВ "+d);
my_ns.seek(d);
updateAfterEvent();
}
На выходе получаю следующее:
2.038 AAA
2.038 AAA
2.038 AAA
2.038 AAA
1.65
BBB 1.65
2.038 AAA
2.038 AAA
2.038 AAA
Вот вопросик, почему возникает такой скачек? Как избавиться?

inspace
23.03.2006, 12:33
Пояснение:
В первом коде влечина timePlayng отвечает за количество проигранного видео и зависит от my_ns.time
var timePlayng:Number =(100*my_ns.bytesLoaded*my_ns.time/(_root.meta.duration*my_ns.bytesTotal));
progressBar_mc.play_mc._xscale =timePlayng;
Во втором коде? исходя из того места где кликнула мышка, делается seek

inspace
23.03.2006, 22:36
Люди, неужели никто не делал перемотку для видео?
Помогите с проблемой. Пытался останавливать интервал при клике и заново запускать - не помогает =(

mrspb
24.03.2006, 08:26
неужели никто не делал перемотку для видео?
не, не делал. имхо нада определить твою точку d определить
d = bar_mc.xmouse/bar_mc._width*my_ns.bytesLoaded;
//пути сам расставь ;)
если я правильно понялъъъъ d - это точка, с которой ты хочешь начать воспроизведение.
кста, кажысь во втором куске коды адэйтАфтерЭвент не сработает.