找回密码
 用户注册

QQ登录

只需一步,快速开始

查看: 4287|回复: 0

再说FlashPlayer的“弹性跑道模型”

[复制链接]
发表于 2012-1-31 12:35:43 | 显示全部楼层 |阅读模式
>定性
它在FlashPlayer范畴内被定义,是AVM2(ActionScript Virtual Machine)用来解释并运行swf文件的机制、原理。

>理解它有什么用?
FlashPlayer是swf文件的运行环境和执行引擎。
理解FlashPlayer的机制和原理当然意义重大,着眼于Flex的话,“弹性跑道模型”是理解Flex程序生命周期和组件架构的重要基础。

>“弹性跑道模型”不是Adobe官方给出的说法
技术是有价值的,核心技术更是如此。
FlashPlayer不开放源代码,属于Adobe公司私有财产。出于各种商业目的,并不开放FlashPlayer的原理和核心技术,自然,对“弹性跑道”的解释也是非官方的技术专家们的个人定义和分析。
类似能够提出“弹性跑道模型”概念的人都是技术大牛中的大牛,这些概念经过广为传播和不断被验证,我们有理由相信:它是正确的概念。
反正我是信了。

>什么是“弹性跑道模型”?
大家在搜索引擎上查找关键字“flashplayer 弹性跑道”,有很多文章在解释它。
这里不再重复
在对其有一些理解之后,我尝试说明这个概念:

FlashPlayer拿着播放头行走在时间轴之上,沿途处理很多事情,路过一帧又一帧。
每当一帧即将走完,FlashPlayer就要做些总结性工作(一次性地汇总变化),把这一帧当中发生的变化拿出来展示(渲染)一下。
如果它处理的事情少,工作轻松,那么它行走的速度是均匀的,也就是说走过每一帧花费的时间都基本相同。
如果某一帧的沿途中处理的事情很多,很麻烦,那么花在其上的时间就会变长。
如果某一帧的展示(渲染)工作很沉重,那么花在其上的事件也会变长。
于是乎,走过不同帧所花费的时间将变得不再相同。

FlashPlayer在路上做着反复性的工作,就像田径“跑道”那样,周而复始。每一帧的路途就是一圈轮回。
而每一圈花费的时间不同,如果用时间来度量跑道,这个跑道就像具有“弹性”,某段路(沿途处理事件或渲染)会拉长。

你看,FlashPlayer很聪明:
他知道通常帧和帧之间的时间距离很短,只有1/24秒。对于计算机来说这点时间长的真是长的不得了,而对于人类而言,人眼对于1/24秒内发生的变化都会“视而不见”。
于是FlashPlayer有效率地安排了自己的工作,在1/24秒(每帧)快结束之前发生的若干次变化就让它变化去吧,只有1/24秒(每帧)快结束的档口才一次性地把期间发生
的变化进行汇总,然后渲染到屏幕上,让人眼看到变化。
要知道1/24秒的时间足够CPU进行上亿次的计算。所以让我们称赞一下FlashPlayer:你太有才了!

>后续言
“弹性跑道模型”的文章中涉及到其他很多概念,比如“时间片”等。
我认为上述内容是主干,其它都是围绕其周围的衍生概念。
知识是被研究和发掘出来的,一家之言定有不足之处。
“弹性跑道模型”是非常重要的概念,我等应该更多去琢磨它。
作者:tiangej 发表于2012-1-31 0:06:36 原文链接

您需要登录后才可以回帖 登录 | 用户注册

本版积分规则

Archiver|手机版|小黑屋|ACE Developer ( 京ICP备06055248号 )

GMT+8, 2024-11-23 16:04 , Processed in 0.013119 second(s), 5 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表