TIMER类与ENTER_FRAME事件 - [FLASH 脚本]

[quote]

一、基本概念方法

ENTER_FRAME事件:

sp.addEventListener(Event.ENTER_FRAME,b)与

sp.addEventListener(“enterFrame”,b)等效

注意:不论sp是否加载到显示列表,sp都在不停的调用方法b。此外,MouseEvent.MOUSE_DOWN,KeyboardEvent.KEY_DOWN,TimerEvent.TIMER 等。这些都由 "mouseDown" , "keyDown" , "timer" 这样的简单字符串来表示。

Timer类

Timer 类是 Flash Player 计时器的接口。 可以创建新的 Timer 对象,以便按指定的时间顺序运行代码。使用 start() 方法来启动计时器。 为 timer 事件添加事件侦听器,以便将代码设置为按计时器间隔运行。

可以创建 Timer 对象以运行一次或按指定间隔重复运行,从而按计划执行代码。 取决于 SWF 文件的帧频或 Flash Player 的环境(可用内存及其它因素),Flash Player 会能会按稍有偏差的间隔调度事件。 例如,如果某个 SWF 文件设置为以每秒 12 帧 [fps](也就是 83 毫秒的间隔)的速度播放,但计时器设置为在 70 毫秒时触发事件,控制小球运动的话,测试的效果会出现不连贯的现象,因为 Flash Player 将按接近于 83 毫秒的间隔触发事件;另外,大量耗费内存的脚本也可能使事件发生偏差。

构造函数:

public 函数 Timer(delay:Number, repeatCount:int = 0)

使用指定的 delay 和 repeatCount 状态构造新的 Timer 对象。 计时器不会自动启动;必须调用 start() 方法来启动它。

参数


delay:Number — 计时器事件间的延迟(以毫秒为单位)。
repeatCount:int (default = 0) — 指定重复次数。 如果为 0,则计时器重复无限次数。 如果不为 0,则将运行计时器,运行次数为指定的次数,然后停止。

方法:

reset():void 如果计时器正在运行,则停止计时器,并将 currentCount 属性设回为 0,这类似于秒表的重置按钮。

start():void 如果计时器尚未运行,则启动计时器。

stop():void 停止计时器。

事件:

timerComplete 每当它完成 Timer.repeatCount 设置的请求数后调度。

两者区别:

ENTER_FRAME是按帧发生的,Timer是你可以自定义的时间和循环次数.

二、事件应用:

用ENTER_FRAME控制小球圆周运动

var sp:Sprite=new Sprite();

sp.graphics.beginFill(0xff0000,0.8);

sp.graphics.drawCircle(0,0,25);

sp.graphics.endFill();

addChild(sp);

var i:int=0;

//stage.frameRate=30;

addEventListener(Event.ENTER_FRAME,ballMove);

//addEventListener("enterFrame",ballMove);

function ballMove(e:Event):void{

sp.x=275+Math.cos(i*Math.PI/180)*100;

sp.y=200+Math.sin(i*Math.PI/180)*100;

i++;}

用TIMER控制小球圆周运动:

var sp:Sprite=new Sprite();

sp.graphics.beginFill(0xff0000,0.8);

sp.graphics.drawCircle(0,0,25);

sp.graphics.endFill();

addChild(sp);

var myTimer:Timer=new Timer(83.3,0);//关于该数的设置见TIMER类的说明

myTimer.start();

myTimer.addEventListener(TimerEvent.TIMER,ballMove);

//myTimer.addEventListener("timer",ballMove);

var i:int=0;

function ballMove(e:Event):void{

sp.x=275+Math.cos(i*Math.PI/180)*100;

sp.y=200+Math.sin(i*Math.PI/180)*100;

i++;}

测试两个小球的运动状态,看效果是否一样?
[/quote]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值