Flash Player的帧执行模型

Flash下载混淆解析:从Flash Player怀旧到嵌入式程序烧录 Flash技术概念在计算机领域存在多重含义,其核心原理涉及数据存储与多媒体运行。在技术价值层面,Flash既指Adobe公司已停止支持的网页动画运行时,也指嵌入式系统中用于存储程序代码的非易失性存储器。从应用场景看,前者关联历史遗留的网页内容访问需求,后者则是单片机开发中程序烧录的关键环节。本文聚焦于这两个高频搜索方向:针对Flash Player的历史遗留需求,探讨如何通过Ruffle模拟器等安全方案实现内容访问;针对嵌入式开发中的“Flash Download failed”错误,提供从硬件连接到算法配 阅读详情

SWF文件由一系列有顺序的“帧”构成,“帧”中包含编译后的ActionScript字节码以及所需的数据,比如图像、声音和视频。Flash Player按照“帧”的先后顺序,“试图”以固定的频率执行每一帧上的代码,以显示图形或者播放动画及语音。

Flash Player播放每一帧时,都按以下步骤进行:

1)Flash Player发出事件(Event)。这些事件包括由Timer、Mouse、ENTER_FRAMES、URLLoader等对象所发出的事件。

2)用户代码被执行。在这个阶段执行所有侦听第一步中Flash Player发出的事件的代码。这里的用户代码指的是ActionScript虚拟机以外的由开发者所编写的代码。在这里,Flex SDK也属于用户代码。

3)RENDER事件被派发。RENDER事件的派发是由用户代码中调用flash.display.Stage对象的invalidate()方法所引起的,Stage(舞台)是Flash中显示对象的根容器。invalidate()只是告知Flash Player当前的显示列表已经发生变化或者说已经失效,该方法不直接派发RENDER事件,而是由Flash Player在渲染显示列表之前检查显示列表是否失效。如果显示列表已经失效,则会在渲染新显示列表前派发RENDER事件,给用户代码最后的执行机会。

4)最后的用户代码被执行。侦听第三步RENDER事件的代码在此处被执行,这是用户代码在渲染显示列表前最后更改显示列表的机会。在此阶段,用户代码调用Stage对象的invalidate()方法则不会再派发新的RENDER事件。

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
			   xmlns:s="library://ns.adobe.com/flex/spark" 
			   xmlns:mx="library://ns.adobe.com/flex/mx"
			   addedToStage="onAddToStage(event);" minWidth="955" minHeight="600">

	<fx:Declarations>
		<!-- Place non-visual elements (e.g., services, value objects) here -->
	</fx:Declarations>
	<fx:Script>
		<![CDATA[

			private function onAddToStage(event:Event):void
			{
				this.stage.frameRate = 1;
				
				this.stage.addEventListener(Event.RENDER, onRender);
				
				this.addEventListener(Event.ENTER_FRAME, onEnterFrame);
				
			}

			private function onEnterFrame(event:Event):void
			{
				trace("enter next frame");
				/**
				 * 如果去掉注释,就会导致RENDER事件的派发
				if(this.stage)
				{
					this.stage.invalidate();
				}
				 */ 
				
			}

			private function onRender(event:Event):void
			{
				trace("before render event");
				//在此处调用stage.invalidate()不会再派发RENDER事件
				if(this.stage)
				{
					this.stage.invalidate();
				}
			}
			
			
			
		]]>
	</fx:Script>
	<s:Button label="haha" />
</s:Application>

Flash Player渲染出最新的显示列表。渲染显示列表的过程中不会有任何用户代码被执行,这是一个黑箱操作,开发者无法参与。

Flash执行一帧的整个过程如下图所示。


Flash执行每一帧所经历的三个阶段:(User Action)用户动作阶段、(Invalidate Action)失效动作阶段、(Render Action)渲染动作阶段。

根据SWF文件规范,每个SWF文件中都设定了帧的播放频率,简称FPS(Frames Per Second)。如果应用中某帧的ActionScript代码执行量较大,消耗较多CPU时间,Flash Player会不会为了保证FPS而漏掉该帧的一些执行代码呢?答案是Flash Player 是不会漏掉帧中任何需要执行的代码和任何需要渲染的图形的。Flash Player可以看成一个弹性的跑道,执行AS代码和渲染图形是跑道上两个阶段,正常情况下,Flash Player按照SWF文件中的FPS设置去执行每一帧,当某帧中代码执行时间与渲染图形时间之和超过FPS设定的时间,那么执行一帧的时间就会超过FPS设定的时间,如同跑道发生了变形。如下图。


因此SWF文件中设定的FPS是开发者期望的最大帧播放速度,而不是帧的实际播放速度,帧的实际播放速度小于或者等于FPS。


