Исключить повторные значения модуля - PullRequest
0 голосов
/ 22 сентября 2011

У меня срабатывает событие, которое показывает прогресс в видео:

_currentPosition = 3,86 секунды _currentPosition = 4,02 секунды _currentPosition = 4,16 секунды и т. Д.

Я пытаюсь сделать следующее:отправлять уведомления на сервер каждые пять секунд, чтобы указать прогресс.Я могу округлить секунды до ближайшего целого числа, используя Math.floor.Тогда я могу использовать модуль, чтобы получить каждую пятую секунду.Чего я не вижу, так это как не отправить повтор (например, 5), так как 5.02, 5.15, 5.36 и т. Д. Будут соответствовать требованиям.

Я хочу что-то вроде следующего, которое выполняется в быстром событии, похожем на enterframe.Но я не уверен, как и где сделать тест для _sentNumber, где его объявить, где его сбросить ...

    var _sentNumber:int;
   //_currentPosition is  the same as current time, i.e. 5.01, 5.15, etc.
var _floorPosition:int = Math.floor(_currentPosition); //returns 5
    if(_floorPosition % 5 == 0) //every five seconds, but this should only happen
                                        // once for each multiple of 5. 
    {
       if(_floorPosition != _sentNumber)       //something like this?
       {
        sendVariablesToServer("video_progress");
       }
    _sentNumber = _floorPosition;

Спасибо.

Ответы [ 2 ]

0 голосов
/ 22 сентября 2011
private var storedTime:Number = 0;

private function testTime( ):void{
  //_currentPosition is  the same as current time, i.e. 5.01, 5.15, etc.
  if( _currentPosition-5 > storedTime ){
    storedTime = _currentPosition
    sendVariablesToServer("video_progress");
  }
}
0 голосов
/ 22 сентября 2011

Похоже, ты почти у цели.Я бы просто поместил объявление _sentNumber внутри оператора if:

var _sentNumber:int = 0;

private function onUpdate(...args:Array):void // or whatever your method signature is that handles the update
{
    //_currentPosition is  the same as current time, i.e. 5.01, 5.15, etc.
    var _floorPosition:int = Math.floor(_currentPosition); //returns 5
    if(_floorPosition % 5 == 0 && _floorPosition != _sentNumber) //every five seconds, but this should only happen once for each multiple of 5. 
    {
        sendVariablesToServer("video_progress");
        _sentNumber = _floorPosition;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...