Flash Player 10.1内部机制(第二部分)-执行模型之可变跑道

深入解析Flash Player 10.1.102.64版本:功能与应用 Flash Player 10.1.102.64作为该系列软件的一个重要更新,不仅继承了之前的版本功能,还引入了一系列新特性和改进。这一版本在功能增强和用户体验提升方面取得了明显进步,特别是在移动设备上提供了一致的跨平台表现。硬件加速是指使用专门的硬件组件来完成某些计算任务的过程。在视频播放的上下文中,这意味着让图形处理器(GPU)分担中央处理器(CPU)的工作,通过专门的硬件逻辑来处理视频解码、图形渲染以及其他图形相关的计算任务。这样,CPU就可以释放出来处理其他任务,从而提高整体系统的性能。 阅读详情

演讲人: Lee Thomason (lthomaso@adobe.com)
翻译: 林晓伟 (xwlin@adobe.com)

上一篇我们介绍了Flash Player的代码库是如何归并一体以及对Flash平台的后期开发产生的影响,在第二节里,我们将重点讨论Flash Player的体系结构及其对开发人员的影响。

理解执行模型
执行模型是指Flash Player在每一个帧周期中如何执行相应的指令操作。Flash Player后台事实上运行着n多线程,只是AS并没有给开发人员提供多线程编程模型。这意味着从概念上来讲我们要把Flash Player看做是单线程运行实体,有关这一单线程编程模型的优势/劣势的争论从未休止过,我不想对这一具有争议性的问题做过多评论,但请大家记住这一事实。

可变跑道(Elastic Racetrack)
可变跑道是Flash Player的帧执行模型,这个模型描述了在一帧的处理周期中,代码执行和帧渲染的工作是怎样彼此平衡的。Flash Player 9和AVM2对这一模型进行了一些改进,这一信息是基于对事件机制和渲染模型的研究总结出来的,完整的模型尚未被官方公布。

基本的跑道理论没有发生改变,在Flash Player执行一帧的周期里,前一部分时间用于执行代码,剩余时间用于渲染显示列表中的对象。每个执行阶段都可以根据实际需求增加执行时间来执行更多代码或做更多的渲染工作,而跑道的总长度也将相应增长。

elasticracetrackexport.png

在前一模型基础上发生改变的是每一阶段在一个微观周期里的样子以及他们怎样形成一帧。

AVM2是由Flash Player中一个叫做Marshal的元帅级组件所操控,Marshal负责将时间切割成Flash Player工作所依的基本时间片,在这里我希望澄清一下Flash Player的时间片跟swf文件运行时的帧速率没有任何关系,我们将最终看到Flash Player是如何将这些时间片合成为一帧。在Mac OS版Firefox中执行一个由Flex编译得来的swf文件,Marshal通常会将时间切割成19-20毫秒的时间片,时间片大小根据平台和浏览器的不同而存在差异.为方便我们接下来的讨论,我们假定时间片大小为20毫秒,也就是说Marshal每秒钟会产生不超过50个时间片,每个时间片中,五步可能的操作按如下顺序执行:
 

  1. Player事件调度 – 比如Timer事件,鼠标事件,ENTER_FRAME事件,URLLoader事件等等。
  2. 用户代码执行 – 所有侦听上一步相应事件的代码被执行。
  3. RENDER事件调度 – 在用户代码执行期间调用stage.invalidate()会触发这一特殊事件。
  4. 最后的用户代码执行 – 侦听上述第三步特殊事件的用户代码此时被执行。
  5. Player更改显示列表。

marshalledsliceexport.png
Marshal如此反复的执行20毫秒时间片并在运行中决定下一步操作。一个时间片中执行的所有这些操作最终归纳为上述两段式跑道(代码执行,图像渲染)也就是我们所说的一帧。用户代码和失效操作填充在代码执行区,渲染操作填充在跑道的渲染区段。需要指出的是相关操作只能在Marshal预定的时间内发生,如果你的用户代码很短,那么Marshal仍然会在执行完用户代码后等待一段时间然后进入渲染阶段。

为了更好阐述哪些action被如何执行以及可变跑道如何被创建,请参考如下示例,分别描述了以5fps, 25fps和50fps帧速率工作的swf中时间片是如何被处理的。

