首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >调用NetStream.pause后未触发NetStream.Buffer.Full

调用NetStream.pause后未触发NetStream.Buffer.Full
EN

Stack Overflow用户
提问于 2011-07-07 06:37:47
回答 2查看 1.4K关注 0票数 0

我正在用AS3制作一个小视频播放器,我发现在调用NetStream.pause()或NetStream.togglePause()之后,没有任何状态消息被触发。如果我在视频缓冲时点击“暂停”按钮,我永远不会收到Buffer.Full消息。

下面是一些代码:

代码语言:javascript
复制
_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);
}

这里我漏掉了什么?

谢谢。

EN

回答 2

Stack Overflow用户

发布于 2011-07-08 04:06:12

代码语言:javascript
复制
_connection.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
_connection.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
票数 0
EN

Stack Overflow用户

发布于 2015-10-31 03:25:10

几年太晚了,但遇到了同样的问题。我能够通过在接收NetStream.Unpause.Notify时查看bufferLength是否大于bufferTime来修复它。

如下所示的代码:

代码语言:javascript
复制
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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6603881

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档