2014-10-08 76 views
0

Im在控制视频方面存在一些问题。我有这个Main.as我在那里添加一个孩子。孩子包含一个循环播放的视频。AS3。在单独的孩子中控制视频

在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

添加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-netstreamAdobe docs for NetStream and playStatus