framemarshalingexport.png
以上示例可以看出,不同的帧速率下,一个帧周期中的可变跑道会执行不同操作,例如对于5fps的swf,每帧处理10个用户action,1个失效action,1个渲染action;帧速率25fps的swf,每帧处理2个用户action,1个失效action,1个渲染action;对于50fps的swf,每帧只能处理1个用户action,1个失效action,1个渲染action。需要指出的很重要的一点是,某些事件只可能能发生在某些特定的时间片里,比如,Event.ENTER_FRAME事件只能在某一帧的初始时间片中被调度。

  1. 一个时间片中代码部分和渲染部分都有可能过长而导致相应时间片大于20毫秒,这就是”可变”的含义,为了保证帧的播放速率仍然接近swf编译时设定的帧率,Marshal会选择丢掉一些时间片。
  2. swf文件的播放速率不可能超过当前Flash Player切割时间片的速率,你可以为swf文件设定120fps的播放速率,但Flash最多可以按照50帧的速度播放(具体数值取决于当前系统的设置)。
  3. 代码的执行频率可能比swf的帧率更高,播放一个1fps的swf文件,播放一帧时间为1秒,也就是50个时间片,但在每个时间片里,都会有触发鼠标或计时器事件,尽管只有最后一个时间片才会渲染,另外你可以选择通过调用函数updateAfterEvent() 提前渲染,但只能在鼠标,计时器和键盘事件处理函数中调用。在这种情况下,Marshal会认为当前帧已结束并从下一个时间片起进入下一帧。 最后,如果一个Sprite的外观属性比如width,height等发生变化而将鼠标从该Sprite上方掠过,Flash会进行强制渲染。
  4. 如果帧率不是每秒时间片数量的整数因子,那么该平台的渲染时间间隔将变得不固定,比如帧率20fps的swf运行在50个时间片每秒的系统上,Flash Player的行为将是每5个时间片播放两帧,那swf的渲染频率将是2-3-2-3-2-3(时间片)。

COMMENTS

  • By Lemonade Diet - 4:31 PM on August 28, 2010   Reply

    Its a pity that Apple no longer allows flash applications to be delivered to the iphone and ipad. Flash is an excellent development technology and legal issues should no be imposed to the advancement of development in technology.

  • By lemonade diet - 3:09 AM on December 12, 2010   Reply

    I have been checking out the master cleanse for a while now and this page really helped me, thank you!

源地址:http://blogs.adobe.com/xwlin/2010/04/flash_player_101_-_adobe_max_2009_1.html

 

racetrack:表格式强化学习代理的环境 蒙特卡洛赛车场 这是Racetrack环境和蒙特卡洛代理的实现,如Sutton and Barto的《强化学习:简介》第5章中所述。我的代理可以解决书中提出的问题,并且我将进一步尝试增加环境的难度。 环境 本书推荐了两种环境(第二和第三张图片),我又添加了一个用于调试。 第三种环境比第二种更大,但实际上更容易解决。 赛车从底部开始,应尽可能快地移至终点(位于右上角)。 for track in track_1 track_2 track_3; do python -m scripts.show_racetrack "$track" --save-path "images/$track.svg"; done 结果 原始问题 在最初的问题中,当汽车试图离开赛道但情节没有终止时会受到处罚。 取而代之的是,将赛车放回到赛道上,环境确保赛车始终向终点移动至少一个正方形。 而且,汽车只能移动到 立即下载

相关推荐

FLASH游戏渲染技术

FLASH游戏渲染技术 as 游戏开发必备 Flash游戏渲染方法分析 Flash渲染效率提高 Flash游戏素材保存与优化

执行模型之可变跑道(Elastic Racetrack)

理解执行模型 执行模型是指Flash Player在每一个帧周期中如何执行相应的指令操作。Flash Player后台事实上运行着n多线程,只是AS并没有给开发人员提供多线程编程模型。这意味着从概念上来讲我们要把Flash Player看做是单线程运行实体,有关这一单线程编程模

ityuany 1355

Flash渲染机制

做了那么久Flash开发,还不知道Flash底层的渲染机制是怎样的?开发过程中,经常碰到掉帧甚至直接卡死白屏的问题吗?来听听这堂课,希望可以给你一个清晰的印象和实用的优化思路。

Flash Player内部机制

1. Flash 运行时用C++、汇编语言和ActionScirpt编写发布的Flash Player版本向前兼容一切归结为核心周期。。。2. 核心周期事件、用户代码、运行时环境和输出相当于Flash Player(其实是不只这些,还有通信),而Flash Player嵌入到浏览

sysu_2010的专栏 7544

RacetrackDay.rar

《深入浅出C#》中第一个实验的代码及实现。可以通过运行该代码来看到程序运行时的具体效果。完整的实现了书中未实现的部分,可以帮助读者较好的理解书中前四章的内容及应用。

本地部署大模型 vs 网页版大模型区别

