NetStream.Buffer.Full не срабатывает после вызова NetStream.pause - PullRequest
0 голосов
/ 07 июля 2011

Я делаю небольшие видеопроигрыватели в AS3 и обнаружил, что после вызова NetStream.pause () или NetStream.togglePause () сообщения о состоянии больше не запускаются. Если я нажимаю кнопку «пауза» во время буферизации видео, я никогда не получаю сообщение Buffer.Full.

Вот код:

_connection = new NetConnection();
_connection.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
_connection.connect(null);

// create NetStream instance
_stream = new NetStream(_connection);
_stream.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);

// event handler
// not called after the stream has been paused
private function netStatusHandler( e:NetStatusEvent ):void
{
    trace("code:", e.info.code);
}

// pause button click handler
private function videoClickHandler( e:MouseEvent ):void
{
    _stream.togglePause();
    _isPaused = !_isPaused;
    controls.playPause.gotoAndPlay((_isPaused) ? 10 : 3);
}

Что мне здесь не хватает?

Спасибо.

Ответы [ 2 ]

0 голосов
/ 30 октября 2015

Лет слишком поздно, но столкнулся с той же проблемой. Я смог исправить это, посмотрев, было ли значение bufferLength больше, чем bufferTime, при получении NetStream.Unpause.Notify.

Код похож на этот:

switch(event.info.code) {
      case 'NetStream.Play.Start':
      case 'NetStream.Buffer.Full':
          currentState = 'playing';
          return;
      case 'NetStream.Unpause.Notify':
          if (this.ns.bufferLength >= this.ns.bufferTime) 
              currentState = 'playing';
          return;
      case 'NetStream.Pause.Notify':
          currentState = 'paused';
          return;
  }
0 голосов
/ 08 июля 2011
_connection.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
_connection.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
...