Note: addedToStage触发时机为将显示对象添加到舞台显示列表或者将包含显示对象的子树添加至舞台显示列表,实际上调用以下方法会触发此事件:DisplayObjectContainer.addChild和DisplayObjectContainer.addChildAt(),估计spark组件的addElement和addElementAt()应该也是调用了前者。

Event.RENTER_RRAME事件,播放头进入新帧时调度,如果播放头不移动,或者只有一帧,则会继续以帧速率调度此事件。

Event.RENDER,将要更新和呈现显示列表时调度,更改的最后机会,如果希望调用render事件,必须调用Stage对象的invalidate方法

Adobe Flash Player多媒体播放器深入解析 Adobe Flash Player是一个跨平台的多媒体播放器,主要用于播放动画和交互式内容。它最初由Macromedia公司开发,并在2005年被Adobe公司收购。早期,Flash Player几乎在所有上网设备中普及,因其支持矢量图形、动画和音频,成为了网页设计的主流技术。Adobe Flash Professional,曾是业界广泛使用的一款矢量图形编辑软件,它允许动画师和设计师创建动画、游戏、应用程序以及其他交互式内容。 阅读详情

相关推荐

解决Flash Player ActiveX插件注册失败问题指南

在安装Flash Player ActiveX插件过程中,用户常常会遇到“注册失败”这一典型错误。此类问题多表现为安装程序提示“Error 1935”、“无法注册Flash.ocx”或“HRESULT 0x80070005”等错误信息。这些问题直接影响浏览器中Flash内容的加载与运行,尤其在依赖Flash的企业应用或旧版网页中表现尤为明显。注册失败的原因复杂多样,可能涉及系统权限不足、注册表损坏、文件冲突或防病毒软件拦截等。理解这些常见现象及其背后的技术原理,是有效排查与解决问题的前提。

weixin_32102617的博客 1965

Flash AS3学习之路—时间事件及帧循环

 在AS2中我们一般用于时间控制的函数有setInterval与setTimeOut,当然还可以通过帧循环enterFrame来控制时间,当然enterFrame控制的时间精准度并不是很高。虽然我们在as3中还可以用setInterval与setTimeOut进行控制,但AS3存在着一个专门用于管理时间的Timer类及时间事件管理的TimerEvent类。一、下面我们来看一个实例,通过文档类在

懒羊的技术窝[anchor] 4529

企业微信-审批控件中的外部选项的应用全流程完美解决方案

完美解决企业微信所有JS-SDK调用问题 完美解决苹果和PC端不适配的问题

qq_45195039的博客 5871

flashplayer 帧执行模型

flash player 帧执行模型

qutin的专栏 435

C语言新手必练:10个实战小项目带你快速上手(附完整代码)

本文为C语言初学者精选10个实战项目,从基础的温度转换器到高级的迷宫求解算法,涵盖输入输出、条件判断、循环控制、数组操作等核心知识点。每个项目配有完整代码和详细解析,帮助新手通过实践掌握编程思维,特别适合刚学完语法但缺乏实战经验的学习者。

weixin_29208077的博客 746

VS2022+Qt6保姆级环境配置指南:从插件安装到项目互通全流程

本文提供VS2022与Qt6深度整合的全流程指南,涵盖环境配置、插件安装、项目互通等关键步骤。详细解析编译器版本匹配、跨IDE协作方案及效能优化技巧,帮助开发者高效搭建C++界面设计开发环境,实现软件项目无缝互通。

zero1的博客 733

unity3d 中动画的帧事件

代码事件监听using UnityEngine;using System.Collections;public class BoxEventScript : MonoBehaviour { void Start () { AnimationClip gunMove = animation.GetClip("left");//动画名 AnimationEvent aevent = new Anima

xfnjlove的专栏 2528

CentOS 7下Synopsys DC综合工具安装与配置全攻略(附常见报错解决方案)

本文详细介绍了在CentOS 7操作系统上安装与配置Synopsys Design Compiler(DC)综合工具的完整流程。内容涵盖从系统环境准备、软件安装、许可证配置到实战综合的全过程,并针对DC综合工具在安装和运行中常见的报错问题提供了具体的解决方案,帮助数字IC设计初学者快速搭建稳定的EDA学习环境。

weixin_29159441的博客 257

Flash Player内部机制

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

sysu_2010的专栏 7544

YOLOv10改进策略【Neck】| arXiv 2025 分层多头注意力HMHA 子空间拆分提多样 + 通道重排降冗余,强化目标检测精度

HMHA(Hierarchical Multi-Head Attention,分层多头注意力)旨在解决传统多头注意力(MHA)在图像恢复任务中的核心缺陷——特征冗余。传统MHA将通道均匀拆分给各个头,导致不同头学习的子空间信息相似,进而出现多头关注同一区域、忽略退化区域修复的问题,限制了模型的特征表达能力。HMHA通过“分层子空间拆分+通道重排序”策略,让每个头学习差异化、互补的上下文特征,从根源上缓解冗余,提升图像恢复任务中对复杂退化场景的特征捕捉能力。

Limiiiing的博客 104

C#【通用方法】字节数组添加、移除、获取的方法类(妙用List<byte>,开发中常用)

C#【通用方法】添加移除字节的方法类(妙用List,开发中常用)

星Yeah 的博客 3359

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

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

txiejun的专栏 872

Visual Studio 2022+Qt6.5.3安装教程+环境配置+创建Qt项目+乱码插件+运行很完美(16岁孩子也能看懂)

Visual Studio 2022+Qt6.5.3安装教程+环境配置+创建Qt项目+乱码插件+运行很完美(16岁孩子也能看懂)

Qt历险记,专注Qt技术,三年医疗设备研发经验,1年机器视觉研发经验,半年柔性传感研发经验。 1190

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

基于Simulink的间接功率控制的矩阵变换器

通过上述步骤,我们成功设计并实现了基于 Simulink 的间接功率控制的矩阵变换器仿真模型。该模型能够通过控制输入电流和输出电压,实现对功率的间接控制,适用于电机驱动、可再生能源系统、电力传输等领域。通过虚拟场景仿真、参数优化和性能评估,验证了系统的稳定性和高效性,并通过调整 PI 控制器参数和优化调制算法,进一步提升了系统的性能。

MHD0815的博客 296

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

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

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

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

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

chqj_163的专栏 151

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Updated ‘Elastic Racetrack’ for Flash 9 and AVM2

from: http://www.craftymind.com/2008/04/18/updated-elastic-racetrack-for-flash-9-and-avm2/ Updated ‘Elastic Racetrack’ for Flash 9 and AVM2 In 2005 Ted Patrick posted a great article on the frame e...

Flash Flex AIR 3D 172

Flash Player的工作模型

Flash Player的工作模型Flash Player主要由两大部件组成,如图1-4所示。 (点击查看大图)图1-4   Flash Player的构成顾名思义,ActionScript虚拟机负责执行编译后的ActionScript字节码,而图形渲染引擎则用来绘制“显示列表”

xiaoniba1024的专栏 1184

FlashPatch:让Adobe Flash Player游戏在2021年后重获新生的终极工具

FlashPatch是一款强大的工具,能够修改计算机上的Flash Player安装,让你在2021年1月12日之后依然可以在浏览器中畅玩Adobe Flash Player游戏。它为喜爱Flash游戏的玩家提供了继续享受经典游戏的机会,是一款不可或缺的实用工具。 ## 为什么需要FlashPatch? 随着Adobe在2021年停止对Flash Player的支持,许多经典的Flash游戏面

gitblog_00270的博客 1039

Flash Player 的 帧刷新率

原始文献 Rich Internet Applications with Adobe Flex & Java

.::树::. 1432

Adobe Flash,Flash Player和RTMP之间的关系

Flash player是一款浏览网页上嵌入的Flash动画、视频的播放插件,而Adobe Flash是制作动画的软件,这两个的职能是不一样的,所以即使是废除了Flash Player以后也不影响Adobe Flash的使用。RTMP是Flash Player默认支持的流媒体传输协议,Flash Player内置了RTMP协议栈,可以直接播放RTMP流媒体,Flash开发的应用可以方便地使用RTMP进行实时音视频传输。总的来说,RTMP是为Flash开发的核心协议,两者在流媒体领域长期密切配合。

ThinPikachu的博客 1045

【转】Flash Player的工作模型

1.4 Flash Player的工作模型 Flash Player主要由两大部件组成,如图1-4所示。 (点击查看大图)图1-4 Flash Player的构成 顾名思义,ActionScript虚拟机负责执行编译后的ActionScript字节码,而图形渲染引擎则用来绘制“显示列表”(Display List)中的图形对象。 1....

dingzhinan7201的博客 207

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

如何为Google Chrome启用Adobe Flash Player?

Adobe Flash is a technology used for years to run embedded applications and code inside the web browser and HTML code. Adobe Flash was very popular during the 2000s and 2010s. But with the advancement...

cunjiu9486的博客 4123
上一篇: 加载与初始化Flex Application
下一篇: 创建第一个Flash Professional CS5程序
sysu_2010
博客等级 码龄17年 7粉丝 77原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值