fill:#333;color:#333;color:#333;fill:none;本地服务器/工作站硬件资源私有化部署GPU集群高速存储模型文件训练框架推理引擎。

Ds-Rag的博 1712

基于“蘑菇书”的强化学习知识点(十三):第三章的代码:MonteCarlo.ipynb及其涉及的其他代码的更新以及注解(gym版本 >= 0.26)(一)

第三章的代码:MonteCarlo.ipynb及其涉及的其他代码的更新以及注解(gym版本 >= 0.26)

xzs1210652636的博客 568

5G MBS(组播广播服务)深度解析:从标准架构到商用实践

5G MBS(组播广播服务)深度解析:从标准架构到商用实践

大家好,我是码农老gou,一名专注于编程技术的程序员。在这个博客中,我将与大家分享我在工作和学习中的经验、见解以及一些实用的技术干货。 1082

强化学习知识总结(一)

本篇主要是对这段时间以来我在科学网上发的一些强化学习相关的文章进行一个大汇总(Sutton书1-8章内容)。作为对强化学习Tabular方法的一个简单指导性的目录,本篇也会提供之前讨论过的强化学习中的经典问题实现的代码与相关的图表分析的源文件。   K-level 相关文章: 【RL系列】Multi-Armed Bandit问题笔记 【RL系列】Multi-Armed Ban...

baidu_37355300的博客 855

Clion编译stm32cube初始化工程时non constant or forward reference address expression for section .ARM.extab报错

相信应该有同学在看了稚晖君关于clion开发stm32的文章之后也想在自己PC上实现“优雅の嵌入式开发”遇到和我类似的问题。他的文章是22年写的,我个人猜测应当是版本更新导致的不适配。意思就是说 READONLY 只能在gcc11以后的版本中使用,gcc10及以前的版本将无法正确识别,也就有如下错误。或者就可以将gcc升级至最新的版本。记得在clion工具链中修改c,cpp编译器的位置。可以将文本括号中的 READONLY 全部删除。当时由于没有注意到这行注释导致在这里卡了好久。

2301_77256849的博客 2512

OTFS从零开始11 10

未来的无线网络有望提供全球覆盖,因此需要支持在恶劣环境下的各种新兴应用,例如飞机上的移动通信(MCA)、低地球轨道(LEO)卫星通信、车对车(V2V)通信、高速铁路(HSR)通信、无人驾驶飞机(UAV)通信和水下声学通信(UAC)。在这些恶劣环境中的无线信道通常被视为对通信不友好,其特点是严重的延迟和多普勒扩散,以及有限的路径寿命等。这些不利于通信的特性使目前移动网络中广泛采用的正交频分复用(OFDM)调制的性能恶化。

qq_46009045的博客 9855

Flash Player内部执行机制

参考地址: 1).[url]http://ted.onflash.org/2005/07/flash-player-mental-model-elastic.php[/url] 2).[url]http://www.senocular.com/flash/tutorials/asyncoperations/[/url]

Justin 199

LDRA Testbed软件静态分析_操作指南

从本文起,将开始LDRA Testbed(TBrun)教程的系列文章,包括软件静态分析、单元测试、集成测试,以及基于Testbed的自动化工具开发、持续集成、常见问题解答等。LDRA公司是专业的软件测试工具与测试技术、咨询服务提供者,其总部位于英国利物浦。其旗舰产品Testbed/TBrun功能全面、易于使用,不仅适合于主机平台软件测试,同时适合于嵌入式软件测试。不仅能进行软件静态测试,还能进行软件单元测试、软件集成测试,在白盒测试领域运用比较广泛。

文章主要涉及嵌入式软件开发、测试、项目管理等,欢迎交流,共同进步。 1万+

Flash Player 10.1内部机制(第二部分) - 执行模型之可变跑道

原文地址:http://blogs.adobe.com/xwlin/2010/04/flash_player_101_-_adobe_max_2009_1.html演讲人: Lee Thomason (lthomaso@adobe.com)翻译: 林晓伟 (xwlin@adobe.com)上一篇我们介绍了Flash Player的代码库是如何归并一体以及对Flash平台的后期开发产生的影响,在

一个技术的优快云博客 4245

Transformer实战(1)——词嵌入技术详解

词嵌入的核心思想是,通过将词语表示为稠密的向量,使得计算机可以更有效地处理和理解文本中的语义关系。在本节中,我们学习了单词分布式表示的概念及其实现,包括静态嵌入和动态嵌入,实现了 Word2Vec 和 GloVe 模型,并介绍了如何使用 Gensim API 探索嵌入空间。

盼小辉丶的博客 1万+

