0

我有一个使用 ActionScript 3 的网站,其中有很多 FLV 动画,这些动画会在您按下按钮时发生。现在这就是我设置它的方式。

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

有谁知道在flv播放结束时加载flv或swf的方法?这样下一个 FLV 将始终在上一个 FLV 的运行时间结束时播放,而不是使用计时器?

我正在考虑 onComplete 但我不知道如何实现它!?

4

2 回答 2

0

下面是一些用于检查 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);
于 2010-09-10T12:32:15.990 回答
0

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

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

作为开发人员,您不必为 NetStream 和 NetConnection 类而烦恼。开发视频解决方案以及音频和图像解决方案应该简化并且更易于处理。唯一的限制是它需要 Flash 10

于 2010-09-10T12:09:40.670 回答