zoukankan      html  css  js  c++  java
  • 周期定时器:一个Flash Player10.1中不得不关注的特性

    转自:http://www.riaidea.com/blog/archives/273.html

    在Flash Player 10.1中,Adobe引入了一个全新的Periodic timer定时器概念,它可以改善浏览器中swf内容的CPU使用。在浏览器中的swf文件在不可见状态下(如窗口最小化,隐藏标签tab或页面滚动到swf文件以外的区域)会自动调节以降低资源消耗。(注:之前的Flash Player版本虽然不会渲染图形,但仍然在全速运行AS脚本,音视频编码解码等。)具体改变如下:

    可见状态下:
    1)SWF的帧频frameRate会被限制和校准为Jiffy时间模式(如最高60fps),但是目前的10.1 beta3仍然保留最高120fps的限制,这在正式版中将会被改变。
    2)计时器(AS2中的Interval和AS3中的Timer)也会校准为Jiffy。
    3)LocalConnection也同样会被校准。因此消息从一个swf文件到另一个swf文件至少需要33ms(也有说是40ms)。
    4)Video不会做改变,他们可以在任何帧频下播放而不受影响。

    不可见状态下:
    1)SWF的帧频被锁定为2fps,不进行任何渲染。
    2)计时器(AS2中的Interval和AS3中的Timer)被锁定为最多2次/秒。
    3)LocalConnection也被锁定为最多2次/秒。
    4)Video视频解码(不渲染和显示)只占用CPU空闲时间。
    5)为了兼容音频,当swf中有音频在播放的时候,swf的帧频会被调整为8fps,同样swf中计时器和LocalConnection也做相应调整。

    应该说这个特性非常有利于网络上flash应用的普及,但是也存在着潜在的风险。比如某些情况下,我们的应用程序需要在不可见的时候仍然保持着正常的运转,比如计时器的正确运行,某些事件按时发生,某些下载任务及时进行等等。当swf的帧速下降到2fps的时候,其影响是显而易见的。因此我们需要在swf不可见的时候仍然保持较高或者正常的帧速。目前有两种解决方法:

    利用播放一个音频来使swf在不可见状态下维持8fps:

    var gs:Sound = new GhostSound();
    gs.play(0, int.MAX_VALUE, new SoundTransform(0));
    

    用js的setInterval方法去调用swf的ExternalInterface.addCallback的方法,从而间接实现一些在不可见状态下必须全速运行的一些动作:

    setInterval(callSWF, 50);
    function callSWF()
    {
        var swf=document.getElementById("swfID");
        if(swf)swf.execSomeMethod();
    }
    

  • 相关阅读:
    QT自定义控件插件化简要概述
    wildfly9 配置SSL单向认证/https
    wildfly-9.0.2 web项目部署详细步骤
    SQL Server 2008 数据库日志文件丢失处理方法
    win7 64位系统 pl/sql 无法解析指定的连接标识符解决办法
    mybatis 应用参考
    去除浏览器下jquey easyui datagrid、combotree 缓存问题
    java 页面url传值中文乱码的解决方法
    jasperreports-5.6 + jaspersoftstudio-5.6 生成pdf 文件中文无法正常显示问题
    HTML5实现在线抓拍
  • 原文地址:https://www.cnblogs.com/sevenyuan/p/1817254.html
Copyright © 2011-2022 走看看