1

我的 Flash 网站需要一个接一个地播放 10 个视频,为了减少等待时间,我需要在播放视频 1 时预加载视频 2 和视频 3,依此类推...

我需要遵循这个结构,因为在视频 1 结束时,用户将有机会选择下一个(2 或 3)。

所有的代码都在我电影的第一帧,我仍然需要学习类、包等。

第一个视频通过我放置在舞台上的链接视频(myVideo)播放,代码如下:

var nc:NetConnection = new NetConnection();
nc.connect(null);
var ns:NetStream = new NetStream(nc);
ns.addEventListener(NetStatusEvent.NET_STATUS, statusHandler);
ns.addEventListener(AsyncErrorEvent.ASYNC_ERROR, asyncErrorHandler);
ns.play("video1.f4v");
var myVideo:Video = new Video();
myVideo.attachNetStream(ns);
addChild(myVideo);

我需要了解在 nr 时预加载其他两个视频的最佳方法。1正在玩。

我是否应该再创建 2 个链接视频,将它们放在舞台外并在那里加载视频,以便在需要时立即可用?

非常感谢您的帮助!

--- 编辑:在我的帖子中添加了更多详细信息 ---

我正在做一些测试以了解此过程,我尝试了以下方法:

var ns2:NetStream = new NetStream(nc);
var ns3:NetStream = new NetStream(nc);
ns2.play("video/video2.f4v");
ns2.pause();
ns2.addEventListener(AsyncErrorEvent.ASYNC_ERROR, asyncErrorHandler);
ns3.play("video/video3.f4v");
ns3.pause();
ns3.addEventListener(AsyncErrorEvent.ASYNC_ERROR, asyncErrorHandler);

它可以工作,但是以这种方式加载 2 部电影会导致 100% 的 cpu 使用率和视频播放的帧速率不佳...也许我必须加载视频 2,检查加载是否完成,然后开始加载视频 3...这样做的正确方法?

再次感谢

4

2 回答 2

1

我相信我找到了方法,这是完整的脚本:

var nc:NetConnection = new NetConnection();
nc.connect(null);
var ns:NetStream = new NetStream(nc);
ns.addEventListener(NetStatusEvent.NET_STATUS, statusHandler);
ns.addEventListener(AsyncErrorEvent.ASYNC_ERROR, asyncErrorHandler);
ns.play("video1.f4v");
var myVideo:Video = new Video();
myVideo.attachNetStream(ns);
addChild(myVideo);

var ns2:NetStream = new NetStream(nc);
var ns3:NetStream = new NetStream(nc);

function statusHandler(event:NetStatusEvent):void
{
    switch (event.info.code)
    {
        case "NetStream.Play.Start" :

        ns2.play("video/video2.f4v");
        ns2.pause();
        ns2.addEventListener(AsyncErrorEvent.ASYNC_ERROR, asyncErrorHandler);

        ns3.play("video/video3.f4v");
        ns3.pause();
        ns3.addEventListener(AsyncErrorEvent.ASYNC_ERROR, asyncErrorHandler);

        break;

        case "NetStream.Play.Stop" :
        trace("ns video stop");
        break;
    }
}

当我调用 ns.play("video2.f4v"); 视频已经在浏览器缓存中,因此立即开始播放,CPU 使用率看起来也不错。

如果有更专业的方式我想了解更多。

trace("谢谢,再见");

于 2012-10-16T08:54:51.170 回答
0

实现这一点的最简单方法是使用 Greensock 的LoaderMax。您可以设置要加载的视频列表,然后根据用户的操作对其中一些视频进行优先级排序。

LoaderMax 有一些很棒的功能,这些功能很难从头开始构建,它还修复了一些奇怪的 Flashplayer 行为。

有一点学习曲线,但不是太陡峭。

于 2012-10-15T09:45:18.163 回答