深入理解Flash Player重绘

Adobe Flash Player for Linux系统安装包 Adobe Flash Player 是一款由 Adobe 公司开发的跨平台多媒体播放插件,曾广泛用于网页中嵌入动画、游戏、交互式内容和视频播放。其核心技术基于 ActionScript 编程语言和 SWF 文件格式,能够在浏览器中实现丰富的多媒体体验。尽管随着 HTML5 的普及,Flash Player 在现代网页开发中已被逐步淘汰,但在部分老旧企业系统和特定网站中,尤其是在 Linux 平台上,仍存在对 Flash Player 的依赖。 阅读详情

深入理解Flash Player重绘

from:http://hi.baidu.com/miracle5460/blog/item/9d4673faa07f8a13a9d31110.html

2010- 03- 14 Published by YouYee under 前端技术, 技术分享

Flash Player 会以SWF内容的帧频速度来刷新需要变化的内容,而这个刷新的过程,我们通常称为“重绘(redraw)”,相信即便是初级的菜鸟也知道,只要使用的是 Debug版本的Flash Player, 右键菜单里就会有“Show Redraw Regions (显示重绘区域)” 这个选项,当此选项打开的时候,我们就能清楚地看到此刻场景内被重绘的区域。


那么什么情况下会发生重绘呢?
1、最常见的是情况就是舞台上的可视组件在形状、位置、状态(alpha, scale...)发生改变的时候会触发Flash Player 的重绘。
2、当一个DisplayObject的层级(ChildIndex)发生改变的时候也会导致重绘。
3、当你将一个Sprite / MovieClip 的buttonMode 设置为 true 的时候,即便是单帧动画,重绘会在MouseEvent.MOUSE_DOWN的时候触发。又或者你对DisplayObject设置层级的时候,即便 DisplayObject的层级没有发生改变,也会使得 Flash Player对此显示对象进行重绘。
既然重绘是为了能够将显示内容进行更新,那么一个Flash应用程序就不可避免的要触发重绘。而重绘却是性能消耗的主要根源,一个有经验的Flash开发 人员写出的Flash应用,其性能可能70% - 90%(甚至更高)是消耗在重绘上,那么提高Flash应用程序的运行效率和减少重绘有着莫大的关系。
要减少重绘,首先我们需要对单位每帧重绘大小这个概念进行量化:重绘的大小应该取决于数量和面积。数量取决(但不是完全取决)于可视范围内的需要更新的显 示对象的数量,假设场景上有两个闪烁的小圆点并且宽和高都为20,那么重绘的数量为3,而重绘的总面积就为: 20 * 20 * 3 = 1200 (平方像素)。

简单的看看上面的公式是不是觉得重绘面积的计算很容易呢?那么继续估计下下面这个情况的重绘面积是多少:


如果你计算的结果是: 20 * 20 * 6 = 2400 (平方像素),那么恭喜你,答错了...
根据上面的介绍,重绘的大小理应就是重绘的数量 * 单个区域的面积,可是为什么说这个情况就错呢?让我们看看问题究竟出在什么地方:


让人觉得奇怪的地方出现了,重绘区域的数量依旧是3,而面积却增大了不少,按照图上给出的坐标信息,我们不难算出,总重绘面积的大小为:
20 * (70 - 20 + 20) * 3 = 4200 (平方像素),比起预先估算的 2400 (平方像素)整整大了 75%!
或许从这个地方开始,大家就开始觉得困惑了。的确,Flash Player的重绘面积并没有按照我们之前的设想那样来计算,但是依旧能找到一些规律,仔细来看以下几种况:


