Flash视频播放器内存问题

时间:2011-04-14 22:50:37

标签: flash actionscript-3 memory video audio

我制作了一个播放列表的视频播放器。大约45分钟后声音停止!视频继续播放。我播放短片(每个约3到4分钟)。

播放器基于2帧:

第1帧用文件名定义变量VidReference:

VidReference = trackToPlay;

第2帧播放视频:

var nc:NetConnection = new NetConnection();
nc.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
nc.connect(null);
var ns:NetStream = new NetStream(nc);
ns.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
const buffer_time:Number = 2;
ns.bufferTime = buffer_time;
ns.client = this;
ns.play(VidReference);
var vid:Video = new Video();
vid.attachNetStream(ns);
addChild(vid);
vid_frame.addChild(vid);

一旦视频完成播放,它将进入第1帧(将新值放入VidReference变量)并返回第2帧以播放新视频。 我是否应该在每次加载新视频时删除视频对象?我每次循环时都会声明一个新的视频对象(第1帧> 2)并将每个视频添加到RAM中,最后是否压倒了Flash播放器?

我听说过垃圾收集,但我不知道如何删除视频对象,以便从内存中清除它(以及视频本身)。

当我检查System.totalMemory时,每次加载新视频时它都会加起来,我无法弄清楚如何从内存中删除旧视频。

1 个答案:

答案 0 :(得分:0)

请不要重新发布问题 Repost

    if(!vid){
      var nc:NetConnection = new NetConnection();
      nc.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
      nc.connect(null);
      var ns:NetStream = new NetStream(nc);
      ns.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
      const buffer_time:Number = 2;
      ns.bufferTime = buffer_time;
      ns.client = this;
      ns.play(VidReference);
      var vid:Video = new Video();
      vid.attachNetStream(ns);
      //addChild(vid); // you shouldnt add the video to2 display objects
      vid_frame.addChild(vid);
    }else{
      ns.play(VidReference);
   }