Flash运行时阻塞测试
如果您看了我的上一篇博文,您就应该了解Flash Player运行时的帧频和Timer计时是不精确的;其原因之一是AVM虚拟机每次分配的时间片间隔不是一个固定的值;另一个原因则可能是一次时间片所运行的代码较大,如果一个时间片的时间执行不完,则时间片就会延长并占用后面的时间片。
在这篇文章里,我给“时间片执行不完而延长该时间片,并造成帧频、Timer暂时停止”的情况起了个名词叫“Flash运行时阻塞”(这个名词或许并不完全恰当,如果您有更适合的词语,可以告诉我)。如果您没有看过我之前的博文,下面有两个链接,您有必要看一下:
执行模型之可变跑道
Flash Player帧频、Timer计时 的时间间隔测试
Flash运行时阻塞也会分为多种情况,比如:单次时间片所运行的代码量大,在给定的时间片内执行不完、计算机配置较低或运行过多的程序造成Flash所获得的CPU资源较少、Flash加载外部大数据文件等,本文的重点是关于Flash加载外部数据时,所造成的阻塞测试,其他几种情况较容易理解,我就暂时不进行测试了,有兴趣的朋友可以试一下。
AS3中,与加载外部数据有关的类有Loader、URLLoader、FileReference、NetConnection、SharedObject、Socket、XMLSocket等,另外我还测试了Flex中的SWFLoader和开源文件加载类BulkLoader,下面列出我的测试代码,后面总结一下。我使用的是Flex开发工具,创建了一个Flex项目。
对于这几个类的测试方式,大都是类似的,我就不全部列出了,我们看一下URLLoader在加载的时候对Timer计时和帧频的影响:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:Script>
<!--[CDATA[
import flash.utils.getTimer;
// 测试计时器
private var timer:Timer;
// 记录开始时间
private var startTime:int;
// 记录上一次计时的时间
private var prev:int;
// 用于加载数据的URLLoader
private var loader:URLLoader;
private function start(event:Event):void
{
// 创建一个Timer
timer = new Timer(100);
timer.addEventListener(TimerEvent.TIMER, onTimer);
// 创建一个URLLoader
loader = new URLLoader();
loader.addEventListener(Event.COMPLETE, onComplete);
// 记录当前时间
startTim
相关文档:
苹果和Adobe有很深的渊源。实际上,我们很早就在车库里与Adobe创始人有过一面之缘。苹果是Adobe第一个大客户,我们新的Laserwriter打印机就使用了它们的Postscript语言。苹果还投资Adobe,并多年持有它20%的股份。两家公司精诚合作,开发桌面出版系统,并多次合作良好。经过一段黄金年代后,两家公司渐行渐远。苹果经历了濒 ......
sudo gedit /etc/fonts/conf.avail/49-sansserif.conf
将
<edit name="family" mode="append_last">
<string>sans-serif</string>
......
package
{
import flash.display.Sprite;
import flash.events.MouseEvent;
import flash.system.fscommand;
import flash.display.StageDisplayState;
import flash.events.KeyboardEvent;
import flash.ui.Keyboard;
/**
* ...
* @author LittleSpace
*/
public class Main extends Sprite
{ ......
1,FLASH是什么?
FLASH电影是专为网页服务的画像或动画(当然,也可用于其它用途)。主要含有矢量图形,但是也可以包含导入的位图和音效,还可以把浏览者输入的信息同交互性联系起来,从而产生交互效果,也可以生成非线性电影动画。该动画可以同其它的WEB程序产生交互作用。网页设计师可以利用FLASH来创建导航控制器、动态LOG ......
对于大部分Flash开发者,都已经知道Flash的帧频、Timer计时并不是十分精确的。如果您已经做过这方面测试,可以略过这篇文章的前面一部分,在后面有关于Flash Player可变跑道的文章链接,希望对您有帮助。这篇文章的主要目的是让一些不知道Flash计时不精确和知道但又没有做过测试的朋友,来分享我的测试结果。我使用的Flex开 ......