如果你够细心,应该不难看出每次 Flash Player 重绘的区域不会超过3个,即便舞台上有多于三个的显示对象需要被重绘,Flash Player 会将其中的两个或者多个集合(根据位置来判断)在一起,然后重绘在一个大区域里面,至此,我们暂时可以将上面两个重绘法则命名为三 区域法则和就近合并法则,通过总结出来的这两个法则,我们就能更加容易地理解Flash Player 重绘的机制,以及解释在日常调试中遇到的一些重绘现象了。比如QQ牧场里几个靠得比较近得小动物被放在一个区域里面重绘,而有些动物则不然,被单独重绘。
当我们了解了重绘机制后,那么接下来就应该进一步去了解如何避免多余的重绘,下面列举的方法可能大部分都是被大家所熟悉的。
1、当一个带有动画效果的DisplayObject在不显示的时候,不仅仅是将其 visible 属性设置为 false, 因为重绘依旧会进行,这里你可以选择暂停掉动画,又或者利用removeChild(displayObject) 直接将此对象移除出显示列表。
2、不出现在可视范围内外观变化的显示对象其实是不会发生重绘的,这点相信是Flash本身做了优化,也就是说我的Stage.stageWidth 和 Stage.stageHeight 都为200的情况下,一个处在舞台上的变化的显示物体,坐标为(200, 200) 宽高都为10,此时Flash Player重绘内容并不会包括此对象,新版本的Flash Player 甚至在浏览器窗口最小化的时候会关闭掉所有的重绘,这个时候你往往会发现CPU占用率骤降,但是应用程序依旧在运行。
3、在设置DisplayObject的层级的时候请先做一个判断:

if (myContainer.getChildIndex(myChild) != 0)
{
myContainer.setChildIndex(myChild, 0);
}

运气好的话,这个判断最高能带来200%以上的效率提升。
4、当你的Sprite / MovieClip 设置 cacheAsBitmap = true 这个属性的时候,当此显示对象内很小的一个区域(甚至是被遮盖着的物体)发生变化,会导致整个Sprite / MovieClip重绘。
5、尽量确保活动的显示内容在非可见区域被暂停活动或者干脆直接移除出显示列表,这里提到的不可视区域不仅仅是舞台外不可见的,还包括舞台内被其他物体遮 盖住的显示对象。

正如之前提到的,重绘是Flash Player性能消耗的主要大户,所以去优化减小重绘区域面积,减少不必要的重绘操作次数,往往能够带来比较大的性能优化回报。

前端开发免费flash视频播放器 一款在网页上播放视频的免费的播放器,功能强大,体积小巧,跨平台,使用起来随心所欲。 播放器主要以adobe的flash(所使用的版本是CS5)平台开发,所以在支持flash插件的平台和浏览器上都可以使用,而无需下载其它插件,如果你需要修改完整版里提供的相关的flash源文件,请使用adobe的flash cs5以上版本打开源文件修改。 同时也支持html5的视频播放,即同时可以在Ipad,Ipho ne等IOS平台上播放视频,并且只需简单代码就可以使用,无需了解html5插入视频的方法。 软件在对各平台的兼容性方面适应性比较强,比如你可以设置在Android平台或wp平台上在用户已安装flash插件的时候使用flash播放器,在没有装flash插件的情况下使用html5播放器。 是一种前台使用的程序,不涉及到服务器程序(asp,php,jsp,.net),也不涉及到对服务器的操作(即不需要写入权限),所以不存在安全方面的问题。同时可以集成在任何程序中,包括asp,php,jsp,.net以及其它支持插入flash的环境中。 立即下载

相关推荐

7个Web前端极其精美的播放器组件源码(三)

在线效果:http://ynif.v099.10000net.cn/demo/bofangq/3/bofangq/index.html

用flash做电子地图 用flash做电子地图(1)

关于flash,大家或多或少都有所了解。比如上网,到处都能看到flash的存在。flash的应用也是五花八门。今天我们讲的是用flash做电子地图。现在在网上随处都能找到电子地图,其中大部分都是java来开发的,其实用flash也可以做电子地图。且界面还比较漂亮。现在网上已经有用flash做的电子地图了。且呈发展趋势。象"中国电子地图网"里面的地图就是用flash做的。还有九江,五邑等地图也都

wyhappy612的专栏 1685

等离子体密度诊断集

在实验上不仅要对带电粒子的分布和运动状态进行诊断,如电子温度、电子密度、电离温度等参数,还需要对等离子体中的中性粒子进行必要的实验测量,来获得有关物种的产生、能量分布以及各个激发态布居数分布等信息,如气体温度、转动温度、振动温度、激发温度等参数。

