[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]
一、基本概念方法
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]