`
ch_kexin
  • 浏览: 906601 次
  • 性别: Icon_minigender_2
  • 来自: 青岛
社区版块
存档分类
最新评论

周期定时器:一个Flash Player10.1中不得不关注的特性

 
阅读更多

在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();
}

分享到:
评论

相关推荐

    基于matlab实现的定时器:设定时间通过响铃和弹窗提示.rar

    在MATLAB中,定时器是一种强大的工具,常用于在预设的时间间隔执行特定的函数或任务。本项目“基于matlab实现的定时器:设定时间通过响铃和弹窗提示”是一个实例,它展示了如何利用MATLAB的定时器功能来创建一个简单...

    Qt定时器事件Demo

    在Qt中,定时器事件是一种周期性触发的事件,通常用于执行一些重复性的操作,比如更新UI、定期检查数据等。你可以使用`QTimer`类来创建定时器,并连接定时器事件的处理函数。以下是如何使用Qt的定时器事件的说明和...

    S7-1200 PLC中定时器的特性分析.pdf

    并且,如果在扫描周期的过程中定时器的当前值加上了一个扫描累计的时间间隔,那么定时器的状态更新应发生在扫描周期的开始阶段,而不是在程序行处理时的中间阶段。 在分析定时器特性时,还可以看到S7-1200 PLC支持...

    【STM32】HAL库-使用一个定时器使能另一个定时器-主定时器触发模式demo

    先初始化主模式下的定时器,因为在定时器初始化函数中会手动置位UG(为了保证装载ARR,PSC的影子寄存器),而主模式下TRGO信号来源一开始默认是UG位(TIMx_CR2寄存器中的MSM位)。 如果先初始化从模式定时器3,...

    一个定时器实现多个虚拟定时器具体代码实现

    在IT领域,定时器是一种非常重要的工具,广泛应用于各种软件系统中,如操作系统、网络服务、游戏开发等。虚拟定时器则是对真实物理时钟的一种抽象,它允许开发者创建多个独立的定时任务,每个任务都有自己的定时逻辑...

    Qt中在子线程中调用定时器

    在这个方法中,你可以启动子线程的任务,但并不需要在这里创建定时器。 2. 不指定父对象创建定时器:在子线程的`run()`方法内,创建QTimer实例时,不要为其指定父对象。这样,定时器会自动关联到当前线程(也就是子...

    Qt定时器源码1

    Qt定时器是Qt框架中非常重要的一个特性,它允许开发者在特定的时间间隔内执行特定的任务。这个"Qt定时器源码1"很可能是对Qt定时器功能的一个具体实现示例,可能包含了单次触发和周期性触发两种模式。在本文中,我们...

    S7-1200 脉冲定时器-跟我学 FLASH视频.rar

    脉冲定时器是S7-1200 PLC中的一种重要定时元件,常用于控制精确的时间间隔或周期性的动作,比如步进电机的脉冲驱动、I/O信号的延时触发等。本教程通过"跟我学"的FLASH视频形式,深入浅出地讲解了如何在S7-1200中运用...

    单片机适用的定时器库,可N个虚拟定时器

    "单片机适用的定时器库,可N个虚拟定时器" 提供了一种高效的方法,允许开发者在单片机系统中创建多个独立的定时任务,而只需一个硬件定时器资源。这种技术被称为多路复用或分时复用,它通过时间片轮转的方式实现多个...

    9_1 同一个定时器输出不同频率的PWM(输出比较模式)

    例如,我们可以为一个定时器的CH1设置一个比较值,为CH2设置另一个不同的比较值,那么两个通道就会产生不同周期的PWM信号。 4. **频率设置**:频率由定时器的时钟源和预分频器、自动重载值以及比较值共同决定。时钟...

    最新单片机仿真 用定时器T1中断控制两个LED以不同周期闪烁

    最新单片机仿真 用定时器T1中断控制两个LED以不同周期闪烁最新单片机仿真 用定时器T1中断控制两个LED以不同周期闪烁最新单片机仿真 用定时器T1中断控制两个LED以不同周期闪烁最新单片机仿真 用定时器T1中断控制两个...

    S7-1200 关断延时定时器-跟我学 FLASH视频.rar

    本资源"《S7-1200 关断延时定时器-跟我学 FLASH视频》"是一个专门针对S7-1200 PLC的关断延时定时器操作教程,通过FLASH视频的形式,以直观、生动的方式教授这一关键功能。 关断延时定时器(也称为OFF delay timer)...

    js页面显示多个定时器

    在JavaScript中,定时器是实现延迟执行或周期性任务的关键工具。它们可以帮助我们在网页加载后,在特定的时间点执行代码,或者每隔一定时间重复执行某个功能。本知识点将深入探讨JavaScript中的定时器及其在页面上...

    51单片机实现 定时器计数 数码管显示0到99.rar

    在这个项目中,我们主要关注的是计数模式,通过计数外部脉冲来实现数码管的显示更新。 数码管显示通常采用共阴极或共阳极驱动方式,由多个LED段组成,通过控制每个段的亮灭来显示数字。动态显示则是为了节省IO口...

    vc 定时器 Timer 多媒体定时器 毫秒 ms

    在VC++编程环境中,定时器(Timer)是一个非常重要的组件,它允许程序在特定时间间隔后执行特定的任务。本文将深入探讨VC++中的定时器机制,特别是多媒体定时器(Multimedia Timer),以及如何处理毫秒级的时间精度...

    嵌入式软件实现定时器的两种方式

    1. 定时器管理结构:软件定时器通常需要一个数据结构来存储定时器信息,如定时器ID、超时时间、回调函数等。 2. 定时器链表:为了管理多个软件定时器,可以使用链表结构,每个定时器节点包含定时器信息,按超时时间...

    基于Linux定时器管理器

    `timer_create()`用于创建一个定时器,`timer_settime()`设置定时器的到期时间和周期,`timer_gettime()`获取定时器当前的状态,而`timer_delete()`用于删除不再需要的定时器。 2. 添加定时器: 要添加定时器,你...

    V5-416_RTX实验_定时器组.7z

    在本实验中,我们关注的是实时操作系统(RTOS)FreeRTOS的一个关键组件——定时器。"V5-416_RTX实验_定时器组"是一个关于FreeRTOS与Real-Time eXtension (RTX)库中定时器使用的教学资源。RTX是Keil公司为ARM Cortex-...

    STM32中多定时器工作示例

    在STM32微控制器系列中,定时器是其核心功能之一,广泛应用于各种实时控制、延时、脉冲发生和频率测量等任务。STM32F103型号的芯片内含有多达16个定时器,其中包括高级定时器、通用定时器和基本定时器等多种类型。本...

    BF533 定时器使用

    使用BF533定时器驱动程序进行实际应用,例如创建一个周期性任务,每隔一定时间执行一次。首先,配置定时器为周期性模式,设置好周期时间,然后启动定时器。当定时器到达预设值时,会产生中断,触发相应的中断服务...

Global site tag (gtag.js) - Google Analytics