Flash player 休眠模式

本文探讨了FlashPlayer10.1及以后版本中的休眠模式特性,详细介绍了该模式如何影响帧率,并提供了两种应对策略。一种是通过声音播放避免进入休眠模式,另一种是利用JavaScript定时器维持SWF文件的定时器间隔。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

偶尔听说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。


总的来说,现在还没有找到能关闭此功能的方法,如果哪位找到了解决方案,欢迎留言。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值