`
dishell
  • 浏览: 68036 次
  • 性别: Icon_minigender_1
  • 来自: 西安
最近访客 更多访客>>
社区版块
存档分类
最新评论

ActionScript3.0定时器

阅读更多

虽然Flash拥有越来越强大的周边功能,但其核心依然是一款动画制作软件。在Flash设计环境中,不编写脚本代码,也能快速制作出效果惊人的时间轴动画。但此类动画是固定的,无法根据环境动态调整。使用ActionScript生成和控制动画,才能随心驾驭动画的细节,并完成仿真运动和用户交互等高级功能。

动画定时器

高级语言都会提供定时器,AS3更不例外。在脚本代码中,可以通过设置定时器控制动画帧率。

动画要素

动画是利用人眼视觉残留的特性来完成对真实世界运动的模拟。动画必须包含三个要素:对象、帧率、轨迹。

毫无疑问,任何动画都需要有对象。通过后期的编辑和组合,在一个场景里最终可以存在多个运动对象。但在动画设计阶段必须单独处理,每次只操作一个对象。

帧率(FrameRate)表示动画影片在单位时间内播放的动画帧数量。帧率越高,动画的表现就越平滑。但帧率也并不是越高越好,在Flash动画中,过高的时间轴帧率会耗费更多的系统资源。时快时慢的高帧率动画反而不如较低帧率的流畅动画。一般而言,动画达到24帧/秒的帧率就已经很流畅平滑了。对于一串动画序列,通过改变帧率,可以调节动作的快慢。

轨迹则是一个抽象概念,主要描述动画对象在单位时间内的属性变化情况。在以时间为x轴,属性为y轴的平面坐标系中,轨迹能被图像化的绘制出来。

轨迹不仅是描述对象空间运动的,也可以描述颜色、透明度、形状、大小等各种属性的变化。一个动画对象在时间线内alpha透明度的变化轨迹如图8-1所示。

根据动画的不同,轨迹的图像可以是线性的,也可以是非线性的;轨迹可以是连续平滑的,也可以是随机分布的。总而言之,轨迹就是描述运动对象属性变化情况的一个数据序列。

在创建Flash时间轴动画时,动画帧率与Flash项目的默认帧率相同。要加速动画对象的运动变化,只能通过改变轨迹实现。具体有两种办法:一种是增加单位时间内属性的变化量,一种是减少单位变化量需要的时间。形象而言,提高跑步速度可以有两种方式:或者在10秒内多跑几米,或者是减少跑100米所需的时间。无论选择何种方式,都可以达到相同的效果。

Timer类

定时器类(TimerClass)是ActionScript 3.0的内置类,通过AS3的事件分发响应机制实现周期触发。定时器是一个简单却又极为常用的类,系统全面的掌握它是非常必要的。

Timer类的属性如表8-1所示:

表8-1  Timer类的属性

   

   

   

currentCount

int

统计定时器开始后累计触发次数。该属性为只读属性,用户不能改变

delay

Number

以毫秒为单位的定时器延时周期。两次定时器触发时间之间的间隔。注意,一秒等于1000毫秒

repeatCount

int

总触发次数,当累计触发次数达到总触发次数后,定时器就会停止

running

Boolean

定时器的运行状态。定时器在运行则为true,定时器停止或未启动则为false。注意该属性为只读属性,不能通过设置该属性控制定时器状态。对定时器进行操作必须使用它内置的方法

使用Timer类的构造函数“Timer(delay:Number,repeatCount:int=0)”可以直接创建一个功能完备的定时器。此函数包含两个参数,分别是该类的delay属性和repeatCount属性。定时器创建后会保持停止,直到使用“start()”方法启动后,才会开始计时。

使用定时器

当定时器启动后,会每隔delay周期发出timer事件,必须在代码中设定对此事件的侦听,方可达到定时执行任务的目的。

var myTimer:Timer=new Timer(80,100);

myTimer.addEventListener("timer", timerhandler);//注意,事件timer必须全部小写

myTimer.start();

//事件处理函数

function timerhandler(event:TimerEvent):void{

//进行用户操作

}

以上代码创建了一个总触发次数为100次的定时器myTimer。当myTimer启动后,每隔80毫秒会发出一次定时器触发事件。用“addEventListener()”函数设定timer事件的监听,并编写timerhandler()来处理这个事件。一切就绪后,使用“start()”方法启动定时器。

在定时器启动后,使用currentCount属性查询当前累计触发次数,使用“stop()”方法可以停止一个定时器。需要指出的是:“stop()”方法不过是暂停了定时器,并没有清除定时器。当一个定时器被“stop()”方法停止后,Timer对象的currentCount并没有被清除。当再次使用“start()”方法启动Timer对象时,定时器将继续执行,直到触发次数达到repeatCount属性规定的数值。用户不能在代码中为CurrentCount赋值,要改变currentCount属性,只能使用“reset()”方法。“reset()”方法可以清零定时器的currentCount属性。

当一个定时器的触发次数达到设定值repeatCount时,FlashPlayer将发送timeComplete事件。通过响应此事件,可以重设Time定时器并令其继续运行下去。

用户可以同时设定多个定时器。多个定时器之间平行存在,互不影响。

精确性

Timer定时器是精确的,但是定时器的执行结果并非绝对精确。无论是Flash还是Flex,最终的应用程序都是以SWF文件存储。而FlashPlayer在解释SWF文件时,会建立基于帧率的周期循环。每次舞台更新的时间间隔是固定的,脚本中的舞台操作会受到时间轴帧率的制约。

作为一个多线程的应用程序,FlashPlayer执行脚本不需要依赖帧率,但是所有的屏幕输出都要借助FlashPlayer的渲染引擎。如果时间轴帧率为10,则运行时舞台每100毫秒播放一帧。当间隔为80毫秒的定时器触发时,SWF应用程序立刻执行该定时器的侦听函数,但是在定时器侦听函数中的任何屏幕操作,都不会及时的反应在舞台上。只有在100毫秒时,FlashPlayer才会更新舞台显示。定时器在160毫秒第二次触发时,SWF应用程序需在200毫秒更新舞台显示。理论上8000毫秒内执行100次定时器,但实际上在帧率为10的SWF应用中,舞台更新只有80次。有可能在舞台刷新间隔内,连续执行两次定时器操作。

定时器的触发事件间隔可以自由设置,所有的定时器事件都不会错过。屏幕显示虽然不是实时更新,但是由于刷新的速度很快,不会造成显著影响。实际上,任何语言的定时器都要受制于系统时钟,都不是绝对精确的。

分享到:
评论

相关推荐

    贪吃蛇游戏--ActionScript3.0版

    2. **事件驱动编程**:ActionScript3.0使用事件驱动模型,游戏的逻辑基于用户输入和定时器事件。例如,当用户按下方向键时,会触发蛇的转向;定时器事件则控制蛇的移动,每帧更新其位置。 3. **舞台与显示列表**:...

    actionscript3.0中文教程

    ActionScript 3.0 是Adobe开发的一种面向对象的编程语言,主要用于创建富互联网应用程序(RIA),尤其是Flash平台上的交互式内容。本教程旨在帮助你深入理解ActionScript 3.0的核心概念、语法特性以及实际应用。 一...

    Flash Flash actionscript 3.0 动画教程源码

    《Flash ActionScript 3.0 动画教程源码详解》 ActionScript 3.0 是Adobe Flash开发中的核心编程语言,它为创建交互式、动态的动画内容提供了强大的支持。本教程源码主要聚焦于如何利用ActionScript 3.0进行高效的...

    Flash ActionScript 3.0 贪吃蛇实例制作下载

    《Flash ActionScript 3.0 贪吃蛇实例制作详解》 在数字媒体和游戏开发领域,Flash曾经是制作互动内容的首选工具,而ActionScript 3.0(简称AS3.0)作为Flash的编程语言,为开发者提供了强大的功能。本篇文章将深入...

    ActionScript3.0制作的一个时钟

    ActionScript3.0中的`flash.utils.Timer`类是关键,它可以用来创建定时器对象,该对象在指定的毫秒间隔后触发事件。在这种情况下,定时器可能被设置为每秒触发一次,以便实时更新时钟的显示。 `flash.system....

    Actionscript3.0开发人员指南

    ### Actionscript3.0开发人员指南 #### 使用日期和时间 **管理日历日期和时间** ActionScript 3.0 提供了强大的日期和时间管理功能。通过 `Date` 类可以轻松地创建、操作和格式化日期。例如,可以通过构造函数...

    flash actionscript3.0 经典打字游戏

    《ActionScript3.0经典打字游戏开发详解》 在数字媒体领域,Flash以其强大的交互性和动态性赢得了广泛的应用,而ActionScript3.0作为Flash的编程语言,为开发者提供了更为强大和高效的工具。本篇将围绕“Flash ...

    本地播放器(ActionScript 3.0实现)

    4. **时间线管理**:ActionScript 3.0的`flash.events.Timer`类可以帮助我们创建定时器,从而实现播放进度条的更新。同时,`SoundChannel`和`Video`对象提供`currentTime`属性,用于获取当前播放位置。 5. **音量...

    ActionScript 3.0编程精髓(包括处理视频)

    ### ActionScript 3.0编程精髓(包括处理视频) #### 一、ActionScript 3.0简介 ActionScript 3.0是一种强大的面向对象的编程语言,主要用于开发交互式应用程序和游戏,尤其适用于Adobe Flash Player和Adobe AIR环境...

    actionscript3.0烟雾效果

    通过“actionscript3.0烟雾效果实例”这个压缩包文件,你可以得到一个完整的烟雾效果示例代码,这将帮助你更好地理解上述概念的实际应用。分析并学习这个实例,你将能够掌握如何在自己的项目中创建类似的特效,增强...

    本地播放器源码(ActionScript 3.0实现)

    ActionScript 3.0 中的`Sound`或`Video`类提供了`currentTime`属性,可以用来获取或设置播放位置,配合定时器实现时间线更新。 6. **用户界面**:播放器的界面通常包括播放/暂停按钮、进度条、音量控制器等元素。...

    ActionScript3.0开发技术大全(光盘源码)第三部分

    《ActionScript3.0开发技术大全》是一本深入讲解ActionScript3.0编程语言的权威教程,由李方捷等知名作者编著,并由清华大学出版社出版。这本书特别适合那些正在学习或想要入门ActionScript3.0的开发者。...

    《ActionScript3·0编程》中文PDF

    在游戏开发方面,ActionScript3.0提供了物理引擎、碰撞检测、定时器等工具,可以帮助开发者构建出具有高度互动性和趣味性的游戏。同时,通过与Flex框架的结合,ActionScript3.0还可以用于开发桌面级和移动设备的应用...

    ActionScript3.0自学手册

    ### ActionScript 3.0动画编程详解 #### 9.1 可视化动画编程简介 在Flash动画创作中,**动画**的概念指的是通过控制显示对象随时间的变化,以达到视觉上的连续变化效果。这些变化可能包括但不限于位置移动、速度...

    ActionScript 3.0 开发人员指南 (AS3开发帮助文档)

    ### ActionScript 3.0 开发人员指南精要解析 #### 第 1 章: 使用日期和时间 **管理日历日期和时间** ActionScript 3.0 提供了强大的日期和时间处理功能,主要通过`Date`类实现。这个类支持多种日期和时间格式的...

    行业文档-设计装置-基于ActionScript3.0平台网络远程数据抓取的互动展示装置.zip

    《基于ActionScript3.0平台网络远程数据抓取的互动展示装置》 ActionScript3.0是Adobe开发的编程语言,主要用于创建富互联网应用程序(RIA),尤其在Flash平台上,它为构建动态、交互性强的Web内容提供了强大的支持...

Global site tag (gtag.js) - Google Analytics