in546的博客 1351

(转)深入理解flash重绘

深入理解Flash Player重绘 Flash Player 会以SWF内容的帧频速度来刷新需要变化的内容,而这个刷新的过程,我们通常称为“重绘(redraw)”,相信即便是初级的菜鸟也知道,只要使用的是Debug版本的Flash Player, 右键菜单里就会有“Show Redraw Regions (显示重绘区域)” 这个选项,当此选项打开的时候,我们就能清楚地看到此刻场景内被重...

weixin_30278237的博客 112

MC1496乘法器AM调制电路搭建全流程(附Multisim 14.0仿真文件)

本文提供了基于MC1496乘法器搭建AM调制电路的完整实战指南。针对仿真模型缺失的痛点,详细讲解了从晶体管级手动构建MC1496等效模型,到外围电路设计、调制度参数计算与调节,并在Multisim 14.0中进行仿真验证的全流程。通过深度剖析MC1496内部原理与AM信号调制机制,帮助读者获得从仿真到实践的可控设计与排错能力。

weixin_29190169的博客 591

电商数据分析19——数据分析在电商平台价格弹性研究中的应用

价格弹性是一个衡量产品价格变化对销量影响的经济学指标,对于电商平台而言,深入理解和有效运用价格弹性,对于制定竞争策略、优化产品定价具有重要意义。随着大数据时代的到来,通过数据分析研究产品的价格弹性,成为了电商企业制定价格策略、调整市场定位、优化促销活动的重要依据。

theskylife的博客 2834

导致flash屏幕重绘的几种方式及避免重绘的方法

导致屏幕重绘的几种原因: 1、最常见的是情况就是舞台上的可视组件在形状、位置、状态(alpha, scale…)发生改变的时候会触发Flash Player 的重绘。 2、当一个DisplayObject的层级(ChildIndex)发生改变的时候也会导致重绘。 3、当你将一个Sprite / MovieClip 的buttonMode 设置为 true 的时候,即便是单

wkyb608的专栏 888

用WorkBuddy搭建漫剧AI自动化制作流水线全攻略

在内容创作领域,AI智能体正逐渐从单一工具辅助走向全流程自动化调度。其核心原理是将剧本、分镜、绘图、配音、剪辑等环节拆解为可独立执行的任务单元,由总控系统统一协调,从而大幅降低人力与时间成本。这种模式尤其适用于动态漫画(漫剧)这类环节多、专业度要求高的视频形态。传统制作流程中,角色一致性、配音周期和剪辑返工是公认的效率瓶颈,而借助AI智能体工作台,创作者只需输入故事创意,即可驱动多个数字分身协同完成内容生产。本文以WorkBuddy为例,详细展示如何配置模型、安装技能包并串联五段式流水线,将单集制作成本从万

weixin_28224217的博客 251

flash player的重绘渲染机制

<br />先简洁说下前人的研究成果。<br /> <br />一个是Tencent的YouYee发现的fp重绘特性,即便舞台上有多于三个的显示对象需要被重绘,Flash Player 会将其中的两个或者多<br />个集合(根据位置来判断)在一起,然后重绘在一个大区域里面,结果是重绘区域不会超过三个。<br /> <br />另一个就是Adobe公司的Lee Thomason 介绍的FP的可变跑到的重绘执行周期。其中有俩方面内容<br /> <br />重绘的执行基础<br />FP的执行本身是多线程,不

4653

Windows MCP 安装教程:让 AI 代理与 Windows 系统无缝交互

通过以上步骤,你已经成功安装和配置了 Windows MCP 服务。现在你的 Cursor 编辑器可以通过 MCP 协议与 Windows 系统进行深度交互,AI 代理能够:启动和控制应用程序执行系统命令自动化 UI 操作获取系统状态信息这为 AI 辅助开发和工作流程自动化提供了强大的基础。如果你在使用过程中遇到任何问题,欢迎在评论区讨论或查看项目的官方文档。

