使用AS3视频对象(非组件)检测NetStream事件

时间:2010-01-11 18:57:47

标签: flash actionscript-3 flv flvplayback

我使用AS3 flash.media视频对象(不是FLV播放组件)创建了一个FLV视频播放器,我正在尝试收听FLV视频中嵌入的元事件和提示点,但我没有收到任何我追踪电影。提示点不是动态创建的,它们位于FLV视频中。

视频嵌入代码:

    // Initialize net stream
nc = new NetConnection();
nc.connect (null); // Not using a media server.
ns = new NetStream(nc);
// Add video to stage
vid = new Video(456,675);
addChild (vid);
// Add callback method for listening on
// NetStream meta data
client = new Object();
ns.client = client;
client.onMetaData = this.nsMetaDataCallback;
client.onCuePoint = this.onCuePoint; 
// Play video
vid.attachNetStream ( ns );
ns.play ("flv/00_010.flv");

与上述代码在同一类中的回调处理程序:

public function onCuePoint(info:Object):void { 
trace("cuePoint: time = " + info.time + " name = " + info.name + " type = " + info.type); 
if (ns) ns.pause();
}

public function nsMetaDataCallback (mdata:Object):void {
trace (mdata.duration);
}

我有什么遗漏从我的网络流中捕获事件有错吗?

1 个答案:

答案 0 :(得分:0)

这与我工作的代码几乎完全相同。我唯一能想到的就是创建了Video对象本身。我已经将我的声明声明为类本身的属性,虽然我无法真正想到为什么在函数调用中使用声明会很重要,因为它仍然会添加到舞台中。

我相信你看到视频好吗?

一个相当愚蠢的猜测是,如果attachNetStream调用对NetStream执行某些操作,则尝试切换客户端分配和attachNetStream调用。

vid.attachNetStream ( ns )
ns.client = client;
client.onMetaData = this.nsMetaDataCallback;
client.onCuePoint = this.onCuePoint;