Flash player 休眠模式
偶尔听说Flash Player的休眠模式,从网上查来资料甚少。从Flash Player10.1开始,最小化Flash Player 或者 切换到另一个tab页时,会启动一个休眠模式(sleep?mode),这时不论你的应用设定帧率是多少,在休眠模式都会变为4帧(250ms).个人测试了下IE8 和chrome 23,XP 环境,发现在休眠模式下几乎变为2fps。 ? 官方文档中描述:ActionScript 代码在睡眠模式下继续执行,这与将 Stage.frameRate 属性设置为 4 fps 类似。但是跳过呈现步骤,因此用户看不到该播放器正在以 4 fps 的速率运行。之所以将帧速率选择为 4 fps (而不是 0),是因为该速率允许所有连接保持打开状态(NetStream、Socket 和 NetConnection)。将帧速率切换到 0 fps 会断开打开的连接。之所以将刷新频率选择为 250 毫秒 (4 fps),是因为许多设备制造商使用此帧频率作为其刷新频率。使用此值可以使运行时的帧频率与设备本身保持在同一范围。当运行时处于睡眠模式时,Stage.frameRate 属性将返回原始 SWF 文件的帧速率,而不是 4 fps。运行时进入或退出睡眠模式时,不会调度 ActionScript 事件。 ? 这是Flash?Player10.1的一个内部机制,这个机制可能严重影响Flash Web Game等需要在此模式下仍然继续渲染的项目运行。但是查询了所有的资料也没有找到一个合适的方法去直接禁止此模式,很多网友也献计献策进行了很多尝试,我也对此进行了测试。 ? 1.在你的程序init()时执行一次即可,不必为URLRequest指定参数,原理就是如果Flash Player正在执行声音播放操作则不会启动休眠模式。 ? var sound:Sound = new Sound(new URLRequest("")); sound.play(); sound.close(); ? ?此实验有一定的效果,可以把帧率提高到10fps左右。 2.用js去调用flash里的函数,其实就是用js的timer 频率来保证swf内部的 timer的时间间隔,帧频率没有变化,在休眠模式时还是很低,而且如果非网页版也没有办法啦。 Timer 本来就不是很准确的时间计算,在睡眠模式下它的执行频率很会跟着改变。new Timer(40)的会在休眠模式下变成时间间隔为500毫秒的timer。 总的来说,现在还没有找到能关闭此功能的方法,如果哪位找到了解决方案,欢迎留言。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |