Flash执行模型之可变跑道

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

转自:http://blogs.adobe.com/xwlin/2010/04/flash_player_101_-_adobe_max_2009_1.html

理解执行模型
执行模型是指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(时间片)。
FLASH游戏渲染技术 FLASH游戏渲染技术 as 游戏开发必备 Flash游戏渲染方法分析 Flash渲染效率提高 Flash游戏素材保存与优化 立即下载

相关推荐

Flash渲染机制

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

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

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

ityuany 1355

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 Player内部机制

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

sysu_2010的专栏 7544

一种基于OpenPose和DNN的跌倒检测软件系统(中文&英文)

学习并实现一种跌倒检测模型,此模型基于OpenPose实现逐帧人体姿态检测,使用DNN识别人体动作。检测方式有在线与离线两种,本文主要测试了离线模式,测试效果较好。

Tongzhou_Li的博客 2645

【DSP】【工程实战】从零构建C6678多核工程:CCS环境配置与启动模式详解

本文详细介绍了在CCS开发环境中从零构建TMS320C6678多核DSP工程的完整流程。内容涵盖KeyStone架构解析、工程创建、基础代码编写、链接命令文件配置、仿真器调试,并重点深入讲解了包括I2C EEPROM在内的多种一级启动模式原理与配置方法,为开发者提供了一套清晰、可复用的实战指南。

weixin_29164185的博客 419

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

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

xzs1210652636的博客 568

《Arduino与LabVIEW开发实战》第2章 LabVIEW基础

第2章 LabVIEW基础 2.1 LabVIEW与虚拟仪器 2.1.1 什么是虚拟仪器 仪器仪表发展方向有很多,其中一个重要方向是将计算机和仪器结合起来。具体来说有两种方式,一种是将微处理器或微控制器嵌入到仪器中,构建智能化的内含嵌入式系统的仪器仪表,这是嵌入式仪器;另一种是将仪器装入计算机中,以通用计算机硬件及操作系统为载体,外配数据采集卡等外部设备,通过编制不同功能的程序,以实现多种仪...

jxgy01的博客 490

强化学习知识总结(一)

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

baidu_37355300的博客 855

使用R语言获取泊松回归模型的事件密度比(Incidence Rate Ratio,IRR)的95%置信区间

在泊松回归模型中,我们通常关注的是自变量对事件发生率的影响,而事件密度比(Incidence Rate Ratio,IRR)可以帮助我们理解不同自变量对事件发生率的相对影响。在本文中,我们将使用R语言来获取泊松回归模型所有系数的事件密度比的95%置信区间。通过以上步骤,我们可以使用R语言获取泊松回归模型所有系数的事件密度比的95%置信区间。为了获取事件密度比的置信区间,我们将使用。使用R语言获取泊松回归模型的事件密度比(Incidence Rate Ratio,IRR)的95%置信区间。

BugCrusher的博客 1264

华为OD机试真题 新系统 9月16号 【统计特殊数字】

华为OD新系统机试真题【统计特殊数字】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题【统计特殊数字】。

qq_45776114的博客 769

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

NVP6324、NVP6188、NVP6158C的区别详解

根据搜索结果,NVP6324、NVP6188、NVP6158C是Nextchip公司推出的不同型号视频处理芯片,主要区别体现在应用场景、功能特性、接口支持及封装规格等方面。如需进一步技术细节(如寄存器配置或开发支持),可参考具体型号的规格书或联系Nextchip代理商。

小灰灰的博客 3004

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

By Xiaowei Lin on April 7, 2010 1:03 AM | No Comments<br />演讲人: Lee Thomason (lthomaso@adobe.com)<br /> 翻译: 林晓伟 (xwlin@adobe.com)<br /><br /> 上一篇我们介绍了Flash Player的代码库是如何归并一体以及对Flash平台的后期开发产生的影响,在第二节里,我们将重点讨论Flash Player的体系结构及其对开发人员的影响。<br

wkyb608的专栏 511

需求跟踪详解

需求跟踪是指在软件项目开发过程中,建立并维护需求与项目各阶段工作产物(如设计文档、代码模块、测试用例等)之间对应关系的过程。它不仅记录需求从提出到实现的完整路径,还能反映需求变更时对各阶段工作的影响范围,是连接用户期望与实际软件开发产出的桥梁。

跟佟格湾一起学习计算机知识吧~ 1423

PCL 计算点云法向量并显示【2026最新版】

PCL计算法向量并显示,用OMP进行计算加速以及法线定向的深层次理解、操作。博客长期更新,本文最近更新时间为:2026年1月28日。

点云侠的博客 32万+

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

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

txiejun的专栏 872

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

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

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

chqj_163的专栏 163

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

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

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

chqj_163的专栏 151

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

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

yeyingsenling的专栏 678

Flash Player 跑道模型 资料汇总

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

小黑的成长记录 167

flash渲染机制

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

weixin_30338743的博客 261

as3 弹性跑道模型

2005年,Ted Patrick发布了一篇伟大的文章《elastic racetrack》。它充当了我多年的参考资料,用于理解一帧内的代码的执行和渲染是如何平稳的处理的。等到了FlashPlayer9和AVM2的面世,我发现弹性跑道模型有了一些变化。此信息是基于我对FashPlayer内部事件和渲染的研究,但整个模型并没有被Adobe公司的工程师证实。弹性跑到模型的基础没变:以一个具体...

acy864266的博客 247
上一篇: 探究 Flex 组件的生命周期
下一篇: Flex开发者必须知道的10件事
narutobing
博客等级 码龄18年 2粉丝 9原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值