• 周期定时器:一个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();
    }
    

  • 相关阅读:
    python selenium-webdriver 执行js (八)
    python selenium-webdriver 等待时间(七)
    python selenium-webdriver 处理JS弹出对话框(六)
    python selenium-webdriver 元素操作之键盘操作(五)
    python selenium-webdriver 元素操作之鼠标操作(四)
    Jmeter 设置全部变量(十三)
    Jmeter 执行Python代码(十二)
    Jmeter Java Request (十一)
    Jenkins进阶-定时任务(17)
    JMeter 设置间隔时间(十)
  • 原文地址:https://www.cnblogs.com/sevenyuan/p/1817254.html
Copyright © 2020-2023  润新知