Flash8播放器模型:弹性跑道

  自从FutureSplash以来,就一直从事Flash方面的工作,对于Flash’">播放器的开发,我也有了自己的一些看法。

  欢迎加入这个弹性极大的跑道模型的讨论。

  我将Flash 播放器看作如一条跑道。跑道上有两个截然不同的部分,一个是处理ActionScript(它包括事件处理),一个是将内容表现到屏幕上。运行时,Flash播放器围绕着跑道按照SWF文件里指定的帧速前进。不管播放器被赋予什么样的指令,播放器都会尝试按预定的速度播放文件。指定的帧速即是跑道的最大速度,播放速度只能在此之下而不能超过这个限制值。
播放器跑道模型

  SWF文件告诉播放器在规定的时间做相应的事。播放器处理ActionScript或者显现到屏幕或者两者同时发出的指令的时候,跑道就会被伸展。如果有许多的数据或者影片剪辑要处理,或者在跑道的单一环线中处理你添加的一切内容或指令,播放器会跳过要求它执行的那些指令,并会在最短的时间里完成一个循环,但不会比指定的帧速快。

  ActionScript 繁重时

  图形繁重时

  ActionScript and 图形都繁重时

  有混合这个模型的另外几个方面。首先,播放器会将图形元素构造到一个递减的目录树中。从基本的节点开始,有许多的以帧的内容和次级节点构成的分支。播放器每一个循环树目录上所有的元素都会被处理。当前的Flash 7播放器中,帧的内容按照需要从level0最高级开始依照从小到大的顺序被扫描和处理。根据图解表现关键是使树的层级与元素的内在需要一样的简单分明。树的菜单越少,层级越浅图形元素将会被更快速的显现到屏幕上。

  树的结构同样也适用于对ActionScript 字节码的处理当中。在AS阶段,树的现状被将以字节代码形式被扫描出来。每一个指定的事件将被逐级执行处理。ActionScript是基于栈的以栈为基础的,这样所有的字节代码被集中到堆栈上并被依照树的结构被线性处理。根据给出的帧上的代码和事件的容量,跑道上的AS部分将会被扩展。尽管没有一种固定的方法延迟代码的执行,播放器将会在每一个帧的循环中处理完被请求处理的所有内容。有趣的是,我们注意到那些使用功能和事件的代码能被排列成一个成的序列,等待着处理。在某种意义上,播放器从不会消损的,它会一直的做你所要求的所有工作,不会顺从于一个帧的循环。关键是不要在给出的帧上要求播放器处理太多的内容,并能对最新的帧依照逻辑和事件去处理。

  至于Flash 8,从播放器的Beta版的外观来看,cacheAsBitma允许图形作为位图存储为一个MC的分支。矢量图会以位图的形式储存,但要等到图片改变了才会渲染。很好的允许播放器集中的存储于播放器的不同区域,专注于矢量存储怎样被利用。在一个基于树的表现模型里,树的一些分支被设置成branch.cacheAsBitmap=true, 存储进程会在第一关创建一个位图并将重复利用这张位图直到本区域的矢量图标记为dirty。 同样,如果每一帧位图存储分支都被标记为dirty,你不得不强制播放器在每一个帧循环中产生一张位图(处理+存储)。在我的测试当中,最优化利用cacheAsBitmap并不像看起来那样简单。

  总之,Flash8播放器清晰的表明了它是两个不同元素的组合,图形处理和ActionScript 字节码处理。如果你滥用两者之中的一种或两种播放器的运行效率将会降低,导致下一个循环之前就认定一切已被完成。在更大的项目开发中,弹性跑道有助于帮助我们解释Flex和Flash发展中所表现的良好性能优化背后的一些晦涩难懂的逻辑。就像以前说过的许多次一样,“等那一帧”

时间: 2024-08-02 09:00:43

Flash8播放器模型:弹性跑道的相关文章

iOS开发拓展篇—音频处理(音乐播放器1)

说明:该系列文章通过实现一个简单的音乐播放器来介绍音频处理的相关知识点,需要重点注意很多细节的处理. 一.调整项目的结构,导入必要的素材 调整后的项目结构如下: 二.新建两个控制器 (1)新建一个控制器,用于展示音乐文件列表界面,其继承自UITableViewController (2)新建一个控制器,用于展示播放界面,其继承自UIViewController (3)在storyboard中,把之前的控制器删除,换上一个导航控制器,设置tableViewController与之前新建的控制器类进