chenchihwen的专栏 3350

CloudCompare 二次开发(6)——插件中拖拽添加Qt窗口(区域生长算法为例)

手动拖拽的方式搭建Qt对话框界面的制作流程,以PCL中的点云区域生长算法为例进行制作。

点云侠的博客 2151

[转]深入理解Flash Player重绘

http://flashteam.tencent.com/post/60/深入理解flash-player重绘/comment-page-1/#comment-172   Flash Player 会以SWF内容的帧频速度来刷新需要变化的内容,而这个刷新的过程,我们通常称为“重绘(redraw)”,相信即便是初级的菜鸟也知道,只要使用的是Debug版本的Flash Player, 右键菜单...

小黑的成长记录 161

【无人机基站】基于K-mean算法实现无人机基站部署附matlab代码

【无人机基站】基于K-mean算法实现无人机基站部署附matlab代码

天天酷科研的博客 243

深入理解Flash Player的安全域(Security Domains)

一篇对Flash Player的安全域 (Security Domain)介绍得比较详细的文章,深入浅出,值得一看。后续还有下文《关于深入理解Flash Player的应用程序域(Application Domains)》 英文原文 :Security Domains, Application Domains, and More in ActionScript 3.0 翻译版本 :教程:

yaonai2003的专栏 3477

【人工智能时代】- 一键部署本地AI大模型

Ollama是一个开源项目,致力于简化大型语言模型(LLM)的本地部署过程。它允许用户在自己的硬件上运行和测试最新的语言模型,无需依赖云服务。Ollama提供了一个类似于OpenAI的API接口,使得开发者可以轻松地在自己的应用程序中集成大型语言模型。此外,Ollama WebUI为用户提供了一个友好的界面,用于管理和与模型进行交互。

xiaoli8748的专栏 2376

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

深入理解Flash Player的安全沙箱

最近有许多朋友对沙箱问题有疑问.可以看看这个演讲:  http://www.infoq.com/cn/presentations/liwenlei-flashsandbox概要 Flash Player的安全沙箱是一个大家都会遇到的问题。国内许多大型网站如网易,Sohu时不时也会出现安全沙箱的问题。本次演讲主要为大家详细讲解安全沙箱的不同类型以及对应加载内容的不同类型的情况下Flash ...

weixin_33825683的博客 152

VC中sqlite的使用

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

CVE-2014-8959漏洞复现:UAF原理剖析与Flash Player攻击实战

释放后重用是一种经典的内存安全漏洞,其原理在于程序错误地释放了仍被引用的内存块,随后又重用该内存区域,导致数据损坏或控制流劫持。理解UAF漏洞对于掌握二进制安全至关重要,它揭示了内存管理机制的脆弱性,是攻击者实现任意代码执行的关键技术路径。在浏览器插件、文档阅读器等复杂软件中,UAF常与脚本引擎的垃圾回收机制交互,形成高危攻击面。本文以Adobe Flash Player的CVE-2014-8959漏洞为具体案例,通过搭建复古实验环境、分析ActionScript虚拟机中Vector与Dictionary的

weixin_30443813的博客 2094

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

ssm框架搭建

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

深入理解Flash Player安全沙箱【转】

http://rss.9ria.com/?p=2935 http://riaoo.com/?p=1970 来源博客:Y.Boy’s Blog 一篇对Flash Player的安全域(Security Domain)介绍得比较详细的文章,深入浅出,值得一看。后续还有下文《关于深入理解Flash Player的应用程序域(Application Domains)》 英文原文:Secur...

weixin_33713707的博客 124

深入理解Flash Player的应用程序域--Application Domains

原文地址:http://kevincao.com/2010/11/application-domains/ 目录 Application Domains(应用程序域)Application Domain Placement(应用程序域的位置)Application Domain Inheritance(应用程序域的继承)Child Domains: Definition Versionin

lake1314的专栏 1081
上一篇: Flash开发者不可不知的10件事
下一篇: Flash性能优化
jamesjun
博客等级 码龄19年 25粉丝 33原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值