- 浏览: 346750 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
lliiqiang:
在功能上,由于flex不支持加载外来的类的反射机制,所以可以通 ...
Flex Module专题 -
迪伦少校:
工程报错呢?。。
关于DEGRAFA的简介 -
chwnchwn:
不错的东西
关于DEGRAFA的简介 -
lorry1113:
学习了,多谢!!!!
重写FLEX组件 -
cuixuxucui:
var str:String = "";v ...
AS3 Array学习笔记
先来看个例子:
地点:饭馆类(extend Sprite or UIcomponent...,是个容器就行)
人物:客人类(extend EventDispatcher,会说话就行)、厨师类(extend Object,能
满足客人需求就行)
一、四个步骤:注册侦听、分发事件、侦听事件、移除侦听。
(1)、注册侦听:客人进入饭馆,使用addEventListener指定某厨师准备做菜。
(2)、分发事件:客人使用dispatchEvent对厨师进行喊话,表示我要吃什么。喊话内
容被放在Event类或其子类里,主要包括类型、目标和数据三部分。类型(Type)就是点
菜,而不是结账,上酒水。目标(Target)用来记录是哪桌的客人。数据(Data)用来保
存重要信息,如果是点菜,那记的就是菜名。
(3)、侦听事件:根据注册侦听中的需求,厨师开始做菜。
(4)、移除侦听:不移除的后果就是,以后在任意餐馆里喊话叫菜,所有注册过侦听的
餐馆厨师都开始做菜。
一些细节:
(1)、为了方便客人类在饭馆类中使用MXML标签注册侦听,常常在客人类中使用Event
标签。比如[Event(name="onChange", type="components.MyEventTest")]
(2)、注册侦听时,可以使用弱引用,即更改addEventListener中的useWeakReference
属性的默认值false为true。这样垃圾回收器会检测弱引用侦听并自动移除,极其不建
议这样做,而是直接移除侦听。
(3)、当客人类已经继承了某类,无法再继承EventDispatcher时,可以考虑实现
IEventDispatcher接口。额外地,需要实现此接口定义的五个方法addEventListener
、dispatchEvent、willTrigger、removeEventListener和hasEventListener。当然,
在实现过程中,可以灵活地添加别的新特性。
二、事件流机制
(1)、捕获阶段:Flash Player会按照显示列表,从根容器舞台往下找,直到确定是哪
个桌的客人在喊话要菜。
(2)、目标阶段:捕获阶段结束时停在哪个目标对象上。
(3)、冒泡阶段:事件对象从目标对象再次沿显示列表往上移动至根容器舞台,遇到注
册侦听的节点就调用侦听函数。如果想中途中断冒泡,可以使用stopPropagation,详
见文末Event备注部分。
一些细节:
(1)、这三个阶段由Event中的eventPhase属性来记录,1表示捕获,2表示目标,3表示
冒泡。
(2)、目标阶段确定的目标对象由Event中的target属性来记录,冒泡阶段移动的游标
则由currentTarget来记录。事件对象每往上移动一级,就会克隆出一个仅与前副本
currentTarget不同的新副本。这也提示我们,在自定义Event类时,如果打开了冒泡
属性bubbles,则必须要覆盖原有的clone方法,否则在冒泡时就会丢失自定义的存储
数据。同样,最好也覆盖原有的toString方法。
(3)、侦听器的调用一般发生在冒泡阶段。但是当target等于currentTarget,也就是
当前侦听对象就是事件发生对象时,冒泡阶段就没有了,这时目标阶段就发生了侦听
器调用。如果希望在捕获阶段侦听事件,将addEventListener中的useCapture参数改
为true即可,这时冒泡阶段将不再发生侦听。如果希望仍在冒泡阶段继续侦听,需要
新添加一个useCapture为默认值false的侦听。
(4)、事件对象是否可以冒泡要看两点:第一,事件本身是否支持冒泡,由bubbles属
性设定,为true则支持,默认为false;第二,如果事件发生的对象不在显示列表中,
也不可能冒泡,此时只有目标阶段,如Timer和URLLoader。
(5)、显示列表下,某个容器中有两个并列子节点1和2。如果子节点1发出事件,需要
在子节点2中进行侦听,默认情况下是做不到的。常用的一种办法是向子节点1和子节
点2都传入一个相同的对象的实例,在子节点1中用这个对象实例发出事件,在子节点2
中用这个对象实例监听事件(在目标阶段捕获事件)。这样就可以收到字节点1的事件
了。
三、Event备注
属性:
bubbles:只读,布尔,事件是否开启冒泡功能
cancelable:只读,布尔,处理事件的默认行为是否可以停止。主要针对一些系统事
件,如果值为true,则Event的preventDefault方法可以使用,否则不可用。
currentTarget:只读,对象,当前正在调用监听器的对象
eventPhase:只读,整数,返回事件流正经历的阶段。1:捕获,2:目标,3:冒泡
target:只读,派发事件的目标对象
type:只读,字符,事件类型。比如鼠标点击事件的类型:click,并被定义为常量:
MouseEvent.CLICK
构造函数:
Event(
type:String, 事件类型
bubbles:Boolean = false, 是否冒泡
cancelable:Boolean = false 是否可以停止
)
方法:
isDefaultPrevented:判断preventDefault 是否已经被调用
preventDefault:停止事件的默认行为。针对一些系统事件,cancelable为true时才
可用。
stopImmediatePropagation:停止当前的事件流传播,包括当前正在处理的对象
stopPropagation:停止当前的事件流传播,但不会停止当前正在处理的对象
四、侦听器备注
addEventListener(
type:String, 事件的类型
listener:Function, 监听函数
useCapture:Boolean = false, 是否打开捕获功能
priority:int = 0, 监听器优先级别
useWeakReference:Boolean = false 是否使用弱引用
)
默认情况下,Flex会按照监听器注册的顺序来调用监听函数。使用addEventListener
函数的priority 来实现 监听函数的优先级。priority 为整数类型,数字越大,级别
越高。级别最高的最先被调用。已经存在的监听器,无法被修改优先级。使用MXML添
加的事件监听函数无法指定优先级别,将采用默认的级别。给一个对象注册多个监听
器,即使每个监听器的优先级别不同,但也无法保证后一个执行时前面的监听函数已
经执行完毕。设计时,后面的函数不应该以前者执行完毕为条件。
发表评论
-
白名单屏蔽字 unicode字符范围
2016-07-05 16:58 797(_word.unicode >= 0x2001 ... -
flash textfiled换行 以及\r和\n区别
2016-06-20 15:11 1879flash.text.TextField.wordWrap ... -
flash 字体
2016-05-20 17:35 6961.FTE和TLF的关系 http://zengr ... -
Flex Date对象与UTC之间的关系
2013-08-07 14:16 2341转自 Flex Date对象与UTC ... -
as3 数据结构array,object,dictionary用哪个
2011-12-29 16:43 4386今天在处理背包物品时,考虑是用Array还是dictionar ... -
CS5 中禁用SimpleButton
2011-12-09 11:48 1879需要在CS5中对一个SimpleButton设置禁用效果,即不 ... -
Event.FRAME_CONSTRUCTED
2011-12-07 19:07 2105_oPBox是个MovieClip,共3帧,其中第1帧有 ... -
使用拼接的属性来访问Object
2011-11-28 15:58 10551.VO:Objectt有这些属性: public ... -
ShareObject简记
2011-10-25 18:58 1022引用: _soundSO = Shared ... -
字符集学习笔记(二)
2011-10-21 14:08 1553参考http://www.discuz.net/thre ... -
字符集学习笔记(一)
2011-10-20 17:17 1526摘自http://bbs.9ria.co ... -
使用AS3帧代码控制动画
2011-10-17 14:26 3921美术同事出了一个资源,大致是这样的:四个角色形象动画,聚在一个 ... -
flash cs将一个MC变成BUTTON
2011-09-15 16:50 1792在FLASH CS中,设置一个MC的三帧名字分别为 ... -
flash中的in关键字
2011-09-08 18:10 1293in这个关键字挺有意思的: package { ... -
VerifyError: Error #1024: 发生堆栈下溢
2011-08-26 16:14 4567今天出现了奇怪的问题,RELEASE版本的背包操作总是报Ver ... -
TextField的高宽autosize
2011-08-17 14:25 3360var t_name:TextField = new Text ... -
FLASH注册点与中心点(转)
2011-08-16 10:23 4776http://space.flash8.net/space/? ... -
flashbuilder不同版本共用工作空间的问题
2011-08-02 13:36 2421今天因为项目需要,安装了FB4.5,当然原来的FB4.0没舍得 ... -
flashplayer内存管理
2011-07-29 11:18 4386参考Flash务实主义(五)——AS3的垃圾回收 ... -
从SVN上的FD项目上,构建FB项目
2011-07-28 15:18 3646说一下概况: 项目是一个FD(FlashDevelop ...
相关推荐
事件处理系统是交互式程序设计的重要基础。利用事件处理机制,可以方便的相应用户输入和系统事件。ActionScript 3.0的事件机制基于文档对象模型(DOM3)。
简要说明了flex的事件流、事件处理等方面的知识。
本文为大家分享了javascript跨浏览器事件处理机制,供大家参考,具体内容如下 <!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>跨浏览器的事件处理程序</...
2011年颁布的开放标准AS6802,它继承了IEEE1588协议中的透明时钟机制,同时在同步处理过程中,增加了一系列容错机制,有效解决了IEEE 1588协议无法进行容错处理的缺陷;同时AS6802中引入了全局时间基准,网络节点的...
首先,Python 完整的异常处理语法结构如下: try: #业务实现代码 except Exception1 as e: #异常处理块1 ... except Exception2 as e: #异常处理块2 ... #可以有多个 except ... else: #正常处理块 finally :...
第1~4章是ASENET的核心部分,细致地剖析了ASP.NET中的请求处理机制、ASP.NET中的对象与HTTP之间的映射关系、应用程序处理管道的处理过程、处理程序的处理机制,以及多线程技术在ASENET中的应用。第5~8章是经典的...
但是浏览器有addEventListener和attachEvent方法可供调用,从而模拟出类似于C#中的事件委托的事件触发机制! 代码如下: /* * 功能:事件处理 * Author:LQB * 时间:2009-1-4 * #include JCore.js */ var JEvents = ...
事件传播机制 客户端JavaScript程序(就是浏览器啦)采用了异步事件驱动编程模型。当文档、浏览器、元素或与之相关的对象发生某些有趣的事情时,Web浏览器就会产生事件(event)。如果JavaScript应用程序关注特定...
信号(不要与JVM的本机信号处理相混淆)本质上是一种自包含的事件调度机制。 每个信号对应一个唯一的事件,该事件包含其自己的侦听器列表和事件数据类型。 每个事件只需要一个Signal实例,不需要额外的常量或子类。...
首先,DOM Level2为事件处理定义了两个函数addEventListener和removeEventListener, 这两个函数都来自于EventTarget接口. 代码如下: element.addEventListener(eventName, listener, useCapture); element....
vb6控件一般都不支持【鼠标滚轮滚动事件】,那么我们利用消息处理机制(Hook消息处理函数),给控件增加一个鼠标滚轮滚动事件。 资源【VB6MouseWheel.zip】中包含VB6源码+示例exe。 代码示例是给一个文本框text...
事件机制为我们的web开发提供了极大的方便,使得我们能在任意时候指定在什么操作时做什么操作、执行什么样的代码。 如点击事件,用户点击时触发;keydown、keyup事件,键盘按下、键盘弹起时触发;还有上传控件中,...
然而这种DOM处理方法在HTML5的Canvas里不再适用,Canvas使用的是另外一套机制,无论在Canvas上绘制多少图形,Canvas都是一个整体,图形本身实际都是Canvas的一部分,不可单独获取,所以也就无法直接给某个图形增加...
程序健壮性最基本要求就是程序错误的处理与捕捉,在ASP.NET中,错误的处理有和其他编程语言一样的机制,可以使用Try…Catch…Finally等方式,这一点和ASP相比具有较大的进步。而且,使用这些错误处理方法,可以大大...
PS:这种方式和Java GUI中的事件监听机制很像,都是需要注册监听,然后再处理监听,只不过实现的方式不同而已。 二、事件驱动原理 事件源:产生事件的地方(html元素) 事件:点击/鼠标操作/键盘操作等等 事件对象...
目录 引 言 7 第一章 绪论 8 1.1.1 计算机图形图像学的发展简史 8 1.1.2现有图形图像处理软件 8 1.2 课题研究的目的及意义 9 第二章 图形图像处理软件开发技术基础 10 2.1 Java Swing 简介 10 2.1.1 Swing的特性 10 ...
libevent是一个事件触发的网络库,适用于windows、linux、bsd等多种平台,内部使用select、epoll、kqueue等系统调用管理事件机制。著名分布式缓存软件memcached也是libevent based,而且libevent在使用上可以做到跨...
1.加密- 对swf进行加密,包括基于as2以及as3的swf文件。与其他加密软件不同的是,DoSWF也能对库元素进行加密,从而保证作品的安全。 2.混淆-DoSWF支持对as3进行高度的混淆操作,包括字符混淆以及指令。能有效的对抗...
Braodcast Receiver顾名思义就是广播接收器,它和事件处理机制类似,但是事件处理机制是程序组件级别的(比如:按钮的单击事件),而广播事件处理机制是系统级别的。我们可以用Intent来启动一个组件,也可以用...
基于LSTM和注意力机制预测蛋白质python源码(配体结合亲和力)+数据+代码注释.zip 一、环境: 首先,创建一个Conda环境,并为运行实验安装一些必要的软件包。 TensorFlow 2.0 pandas库 Numpy库 Openbabel软件 mdtraj...