iOS开发拓展篇—音频处理(音乐播放器3)

说明:这篇文章主要介绍音频工具类和播放工具类的封装. 一.控制器间数据传递 1.两个控制器之间数据的传递 第一种方法:self.parentViewController.music=self.music[indexPath.row];不能满足 第二种做法:把整个数组传递给它 第三种做法:设置一个数据源,设置播放控制器的数据源是这个控制器.self.parentViewController.dataSource=self;好处:没有耦合性,任何实现了协议的可以作为数据源. 第四种做法:把整个项目会

点评Linux平台上的音乐播放器Audacious 3.4

在Linux平台上,虽然音乐播放器软件多如牛毛,但是称得上音乐播放器这个名称的为数不多.Audacious是一款非常知名的软件,并且就是这些能被叫做音乐播放器的少数软件之一.   版本点评:Audacious 3.4 Audacious是一款开源的音乐播放器软件. 作为XMMS播放器软件的分支,Audacious播放器可以随心所欲的播放你的音乐,并且不会抢占其他任务的系统资源. 在你的所有音乐库里,你可以进行拖动文件夹和放置私人的歌曲文件.搜索歌手和专辑或者编辑你的自定义播放列表等操作. 特性:

实例解析iOS中音乐播放器应用开发的基本要点_IOS

一.调整项目的结构,导入必要的素材 调整后的项目结构如下: 二.新建两个控制器(1)新建一个控制器,用于展示音乐文件列表界面,其继承自UITableViewController (2)新建一个控制器,用于展示播放界面,其继承自UIViewController (3)在storyboard中,把之前的控制器删除,换上一个导航控制器,设置tableViewController与之前新建的控制器类进行关联 三.音乐文件列表控制器中基本界面的搭建(1)新建一个音乐文件的模型 根据plist文件建立模型:

iOS开发中音频工具类的封装以及音乐播放器的细节控制_IOS

一.控制器间数据传递 两个控制器之间数据的传递 第一种方法: 复制代码 代码如下: self.parentViewController.music=self.music[indexPath.row];不能满足 第二种做法:把整个数组传递给它 第三种做法:设置一个数据源,设置播放控制器的数据源是这个控制器.self.parentViewController.dataSource=self;好处:没有耦合性,任何实现了协议的可以作为数据源. 第四种做法:把整个项目会使用到的音频资源交给一个工具类去管

教你轻松制作java音乐播放器_java

一.音乐播放器的实现原理  Javase的多媒体功能很弱,所以有一个专门处理多媒体的插件叫JMF,JMF提供的模型可大致分为七类 * 数据源(Data source) * 截取设备(Capture Device,包括视频和音频截取设备) * 播放器(Player) * 处理器(Processor) * 数据池(DataSink) * 数据格式(Format) * 管理器(Manager) 而我所做的这个音乐播放器MyMusicPlayer(这是我创建的类名)正是调用了JMF中的Player类来实

我的问题-怎样用html5写一个音乐播放器的界面

问题描述 怎样用html5写一个音乐播放器的界面 求用html5写一个音乐播放器的界面的源代码,不需要美观,一个模型即可!!! 解决方案

千千播放器窗口粘贴的实现

问题描述 千千播放器窗口粘贴的实现 千千播放器窗口粘贴的实现?用鼠标将播放列表靠近播放器,播放列表自动粘贴在播放器上,拖动播放器,播放列表也跟着移动,这是怎么实现的呢? 解决方案 需要子类化窗体,对WM_MOVING消息进行处理,判断自身位置. 解决方案二: DOS窗口如何实现复制粘贴

DW怎样在网页中添加背景音乐播放器?

  1.首先在在站点中新建HTML项目(如图1所示). 图1 2.选择Dreamweaver的"设计"窗口,插入-布局对象-Div标签.在随后跳出的"插入div标签"对话框中直接点击"确定"按钮(如图3所示). 图2 图3 3.删除div标签中的文字内容,再次进行:插入-媒体-插件操作. 图4 4.你可以将音乐文件放如你已经创建好的站点中,选择你要插入的音乐文件,点击"确定"(如图5所示).弹出提示窗口后同样选择"确