Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flash播放器缓存问题_Flash - Fatal编程技术网

Flash播放器缓存问题

Flash播放器缓存问题,flash,Flash,我制作了一个flash视频自动存储塔,所以它可以连续几个小时读取F4V文件的动态播放列表。 一切正常,但大约45分钟后声音停止,2小时后flash播放器插件崩溃。 缓存似乎不接受更多F4V视频,然后崩溃。如果我每2小时自动刷新浏览器,它会工作,但我想避免刷新浏览器,只要清除flash player缓存,如果这是F4V去的地方? 当你播放F4V文件时,我找不到任何关于它们的信息 编辑 第1帧为变量vidReference提供视频文件名的值: VidReference=trackToPlay 第2帧

我制作了一个flash视频自动存储塔,所以它可以连续几个小时读取F4V文件的动态播放列表。 一切正常,但大约45分钟后声音停止,2小时后flash播放器插件崩溃。 缓存似乎不接受更多F4V视频,然后崩溃。如果我每2小时自动刷新浏览器,它会工作,但我想避免刷新浏览器,只要清除flash player缓存,如果这是F4V去的地方? 当你播放F4V文件时,我找不到任何关于它们的信息

编辑 第1帧为变量
vidReference
提供视频文件名的值:

VidReference=trackToPlay

第2帧进行播放:

var nc:NetConnection=newnetconnection();
nc.addEventListener(NetStatusEvent.NET_STATUS,netStatusHandler)
nc.connect(空)
var ns:NetStream=新NetStream(nc)
ns.addEventListener(NetStatusEvent.NET_STATUS,netStatusHandler)
常量缓冲时间:数字=2
ns.bufferTime=缓冲时间
ns.client=this
ns.播放(参考视频)
var vid:Video=新视频()
参见附件流(ns)
addChild(vid)
vid_frame.addChild(vid)


此功能用于检测视频何时播放完毕(仍在第2帧上):


函数netStatusHandler(事件:NetStatusEvent):void
{
开关(事件信息代码)
{
案例“NetStream.Play.StreamNotFound”:newTrack();
中断;
案例“NetStream.Play.Stop”:newTrack();
中断;
}
}

函数
newTrack()
只是给变量
trackToPlay
一个值(下一个视频的文件名)。然后对
gotoAndPlay
frame 1说,这样就可以重新初始化播放器了。对象在第2帧中重新声明,这就是问题所在吗


David听起来好像内存不足了。你是不是在清除旧的f4v,这样你就不再只是不断地请求内存了

尝试分析它,或者使用类似


有关跟踪内存问题的帮助,请查看(无耻的自我提升)

这不是缓存问题。缓存是在硬盘上分配的空间,因此如果未满,则不会出现问题。
听起来好像你没有垃圾收集,也没有正确地重用视频对象。
发布一些代码以便我们可以修复它

我实际上希望能够清除旧的F4V,这可能吗?他们会在一段时间后带走所有的记忆,我很确定这就是它崩溃的原因。如何清除播放过的旧F4V?您需要确保播放器、列表中没有指向它的链接。根据您的设置,您可能需要重新构造一点。基本上,我会保留文件名,再加上一张小图片,让人们知道它是什么。我在SWFCA中一次只有一个视频文件,你可以编辑你的帖子并把你的代码放进去。对于youFrame 1,我更容易对其进行分解,它为变量vidReference提供了视频文件名的值:
vidReference=trackToPlay帧2播放:
var nc:NetConnection=newnetconnection();nc.addEventListener(NetStatusEvent.NET_STATUS,netStatusHandler);nc.connect(空);var ns:NetStream=新NetStream(nc);ns.addEventListener(NetStatusEvent.NET_STATUS,netStatusHandler);常量缓冲时间:数字=2;ns.bufferTime=缓冲时间;ns.client=this;ns.播放(参考视频);var vid:Video=新视频();参见附件流(ns);addChild(vid);vid_frame.addChild(vid)这是检测视频何时播放完毕的函数,仍然在第2帧:
函数netStatusHandler(事件:NetStatusEvent):void{switch(event.info.code){case“NetStream.Play.StreamNotFound”:newTrack();break;case“NetStream.Play.Stop”:newTrack();break;}
函数newTrack只是给变量trackToPlay一个值(下一个视频的文件名)。然后说去玩第1帧,这样就可以重新初始化玩家。对象在第2帧中重新声明,这就是问题所在吗?请在原始问题中发布此代码。这样读很痛苦。还包括您的newTrack();功能。