并非SleepMode之错——IE9对Flash Player的影响

Flash Player从版本10.1开始加入了Sleep Mode(睡眠模式),具体表现为在浏览器中的Flash Player窗口不可见(最小化、被完全遮挡,或被滚动条带到不能显示的地方)时,自动将帧率降低到4帧/秒。我原来也写过一篇文章介绍FPS对Socket链接的影响

睡眠模式给游戏开发者带来很大的麻烦,但并非不可解决。目前最常用的两种解决方式是这样:

  1. 在JS中写一个计时器,每隔一段时间调用SWF提供的方法,可以避免进入睡眠模式;
  2. 在swf中播放一段不间断的声音,可以让帧频维持在8帧/秒。

但是,即使是使用了这两种方法,在IE9中,依然会受到“睡眠模式”的影响! 而且,这个“睡眠模式”的提供者是IE9,我们无法绕过。

就目前我测试得到的情况,IE9对Flash Player有如下影响:

  1. 在IE9窗口最小化时,会自动切断音视频流;
  2. 在IE9窗口最小化时,会自动切断客户端与服务器的通信,但不会切断连接。

测试环境:

  • Windows 7 旗舰版
  • Internet Explorer 9
  • Flash Player 10.3.181.34 标准版+Debug版

开发环境:

  • 客户端:Flex SDK 4.5.1
  • 服务端:Flash Media Server 4.0

以上结论是只测试了FMS为服务器的情况,没有测试Socket的情况,想来应该没什么区别。

网上搜了一通,没有什么中文资料,但在Microsoft Answer上找到 这样一篇文章 。我想中文资料少的原因可能是国内的开发者都不太愿意转到Win7环境,而导致无法升级IE9,所以碰不到这个问题。

上文中也说到一个解决办法,由于公司电脑无法装IE9,我暂时还没有测试:

测试了,这方法没用。

See if this fixes the Flash/IE9 problem. From Safety (on the IE Command Bar) uncheck) ActiveX filtering.