我在控制视频方面遇到了一些问题。我有这个Main.as
,我正在添加一个孩子。孩子包含一个循环播放的视频。
在Main.as我运行这个,只是添加了视频。 (视频在_idleView中)
_idleView = new IdleView(this.stage);
addChild(_idleView);
我的IdleView.as
看起来像这样。这是添加视频并将其循环的构造函数。
_video = new Video();
addChild(_video);
_nc = new NetConnection();
_nc.connect(null);
_ns = new NetStream(_nc);
_ns.client = _meta;
_video.attachNetStream(_ns);
_ns.play(Settings.VIDEO_URL + "idle.flv");
在Main.as
我将稍后添加一个包含视频的新孩子(通过点击)。就像idleView但没有循环一样。每当新的孩子被添加时,我希望能够播放idleView视频到最后,停止它,然后让新的孩子视频开始播放。
不知道如何实现这一目标。任何人吗?
答案 0 :(得分:0)
将playVideo
函数添加到IdleView
只播放空闲视频而不循环播放,然后在click
处理程序中调用它:
_newChild:ChildVideo;
private function click(e:Event):void {
//other stuff
//Set the new child video to the _newChild variable
_idleView.addEventListener(Event.COMPLETE, onIdleVideoComplete);
_idleView.playVideo();
}
private function onIdleVideoComplete(e:Event):void {
_newChild.playVideo();
}
在IdleView
:
public function playVideo():void {
_video = new Video();
addChild(_video);
_nc = new NetConnection();
_nc.connect(null);
_ns = new NetStream(_nc);
_ns.client = {};
_ns.client.onPlayStatus = onPlayStatus;
_ns.client = _meta;
_video.attachNetStream(_ns);
_ns.play(Settings.VIDEO_URL + "idle.flv");
}
private function onPlayStatus(item:Object):void {
if (item.code == NetStream.Play.Complete) {
dispatchEvent(new Event(Event.COMPLETE));
}
}
另请参阅https://stackoverflow.com/questions/20736656/correctly-trap-onplaystatus-for-netstream和Adobe docs for NetStream and playStatus