`
macemers
  • 浏览: 41784 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论
阅读更多
虽然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次。有可能在舞台刷新间隔内,连续执行两次定时器操作。

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


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/DocSun/archive/2009/07/03/4319029.aspx

import flash.events.TimerEvent;
    import flash.utils.Timer;

            // 创建一个新的五秒的 Timer
            var minuteTimer:Timer = new Timer(1000, 5);
            
            // 为间隔和完成事件指定侦听器
            minuteTimer.addEventListener(TimerEvent.TIMER, onTick);  
/*
Timer 对象在每次达到指定的间隔时都会调度 TimerEvent 对象。TimerEvent 对象的事件类型是 timer(由常量 TimerEvent.TIMER 定义)。TimerEvent 对象包含的属性与标准 Event 对象包含的属性相同。
*/
            minuteTimer.addEventListener(TimerEvent.TIMER_COMPLETE, onTimerComplete);


/*
如果将 Timer 实例设置为固定的间隔数,则在达到最后一次间隔时,它还会调度 timerComplete 事件(由常量 TimerEvent.TIMER_COMPLETE 定义)。
也就是说,当Timer没有设置固定间隔数,如上(1000,5)里面的5次,则不会调用TIMR_COMPLETE事件!这一点要注意
 */           
            // 启动计时器计时
            minuteTimer.start();

            // 显示到目前为止的时间计数
            // 该事件的目标是 Timer 实例本身。
            trace("tick" + event.target.currentCount);

分享到:
评论
1 楼 北坡-苏 2015-04-19  
flash的as的timer还是比较好处理的
你可以看下这个叫 Timer运动的 ios app
很高大上  很清新

相关推荐

    02-Timer0-Timer1-Timer2测试程序_STC15W408AS跑马灯程序_

    3. I/O端口配置:STC15W408AS的I/O端口需要配置为输出模式,以便驱动LED。跑马灯通常涉及多个LED,所以需要对多个端口进行设置。 4. 跑马灯逻辑:在Timer1的中断服务程序中,我们可以改变LED的亮灭顺序,例如,每次...

    AS3Timer:Javascript 中的 AS3 式计时器

    AS3Timer是将AS3风格的计时器概念引入JavaScript的一种方式,它允许开发者在特定的时间间隔内执行重复或单次的任务。在本文中,我们将详细探讨如何在JavaScript中实现AS3Timer,以及其工作原理和常见用法。 首先,...

    異步Timer Timer

    在这个场景中,"異步Timer Timer"的标题和描述提到了时间管理和异步处理事件的概念,这通常与编程语言中的定时器控件有关。我们将深入探讨异步编程、VB(Visual Basic)中的Timer控件以及它们如何协同工作。 首先,...

    AS3实用函数、AS3常用算法大全

    ### AS3实用函数与常用算法知识点详解 #### 一、鼠标坐标:`mouseX` 和 `mouseY` 在Adobe Flash/ActionScript 3 (AS3) 中,`mouseX` 和 `mouseY` 属性用于获取鼠标相对于舞台的当前位置。这两个属性非常有用,特别...

    C#中Timer使用及解决重入问题

    在C#编程中,`Timer`是一个非常常用的组件,它允许开发者在指定的时间间隔内触发一个事件。在本文中,我们将深入探讨`System.Timers.Timer`的使用以及如何解决可能出现的重入问题。 首先,`System.Timers.Timer`是...

    as3滚动文字

    AS3滚动文字是一种在ActionScript 3.0(AS3)环境中实现的动态文本效果,常用于网页、游戏或互动媒体项目中。这种效果可以使文本按照特定方向(如横向或纵向)连续滚动,以创建动态的视觉展示。下面将详细解释AS3...

    flash as3 时钟

    它可能会使用到AS3的定时器类(`Timer`)来实现周期性的检查,当达到设定的时间时,触发警报。 4. `e_c.as`:根据名字推测,这个文件可能实现了电子时钟的逻辑。电子时钟通常涉及数字显示,因此可能包含数字格式化...

    VB 类模块Timer(无窗体)

    `Private WithEvents timer1 As clsTimer`这一行代码是在其他模块中定义的,表示我们创建了一个`clsTimer`类的私有实例,并且我们对该实例的事件感兴趣。`WithEvents`关键字使得我们可以在定义它的模块内处理`...

    Counter as Timer.rar

    这个“Counter as Timer.rar”压缩包文件包含了一个与AB PLC相关的计数器用作定时器的实例。下面我们将深入探讨这个主题,了解如何利用AB PLC的计数器功能实现定时操作。 计数器在PLC编程中扮演着重要角色,通常...

    Flash AS3 计时器

    首先,我们需要了解AS3中的计时器类(`Timer`)。`Timer`类是实现时间间隔触发事件的基础,它允许开发者设置一个特定的延迟周期,在这个周期结束后触发一个事件。要创建一个`Timer`对象,你需要指定计时器的间隔(以...

    02-Timer0-Timer1-Timer2测试程序_STC15W408AS跑马灯程序_源码.zip

    STC15W408AS支持Timer0、Timer1和Timer2三个独立的16位定时器,它们的工作模式多样,包括正常模式、波特率发生器模式、CTC(Clear Timer on Compare)模式、PWM(脉宽调制)模式等。 Timer0是8位定时器,适合简单的...

    AS3简体中文帮助文档

    5. **类库**:AS3提供了一系列内置的类库,如DisplayObject容器(如MovieClip和Sprite)用于图形绘制,Timer类用于定时任务,XML和JSON类用于数据交换,以及Socket和URLLoader类用于网络通信。 6. **错误处理**:AS...

    as3 游戏开发基础

    【AS3游戏开发基础】 ActionScript 3.0(AS3)是Adobe Flash平台上用于创建交互式内容、游戏和应用程序的主要编程语言。AS3相比于早期版本有着显著的改进,包括性能提升、类型系统强化和更现代的编程模型,使得游戏...

    LPC 1700系列 Timer例程

    // Set as output // 初始化GPT0 GPTIMER0_CFG = 0; // Reset timer configuration GPTIMER0_TMRCLR = 1; // Clear timer counter GPTIMER0_PR = 9999; // Prescaler value (for 1ms tick @ 1MHz) GPTIMER0_...

    AS3焦点图 Flash ActionScript 3.0 焦点图 经典网络应用程序

    AS3写的焦点图。AS3焦点图 Flash ActionScript 3.0 焦点图 经典网络应用程序。XMl文件读取。/* 用到了知识点: Timer XML URLLoader pic Loader 按钮 按钮单击事件 */ /** 思路: 不进行缩放 1.初始化,控制面板背景...

    水波特效 (AS3)

    在本文中,我们将深入探讨如何在ActionScript 3(AS3)中实现“水波特效”。这个特效通常用于增强游戏、交互式应用或网站的视觉体验,给人一种动态、真实的水面波动效果。我们将主要关注三个关键文件:`main.as`、`...

    AS3漂亮的时钟源码

    AS3漂亮的时钟源码是一个基于ActionScript 3(AS3)编程语言的Flash应用程序,用于创建具有吸引力和视觉效果的数字或模拟时钟。AS3是Adobe Flash Professional和Flex Builder等开发工具广泛使用的脚本语言,它为构建...

    AS3殿堂之路完整版非扫描高清适合as初学者

    《AS3殿堂之路》是一本面向AS3初学者的教程,旨在帮助读者全面掌握ActionScript 3.0这一强大的编程语言。ActionScript是Adobe Flash Professional、Adobe AIR等平台中的核心编程语言,尤其在创建交互式内容、动画...

    as3 flash 天气预报

    4. 时间更新:为了显示实时或定时更新的天气信息,可以使用AS3的Timer类来定期发送新的数据请求。同时,当数据更新时,界面相应地更新显示。 5. 用户交互:添加按钮或下拉菜单允许用户选择不同城市查看天气。事件...

    flash as3 弹球小游戏

    在本项目中,我们关注的是一个基于Flash ActionScript 3(AS3)开发的弹球小游戏。ActionScript是Adobe Flash Professional和Flash Player中用于创建交互式内容的主要编程语言。AS3是其最新的版本,提供了更强大的...

Global site tag (gtag.js) - Google Analytics