再说FlashPlayer的“弹性跑道模型”
>定性 它在FlashPlayer范畴内被定义,是AVM2(ActionScript Virtual Machine)用来解释并运行swf文件的机制、原理。 ? >理解它有什么用? FlashPlayer是swf文件的运行环境和执行引擎。 理解FlashPlayer的机制和原理当然意义重大,着眼于Flex的话,“弹性跑道模型”是理解Flex程序生命周期和组件架构的重要基础。 ? >“弹性跑道模型”不是Adobe官方给出的说法 技术是有价值的,核心技术更是如此。 FlashPlayer不开放源代码,属于Adobe公司私有财产。出于各种商业目的,并不开放FlashPlayer的原理和核心技术,自然,对“弹性跑道”的解释也是非官方的技术专家们的个人定义和分析。 类似能够提出“弹性跑道模型”概念的人都是技术大牛中的大牛,这些概念经过广为传播和不断被验证,我们有理由相信:它是正确的概念。 反正我是信了。 ? >什么是“弹性跑道模型”? 大家在搜索引擎上查找关键字“flashplayer 弹性跑道”,有很多文章在解释它。 这里不再重复。 在对其有一些理解之后,我尝试说明这个概念: ? FlashPlayer拿着播放头行走在时间轴之上,沿途处理很多事情,路过一帧又一帧。 每当一帧即将走完,FlashPlayer就要做些总结性工作(一次性地汇总变化),把这一帧当中发生的变化拿出来展示(渲染)一下。 如果它处理的事情少,工作轻松,那么它行走的速度是均匀的,也就是说走过每一帧花费的时间都基本相同。 如果某一帧的沿途中处理的事情很多,很麻烦,那么花在其上的时间就会变长。 如果某一帧的展示(渲染)工作很沉重,那么花在其上的事件也会变长。 于是乎,走过不同帧所花费的时间将变得不再相同。 ? FlashPlayer在路上做着反复性的工作,就像田径“跑道”那样,周而复始。每一帧的路途就是一圈轮回。 而每一圈花费的时间不同,如果用时间来度量跑道,这个跑道就像具有“弹性”,某段路(沿途处理事件或渲染)会拉长。 ? 你看,FlashPlayer很聪明: 他知道通常帧和帧之间的时间距离很短,只有1/24秒(FlashPlayer默认桢频是24)。对于计算机来说这点时间长的真是长的不得了,而对于人类而言,人眼对于1/24秒内发生的变化都会“视而不见”(人眼的视觉暂留特点)。 于是FlashPlayer有效率地安排了自己的工作,在1/24秒(每帧)快结束之前发生的若干次变化就让它变化去吧,只有1/24秒(每帧)快结束的档口才一次性地把期间发生 的变化进行汇总,然后渲染到屏幕上,让人眼看到变化。 要知道1/24秒的时间足够CPU进行上亿次的计算。所以让我们称赞一下FlashPlayer:你太有才了! ? >后续言 “弹性跑道模型”的文章中涉及到其他很多概念,比如“时间片”等。 我认为上述内容是主干,其它都是围绕其周围的衍生概念。 知识是被研究和发掘出来的,一家之言定有不足之处。 “弹性跑道模型”是非常重要的概念,我等应该更多去琢磨它。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |