Просмотр полной версии : А как сделать секундомер?
джонатан
14.07.2008, 14:30
Хочу спидометр который бы показывал скорость загрузки. Соответственно мне надо:
BytesLoaded / время за которое это загружено
либо
BytesTotal / общее время загрузки.
А вот как мне вычислить время, непойму.
Надеюсь на вашу помощь. Благодарю за внимание. :victory:
По событию onLoadStart запоминаете значение getTimer ()
По событию onLoadComplete вычитаете из текущего getTimer () то, что запомнили и делите разницу на 1000, тем самым получая время загрузки в секундах.
джонатан
14.07.2008, 14:57
iNils > Ну это чтобы увидеть скорость загрузки, по завершению всей загрузки, а если мне нужно видеть скорость непосредственно в процессе загрузки?
Я сделал пустой клип, в котором колличество кадров равно колличесву fps, создал переменную timer равную 0 и в этом клипе на последнем кадре написал
timer++;
Сейчас заливаю в сеть, чтобы проверить, а-то когда локально, то выводит "Infinity kb/s"
Но как-то это не красиво... Да и темболее погрешность имеет место в fps...
О! Точно! Праильнее наверное сначала задать переменной не 0 а -1, и на первом кадре писать timer++;
Так будет правильнее, но всеравно это как-то через "пятую точку".
Причем тут фпс?
Есть событие onLoadProgress, которое вызывается каждый раз, когда записывает новая часть данных. Запоминайте предыдущее значение загруженных байт и getTimer (), а потом делите разницу.
джонатан
14.07.2008, 15:12
iNils > Причем тут фпс?
как причем? Если фпс стоит 31, значит, что частота смены гадров = 31 в секунду.
И если в клипе 31 кадр, соттветственно он проигрывается полностью за 1 секнду. А с последнего кадра переходит на первый и к значению переменной timer прибавляется единичка, один раз в секунду. Ведь правильно?
Но как я уже и говорил, этот способ не красивый. Поэтому я благодарю вас за разъяснение, пойду делать. Спасибо.
// update
Что-то у меня ничего не получается! Я так подозреваю, что все потому, что я гружу не клип, и не картинку, а FLV видео:
// Create a NetConnection object
var netConn:NetConnection = new NetConnection();
// Create a local streaming connection
netConn.connect(null);
// Create a NetStream object and define an onStatus() function
var netStream:NetStream = new NetStream(netConn);
netStream.onStatus = function(infoObject) {
for (var prop in infoObject) {
if (infoObject[prop] == "NetStream.Buffer.Empty") {
_root.player.btns.time_field.msgTxt.text = "Идет загрузка...";
ones3 = false;
}
if (infoObject[prop] == "NetStream.Buffer.Full") {
_root.player.btns.time_field.msgTxt.text = "";
}
if(infoObject[prop] == "NetStream.Play.Stop"){
demor();
}
if (infoObject[prop] == "NetStream.Play.StreamNotFound") {
msg_txt.text = "File not found...";
}
}
};
netStream.onMetaData = function(infoObject:Object) {
for (var propName in infoObject) {
if (propName == "lasttimestamp" or propName == "duration") {
meta = true;
vLength = infoObject[propName];
kv = vLength/(_root.TimeLinelen);
delete netStream.onMetaData;
}
if (propName == "duration") {
_root.iAllTime = infoObject[propName];
usePath_mc.btnPlace.timeLine.timeTxt.text = usePath_mc.attached_as.fSetTime(_root.iAllTime);
}
if (propName == "width") {
}
if (propName == "height") {
}
}
};
// Attach the NetStream video feed to the Video object
usePath_mc.video_mc.my_video.attachVideo(netStream);
// Set the buffer time
netStream.setBufferTime(5);
// Begin playing the FLV file
netStream.play(_root.video_file);
netStream.seek(0);
netStream.pause();
Добродень!
У меня для Вас до одури простой вопрос, но мне как не программеру он не так и прост, а времени на изучение базы сейчас нет, ибо проекту завтра быть.
Есть у меня текст вида 0,001
Надо чтоб каждые пол секунды (или там каждые несколько кадров, не важно) он прибавлялся на 0,001.
Как это сделать? Я пробовал гуглить, но у всех глобальные планы, из которых у еня не знаючи АС не удается вычленить кусочек, который дал бы мне именно этот результат =(
lexa2000lexa
17.11.2010, 11:54
вот такvar num:Number = 0.001;
function sum(dt:Number){
num +=dt
ваше_текстовое_поле.text = num;
}
var id:Number = setInterval(sum,500,0.001)
lexa2000lexa, чистосердечное, необъятных размеров спасибище!
Добавлено через 1 час 2 минуты
вот такvar num:Number = 0.001;
function sum(dt:Number){
num +=dt
ваше_текстовое_поле.text = num;
}
var id:Number = setInterval(sum,500,0.001)
А как сделать так, чтоб в конце был 0?
Он тут когда прибавляет, то получается 0,009 а потом 0,01. Хотелось бы чтоб после запятой было 3 знака всегда .
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.