AS3的事件模型

作者: 2008-08-25,12:11 下午 周一

ActionScript 3.0 引入了单一事件处理模型,以替代以前各语言版本中存在的众多不同的事件处理机制。事件总管, flash.events事件包, 支持新的 DOM 事件模型 .AS3的事件模型解决了原先2.0时代的不少尴尬问题.如原来费心思去写双击类,现在MouseEvent有双击事件了.还有事件流的概念,我原来都是在按钮之中再叠一个按钮把他鼠标指针隐藏了,自已命名为防叠层,防止事件重叠,在开发win组件时会用得到.

1. MouseEvent

在类文件里添加鼠标事件类要先引入import flash.events.MouseEvent;
例:

1
2
3
4
5
6
7
bt.buttonMode = false ;//是否显视按钮状态,只用于对影片属性的设置
bt.mouseEnabled = false;//鼠标是否可用
bt.doubleClickEnabled = true;//是否可以双击,使用双击事件时,要先打开这个
bt.addEventListener(MouseEvent.DOUBLE_CLICK, doubleclick);
function doubleclick(event:MouseEvent):void {
    trace("真行,双击都会!")
}

MouseEvent(
type:String,
bubbles:Boolean = true, (default = true) — 确定 Event 对象是否参与事件流的冒泡阶段。
cancelable:Boolean = false, (default = false) — 确定是否可以取消 Event 对象。
localX:Number, — 事件发生点的相对于包含 Sprite 的水平坐标。
localY:Number, — 事件发生点的相对于包含 Sprite 的垂直坐标。
relatedObject:InteractiveObject = null, (default = null) — 受事件影响的补充 InteractiveObject 实例。 例如,发生 mouseOut 事件时,relatedObject 表示指针设备当前所指向的显示列表对象。
ctrlKey:Boolean = false, — 指示是否已激活 Ctrl 键。
altKey:Boolean = false, — 指示是否已激活 Alt 键(仅限 Windows)
shiftKey:Boolean = false, — 指示是否已激活 Shift 键。
buttonDown:Boolean = false, — 指示是否按下了鼠标主按键。
delta:int = 0)(default = 0) — 指示用户将鼠标滚轮每滚动一个单位应滚动多少行。 正 delta 值指示向上滚动;负值指示向下滚动。 通常所设的值为 1 到 3;值越大,滚动得越快。 此参数仅用于 MouseEvent.mouseWheel 事件。
MouseEvent事件表
CLICK : 定义 click 单击事件
DOUBLE_CLICK : 定义 doubleClick双击事件
MOUSE_DOWN : 定义 mouseDown鼠标按下事件
MOUSE_MOVE : 定义 mouseMove 鼠标移动事件
MOUSE_OUT : 定义 mouseOut 鼠标移出事件
MOUSE_OVER : 定义 mouseOver 鼠标移过事件
MOUSE_UP : 定义 mouseUp 鼠标提起事件
MOUSE_WHEEL : 定义 mouseWheel轨迹球滚动触发事件
ROLL_OUT : 定义 rollOut 滑入事件
ROLL_OVER : 定义 rollOver 滑出事件鼠标事件

2. 文本事件类

3. 时间类

  在AS3里面Event子类里的timer.有一个不如人意的,如: new Timer(1000,20)这表示以1000毫秒也就是1秒为间隔,触发20次动作,但这个1000毫秒并不是真正意义上的1000毫秒,取决于 SWF 文件的帧频或 Flash Player 的环境,如果机子慢也许要等到1200毫秒后才触发,这和以前用onEnterFrame控制一样,不准确.如果用他来做要求精确的定时器,那只能用另外的方法了!

1
2
3
4
5
6
7
8
var myTimer:Timer = new Timer(1000,20);// 1秒为间隔,触发20次动作
myTimer.addEventListener(TimerEvent.TIMER, timefun);
myTimer.start();//开始计时
var timeadd:Number=0;
function timefun(the:TimerEvent):void {
    timeadd+=1
    trace("时间事件:触发"+timeadd+"次")
}

timer所有方法:
Timer()每次构造新的 Timer 对象。
reset()重置,类似于秒表的重置按钮。
start()如果计时器尚未运行,则启动计时器
stop()停止计时器。

4. Loader事件

在加载开始时调度 open 事件。
在无法加载文件或在加载过程中出现错误时,调度 ioErrorsecurityError 事件。
在文件加载过程中会不断引发 progress 事件。
在文件完成下载但加载的影片剪辑的方法和属性尚不可用时调度 complete 事件。
在可以访问加载的 SWF 文件的属性和方法,即可以开始操作加载的 SWF 文件时调度 init 事件。 在 complete 处理函数之前调度该事件。 在流式 SWF 文件中,init 事件可以在明显早于 complete 事件的时间发生。 在大多数情况下,请使用 init 处理函数。

5.load事件

complete:Event — 文件下载完成后由关联的 LoaderInfo 对象调度。 complete 事件总是在 init 事件之后调度。 
httpStatus:HTTPStatusEvent — 在通过 HTTP 发出网络请求并且 Flash Player 可以检测到 HTTP 状态代码时,由关联的 LoaderInfo 对象调度。 
init:Event — 在可以访问被加载的 SWF 文件的属性和方法时,由关联的 LoaderInfo 对象调度。 init 事件总是在 complete 事件之前调度。 
ioError:IOErrorEvent — 在发生会导致加载操作失败的输入或输出错误时,由关联的 LoaderInfo 对象调度。 
open:Event — 下载操作开始时由关联的 LoaderInfo 对象调度。 
progress:ProgressEvent — 在下载操作进行过程中接收到数据时,由关联的 LoaderInfo 对象调度。 
unload:Event — 删除被下载的对象时,由关联的 LoaderInfo 对象调度。

5.FullScreenEvent事件

只要舞台进入或离开全屏显示模式,Flash 就调度 FullScreenEvent 对象。只有一种类型的

1
fullScreen

事件:

1
FullScreen<span class="searchhilite">Event</span>.FULL_SCREEN

6.DataEvent事件

将原始数据完全加载到 Flash  后,Flash将调度 DataEvent 对象。 存在两种数据事件类型:

  • DataEvent.DATA:针对发送或接收的数据进行调度。
  • DataEvent.UPLOAD_COMPLETE_DATA:当数据已发送且服务器响应后进行调度

删除事件侦听器
removeEventListener()

相关文章

分类 : FLASH (阅览:) Tags :

评论

还没有评论呢。


留下评论


|:victory:| |:tongue:| |:titter:| |:time:| |:sweat:| |:smile:| |:shy:| |:shocked:| |:sad:| |:mad:| |:lol:| |:kiss:| |:hug:| |:huffy:| |:handshake:| |:cry:| |:call:| |:biggrin:|