零基础学习simulink-- 四旋翼和六旋翼无人机的建模与动力学分析

通过上述代码实现,您可以逐步创建和搭建一个多旋翼无人机(如四旋翼、六旋翼)的动力学模型,并结合自适应控制器进行仿真。该模型不仅考虑了无人机的基本动力学行为,还引入了空气阻力、螺旋桨之间的相互作用以及气流干扰等复杂效应,使得仿真结果更加接近实际情况。Simulink 提供了强大的建模和仿真工具,使得控制系统工程师能够快速构建复杂的控制算法,并将其应用于实际工程中。多旋翼无人机动力学建模:建立四旋翼和六旋翼无人机的动力学模型,包括平移运动和旋转运动方程。升力和扭矩模型。

amy_mhd的博客 388

Flash Player 10.1内部机制(第二部分) – 执行模型之可变跑道

演讲人: Lee Thomason (lthomaso@adobe.com)翻译: 林晓伟 (xwlin@adobe.com)上一篇我们介绍了Flash Player的代码库是如何归并一体以及对Flash平台的后期开发产生的影响,在第二节里,我们将重点讨论Flash Player的体系结构及其对开发人员的影响。理解执行模型执行模型是指Flash Player在每一个帧周期中如何执行相应的指令操作。...

chqj_163的专栏 151

Vue3 - 超详细最新 wangEditor V5 富文本编辑器安装引入及使用教程,提供工具栏配置、基础富文本功能、API使用示例教程等(新手小白快速引入并植入到项目中)

vue3,wangEditorv5富文本编辑器,wangEditorv5官方文档,vue3最新安装wangEditorv5富文本详细使用教程,vue3使用wangEditorv5编辑器示例代码,vue3网站网页安装植入富文本编辑器教程,vue3wangEditor使用api,vue3安装富文本控制台出现报错如何解决,vue3wangEditor-v5工具栏配置,vue3中使用富文本编译器wangEditor5的方法,wangeditor5在vue3中的全使用过程,vue3超详细最新wangedi

🏆 前端领域优质创作者 4253

Flash执行模型之可变跑道

转自:http://blogs.adobe.com/xwlin/2010/04/flash_player_101_-_adobe_max_2009_1.html 理解执行模型 执行模型是指Flash Player在每一个帧周期中如何执行相应的指令操作。Flash Player后台事实上运行着n多线程,只是AS并没有给开发人员提供多线程编程模型。这意味着从概念上来讲我们要把Flash Pla

narutobing的专栏 737

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Flash Player 跑道模型 资料汇总

转自http://www.cc-space.com/?p=1326POSTED BY ADMIN | FILED UNDER RIA相关演讲人: Lee Thomason (lthomaso@adobe.com)翻译: 林晓伟 (xwlin@adobe.com)地址:http:/

xiaoniba1024的专栏 877

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

[转]Flash Player 执行模型之可变跑道

本站文章除注明转载外,均为本站原创或者翻译。本站文章欢迎各种形式的转载,但请18岁以上的转载者注明文章出处,尊重我的劳动,也尊重你的智商;本站部分原创和翻译文章提供markdown格式源码,欢迎使用文章源码进行转载;本文标题:[转]Flash Player 执行模型之可变跑道本文链接:http://zengrong.net/post/1365.htm本文源码原文地址:http://blogs.ad...

chqj_163的专栏 163

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

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

>定性 它在FlashPlayer范畴内被定义,是AVM2(ActionScript Virtual Machine)用来解释并运行swf文件的机制、原理。   >理解它有什么用? FlashPlayer是swf文件的运行环境和执行引擎。 理解FlashPlayer的机制和原理当然意义重大,着眼于Flex的话,“弹性跑道模型”是理解Flex程序生命周期和组件架构的重要基础。   >“

tiangej的专栏 2935

Flash Player内部机制 – 执行模型之可变跑道--非常值得一看

序:这段时间正在整理AS3的教学资料,让我回想起工作和面试中出现的很多问题,这些问题直接或间接 的影响了程序员在工作中的编码品质,且在各类教学的资料中也未提及,很多公司的游戏框架和编码规 范中也未对代码品质进行严格约束,导致很多程序员工作时一味的堆代码,代码臃肿、调用随意、模块 混乱、效率质量不可控已是很多游戏公司技术管理人员头疼的问题; 从今天这一篇开始会慢慢收纳和整理关

yeyingsenling的专栏 678
上一篇: 为你的ActionScript项目创建API文档
下一篇: ASDoc生成Flex API Document
txiejun
博客等级 码龄19年 55粉丝 24原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值