Actionscript 3 如果用netStream加载flv,当flv停止播放时,如何调用函数

Actionscript 3 如果用netStream加载flv,当flv停止播放时,如何调用函数,actionscript-3,timer,settimeout,netstream,Actionscript 3,Timer,Settimeout,Netstream,我在ActionScript3中有一个网站,它有很多FLV动画,当你按下按钮时就会发生。现在我就是这样设置的 在AS3中, im加载FLv(这些是我从After Effects以FLv形式导出的动画) 与净流。我为动画(FLV)播放的时间长度设置了一个计时器,当计时器停止时,它会调用一个函数来关闭流,打开一个新流并播放另一个视频。我注意到使用计时器的唯一问题是,如果连接速度慢并且(动画)停止一秒钟,计时器就会继续运行,并且过早调用下一个flv 有人知道在flv游戏结束时加载flv或swf的方法吗

我在ActionScript3中有一个网站,它有很多FLV动画,当你按下按钮时就会发生。现在我就是这样设置的

在AS3中, im加载FLv(这些是我从After Effects以FLv形式导出的动画) 与净流。我为动画(FLV)播放的时间长度设置了一个计时器,当计时器停止时,它会调用一个函数来关闭流,打开一个新流并播放另一个视频。我注意到使用计时器的唯一问题是,如果连接速度慢并且(动画)停止一秒钟,计时器就会继续运行,并且过早调用下一个flv

有人知道在flv游戏结束时加载flv或swf的方法吗?因此,下一个FLV将始终在前一个FLV的运行时间结束时播放,而不是使用计时器


我想完成,但我不知道如何实现

使用OSMF框架很容易实现顺序播放,您应该查看一下。谷歌“osmf教程”,你应该可以在网上找到一些教程

该框架是相当新的,但它看起来可能成为Flash媒体交付的实际解决方案,因为它不仅限于视频,还包括音频和图像


作为一名开发人员,您不必为NetStream和NetConnection类而烦恼。开发视频解决方案以及音频和图像解决方案应简化并易于处理。唯一的限制是它需要Flash 10,这里有一些代码用于检查FLV何时以NetStream结尾。我只是提供一些片段,因为我假设您已经启动并运行了FLV

//create a netstream and pass in your connection
var netStream:NetStream = new NetStream(conn);

//add callback function for PlayStatus -event
var client : Object = {};
client.onPlayStatus = onPlayStatus;
netStream.client = client;

//attach your NetStream to the connection as usual
//---

//function that gets called onPlayStatus
function onPlayStatus(info : Object) : void {
    trace("onPlayStatus:" +info.code + " " + info.duration);
    if (info.code == "NetStream.Play.Complete") {
        //play the next FLV and so on
    }
}
编辑:对于您的示例代码,它将如下所示

var nc:NetConnection = new NetConnection(); 
nc.connect(null); 
var ns:NetStream = new NetStream(nc); 

var listener:Object = new Object(); 
listener.onMetaData = function(md:Object):void{}; 
listener.onPlayStatus = function(info : Object) : void {
    trace("onPlayStatus:" +info.code + " " + info.duration);
    if (info.code == "NetStream.Play.Complete") {
        //play the next FLV and so on
    }
};
ns.client = listener; 

vid1.attachNetStream(ns); 

const moviename1:String = "moviename2.flv"; 
const moviename1:String = "moviename3.flv"; 
var movietoplay:String = "moviename.flv"; 
ns.play(movietoplay);

在没有类的情况下,是否无法单独使用as3?我实际上要研究osmf,这看起来很酷,但我离毕业只有一周的时间,我需要完成这个毕业设计,所以我需要的东西不会花费我很长时间去研究,我不认为osmf会花费你一周的时间去理解!也许需要几个小时来阅读教程,了解大致情况。查看此博客抱歉,我无法再编辑。。。osmf不会花你一周的时间去理解!最多花几个小时来阅读教程并了解大致情况。这是一个基本播放器的代码,这样你就不必从头开始,他也有一些视频教程。当然,你可以不用osmf,一种方法是检索视频的持续时间并监视当前位置,一旦当前位置达到持续时间值,你就可以开始下一个视频,Ross的解决方案应该可以很好地工作,因为我已经运行了flv,但我不擅长解决这个问题。我用一个实例名将我的连接连接到舞台上的一个视频上,我如何将您的代码与我拥有的内容结合起来:。。。var nc:NetConnection=newnetconnection();nc.connect(空);var ns:NetStream=新NetStream(nc);vid1.attachNetStream(ns);变量侦听器:对象=新对象();listener.onMetaData=函数(md:Object):void{};ns.client=侦听器;const moviename1:String=“moviename2.flv”;const moviename1:String=“moviename3.flv”;var movietoplay:String=“moviename.flv”;ns.戏剧(电影放映);