Flash Timer的用法 计时器
在AS3开发中,计时器应该是最常见的组件了,关于各种计时方法也是层出不穷,一般来说,各种方法都会满足我们的需要,但是我们还是会遇到一个让人头痛的问题,那就是精度。
由于Flash是解释运行,限于FP的虚拟机有诸多限制,所以不要指望能和C++那样拥有可以到达毫秒级的高精度计时,甚至连微秒级别的计时也不容乐观,我们今天就来探讨一下常用的计时方法和他们的差别。
1 Event.ENTERFRAME事件
这个应该是最常见的了,几乎很多计时都用这个事件。它表示帧频,也就是说,每秒钟播放多少个帧,最新的CS5版本默认是24帧,早期的版本默认是12帧,这个是由于为了弥补和提高早期动画不流畅的问题而提高了帧率,事实也证明,人眼对于每秒30帧以上的画面切换就不会再感到闪烁,对于Flash,24帧就足够了
Event.ENTERFRAME事件虽然好用,但是在FP10.1版本以后,Adobe为了解决Flash内存占用的问题,做了一个优化:那就是如果当前的Flash,包括FP中本地和WEB页面上的动画,没有处于焦点状态,也就是说有其他窗口遮盖了Flash,那么它会自动降频,降为2帧/秒来运行,这样的话计时就大大不准了,这种方法不太实用时间类的计时。
2 Timer
Timer真是让人既爱又恨,不可否认的是,Timer的确是一个非常方便的计时器组件,但是他的精度实在是太低了,1个小时中间我见过的误差能有几分钟,我们也可以测试一下Timer的精度:
var TestTime:Timer = new Timer(1000);
TestTime.addEventListener(TimerEvent.TIMER,OnTimer);
TestTime.start();
private function OnTimer(e:TimerEvent){
var tick = getTimer();
trace(tick);
}
getTimer()是获得Flash运行到现在的毫秒数,运行上面的代码我们会发现,每次trace的结果都忽大忽小,按道理说应该是按照一定的固定数字增加才对,但是这个数字并不固定,虽然trace会占用一部分时间,但是总的来说,Timer的精度还是不容乐观。
3 setInterval()方法
这个是按照指定的毫秒数去不断运行一个方法,但是和Timer差不多,而且setInterval()本身的机制需要Flash不断的去调用,因此也不是很理想。
4 getTimer()方法
有人说用getTimer()来计时,理由是它获得的是系统所经过的毫秒数,不错,但是你怎么来调用这个方法呢?还是要在Timer或者ENTERFRAME里调用,俗话说上梁不正下梁歪,就算getTimer再精确,由于调用它的方法不精确,所以也没有多大意思
5 Tween
Tween也可以计时,这个一般人好像并不会用到,但是用Tween来做计时有个明显的好处就是,他不会受WEB页面的影响,因为有不少人反映在WEB里播放Flash有的机器快有的慢,如果用Tween来计时就没有这个问题,具体原因我也说不清,但是我的确用这个方法解决了曾经一个Flash在不同浏览器计时不准确的问题。
转自http://www.zystudios.cn/blog/post/50.Shtml
Flash Timer的用法 计时器相关推荐
- Java程序中Timer的用法
Java程序中Timer的用法 import java.io.IOException; import java.util.Timer; public class CheckTimer {/*** @p ...
- java中计时器的用法Timer和TimerTask的用法__java中利用Timer与TImerTask 计时器间隔执行任务...
经常我们都会有这样的需求,要固定的每隔一段时间执行某一个任务.比如: 我们做一个缓存来减少与数据库的交互,而为了使缓存与数据库中的数据尽量达到同步,需要每个固定的一段时间去数据库中的数据是否有更新以达 ...
- 关于Timer的用法,先简单记下,稍后编辑
(2008-07-21 09:46 博客搬家拾遗) Timer事件,即定时器事件,是在游戏编程中,经常使用的一个事件.借助它可以产生定时执行动作的效果.这篇文章,就和大家一起探讨一下如何使用SetTi ...
- Java中Timer的用法
现在项目中用到需要定时去检查文件是否更新的功能.timer正好用于此处. 用法很简单,new一个timer,然后写一个timertask的子类即可. 代码如下: [java] view plainco ...
- python timer怎么用_python定时器(Timer)用法简单实例
python定时器(Timer)用法简单实例 本文实例讲述了python定时器(Timer)用法.分享给大家供大家参考.具体如下: # encoding: UTF-8 import threading ...
- RH Timer for Mac(计时器软件)
RH Timer是一款macOS平台的方便好用的倒计时软件,能够帮助我们在Mac上通过菜单栏快速设定倒计时定时器,只需点击并拖动即可.如果您玩游戏或观看连续剧,则无论如何都必须退出,因为即使您处于全屏 ...
- C#中Timer组件用法
Timer组件是也是一个WinForm组件了,和其他的WinForm组件的最大区别是:Timer组件是不可见的,而其他大部分的组件都是都是可见的,可以设计的.Timer组件也被封装在名称空间Syste ...
- C# Timer定时器用法
System.Timers.Timer timer1 = new System.Timers.Timer(); timer1.Elapsed += new System.Timers.ElapsedE ...
- java timer线程结束_Java线程Timer定时器用法详细总结
定时/计划功能主要使用的就是Timer对象,它在内部还是使用多线程的方式进行处理,所以它和线程技术还是有非常大的关联. Timer类主要作用就是设置计划任务,但封装任务的类却是TimerTask类.T ...
- 定时线程的使用 java_Java线程Timer定时器用法详细总结
定时/计划功能主要使用的就是Timer对象,它在内部还是使用多线程的方式进行处理,所以它和线程技术还是有非常大的关联. Timer类主要作用就是设置计划任务,但封装任务的类却是TimerTask类.T ...
最新文章
- Foundation ActionScript 3.0.With Flash CS3 And Flex ..
- Java二进制位运算、移位运算、、
- 【cocos2d-x 仙凡奇缘-网游研发(2) 角色换线系统】
- php word组件使用方法,快速解决PHP调用Word组件DCOM权限的问题讲解
- 区块链与边缘计算(1)基本概念
- 利用 Python 分析了某化妆品企业的销售情况,我得出的结论是?
- Shareplex 错误 can't open or read object cache file
- 5-2 决策树算法预测销量高低代码
- 前端学习(1758):前端调试值之快速以编辑状态查看一个站点的所有资源
- leetcode题库--63不同路径 II
- android源码分析网上随笔记录
- htc m7位置服务器,HTC M7 解锁教程(附htc one m7 解锁工具)
- php mysql 手机归属地_PHP 手机号码归属地查询代码 (API 接口 / mysql)
- freebsd协议栈学习
- 如何用MATLAB预测未来人口,使用matlab对将来人口总数进行预测
- 停止mysql服务的运行_启动和停止MySQL服务
- html布尔属性写法,HTML - 为什么布尔属性没有布尔值?
- Android WallpaperManager 同时设置桌面壁纸与锁屏的问题
- APP运营中地推应该怎么做
- Quorum入门2.0:Quorum-企业以太坊-开始尝试