Если этот блок кода является копией и вставкой, он, безусловно, не будет работать так, как вы ожидали. Вы объявляете speed
как функцию, в которой вы, по-видимому, переопределяете ее как число. Я высоко ценю Flash IDE, который поможет вам разобраться с схематичной грамматикой, но подобный код приведет вас к различным неприятностям. Старайтесь быть явным при написании кода.
Попробуйте что-то вроде этого, заменив yourLoader
идентификатором, который вы присвоили загрузчику:
private var speed:Number = 0;
private var lastBytes:uint = 0;
private function uploadSpeed(event:TimerEvent):void
{
speed = Math.round((yourLoader.currentBytes - lastBytes) / 1024);
lastBytes = yourLoader.currentBytes;
}
private var speedTimer:Timer = new Timer(1000);
speedTimer.addEventListener(TimerEvent.TIMER, uploadSpeed);
Это должно подсчитать, сколько байтов переместилось в 1 секунда интервалы.
Edit:
Возможно, вы захотите сделать интервал чуть меньше 1000 мс и рассчитать среднюю скорость для ваших последних n выборок. Это сделало бы число, которое видят ваши пользователи, более стабильным, чем сейчас. Сделайте скорость Array
и .push()
последней выборкой. Используйте .shift()
, чтобы отбросить самые старые сэмплы, чтобы не потерять слишком много точности. Метод проб и ошибок даст вам лучшее представление о том, сколько сэмплов нужно хранить и как часто их нужно брать.