Flash 如何使用OSMF处理NetStatusEvents

Flash 如何使用OSMF处理NetStatusEvents,flash,actionscript-3,osmf,Flash,Actionscript 3,Osmf,我正在使用OSMF库开发视频播放器。我的问题是,我有时会失去与服务器的连接。因此,我设置了一个对象来监视与服务器的连接,如果连接丢失,它会在放弃之前尝试有限次数的重新连接。除了我在播放器的调试器版本上看到的消息外,其他一切都正常工作: 错误#2044:未处理的NetStatusEvent:。级别=错误,代码=NetStream.Play.StreamNotFound 我确实有一个从HTTPStreamingNetLoader继承的对象,它覆盖processFinishLoading方法,获取ne

我正在使用OSMF库开发视频播放器。我的问题是,我有时会失去与服务器的连接。因此,我设置了一个对象来监视与服务器的连接,如果连接丢失,它会在放弃之前尝试有限次数的重新连接。除了我在播放器的调试器版本上看到的消息外,其他一切都正常工作:

错误#2044:未处理的NetStatusEvent:。级别=错误,代码=NetStream.Play.StreamNotFound

我确实有一个从HTTPStreamingNetLoader继承的对象,它覆盖processFinishLoading方法,获取netStream并侦听网络状态事件。像这样:

override protected function processFinishLoading(loadTrait:NetStreamLoadTrait):void
   {    
            netStream = loadTrait.netStream as HTTPNetStream;
            netStream.addEventListener(NetStatusEvent.NET_STATUS, onNetStatus);
    ...
    }
但我仍然得到了错误。onNetStatus方法获取事件,如NETSTREAM\u BUFFER\u EMPTY、NETSTREAM\u BUFFER\u FULL或NETSTREAM\u PLAY\u START,但不获取NETSTREAM\u PLAY\u STREAMNOTFOUND 你知道怎么处理吗?
谢谢。

您可以收听MediaPlayer状态更改:

mediaPlayer.addEventListener( MediaPlayerStateChangeEvent.MEDIA_PLAYER_STATE_CHANGE, onMediaPlayerStateChange, false, 0, true);


您可以收听MediaPlayer状态更改:

mediaPlayer.addEventListener( MediaPlayerStateChangeEvent.MEDIA_PLAYER_STATE_CHANGE, onMediaPlayerStateChange, false, 0, true);


您可以从mediaElement获得它

mediaElement.addEventListener(MediaElementEvent.TRAIT_ADD, onTraitAdd);
那么


您可以从mediaElement获得它

mediaElement.addEventListener(MediaElementEvent.TRAIT_ADD, onTraitAdd);
那么


这当然是我正在做的,但它不起作用。错误是在从未调用netStatusHandler的情况下触发的,netStatusHandler会接收其他NetStatuseEvents,如我前面提到的缓冲事件。然后它与流服务有关。这当然是我正在做的,它不起作用。错误是在从未调用netStatusHandler的情况下触发的,netStatusHandler会接收其他NetStatuseEvents,如我前面提到的缓冲事件。
private function onTraitAdd(event:MediaElementEvent):void
{
  trace(" [add]", event.toString()); 
  if (event.traitType == MediaTraitType.LOAD)
  {

    if (mediaElement.hasTrait(MediaTraitType.LOAD))
    {
      netStreamLoadTrait = mediaElement.getTrait(MediaTraitType.LOAD) as NetStreamLoadTrait;
      netStreamLoadTrait.addEventListener(LoadEvent.LOAD_STATE_CHANGE, onLoaded);

    }
  }
}


private function onLoaded(event:LoadEvent):void
{
  netStream = netStreamLoadTrait.netStream;
  netStream.addEventListener(NetStatusEvent.NET_STATUS, onNetStatus);
}