下面有两个很简单的一个例子:
例子一:
button.addEventListener("click",showText); //给按钮添加一个事件,第一个参数是事件的类型,第二个参数是调用什么方法
internal function showText(evt:MouseEvent):void{
txt.text = "click a button";
}
例子二:
btn1.addEventListener(MouseEvent.CLICK,onClick);
internal function onClick(evt:MouseEvent):void{
Alert.show("你点击了一下按钮","提示");
}
事件流:
调用事件会经过三个阶段:
1、捕获阶段:从根节点到子节点,检测对象是否注册了监听器,是则调用监听函数
2、目标阶段:调用目标对象本身注册的监听程序
3、冒泡阶段:从目标节点到根节点,检测对象是否注册了监听器,是则调用监听函数
注意:事件发生后,每个节点可以有2个机会(2选1)响应事件,分别是捕获和冒泡阶段,默认关闭捕获阶段
上面事件流可能看的有些生疏,比如一个界面中放了画布1,在画布1上放置了画布2,在画布2上面放置了按钮,在按钮1上注册了一个事件,
捕获阶段是从画布1->画布2->按钮1,然后到达目标阶段,检测到按钮1有注册事件,然后从按钮1->画布2->画布1(这个阶段称为冒泡阶段)
IEventDispatcher接口:
addEventListener(); //注册事件监听器
removeEventListener(); //移除事件监听器
dispatchEvent(); //派发事件
EventDispatcher类,参见手册
addEventListener()方法
此方法有5个参数:
参数1:调用事件的类型
参数2:调用什么方法
参数3:捕获阶段调用是否开启,默认不开启
参数4:优先级,值越大,优先级越高,
参数5:是否使用弱引用,默认是false,不使用弱引用(使用强引用),这个类似于java中的垃圾收集,如果改为true时就会收回垃圾
Event对象
Event类作为创建Event对象的基类,当发生事件时,Event对象将作为参数传递给事件监听器
最长见得如:MouseEvent,KeyboardEvent
自定义事件
1、创建自定义事件名称的Event
dispatchEvent(new Event("myEvent",true,false));
2、创建扩产事件类
Public class MyEvent extends Event{
......
}
示例一:dispatchEvent()方法的使用方法:本示例效果是:点击按钮后会弹出文本框“触发了"+Event1_.0.cav注册的:testEvent"事件”
<mx:Script>
<![CDATA[
import mx.controls.Alert;
internal function init():void{
cav.addEventListener("testEvent",onShow);
btn.addEventListener(MouseEvent.CLICK,onClick);
trace("1:addEventListener");
}
internal function onClick(evt:MouseEvent):void{
trace("2:dispatchEvent");
cav.dispatchEvent(new Event("testEvent",true,false));
}
public function onShow(evt:Event):void{
//evt.currentTarget:目前的事件流进了那个组件
//evt:target:是谁调用了这个事件(就是说事件流的目标是什么)
//如果不用if:要是按钮放在画布或其他容器上,其他容器注册了和按钮相同的事件,那么点击一次按钮后同一个方法就可能执行两次以上
if(evt.currentTarget == evt.target){
Alert.show("触发了"+evt.currentTarget+"注册的:"+evt.type+"事件");
}
}
]]>
</mx:Script>
<mx:Canvas x="37" y="47" width="200" height="299" id="cav" borderColor="#08436C" backgroundColor="#563D3D">
</mx:Canvas>
<mx:Button x="421" y="57" label="Button" id="btn"/>
第二个示例:定义类使用extends关键字自定义方法
//此自定义事件的功能是:调用事件的时候在构造方法中传入值,然后将值赋值到data变量中
package com.events
{
import flash.events.Event;
public class NewEvent extends Event
{
public static const NEWCLICK:String="newevent";
public var data:String;
public function NewEvent(type:String,data:String)
{
this.data=data;
super(type, false, false);
}
}
}
分享到:
相关推荐
ASP.NET可以很好地支持这种模型,通过定义状态和事件触发器,实现工作流的自动化执行。 4. **安全性**:ASP.NET内置的身份验证和授权机制有助于保护工作流系统免受未经授权的访问。通过配置角色和权限,可以确保...
如果View处理了事件(onTouchEvent返回true),事件流结束;若不处理(返回false),事件会回溯到父View,直到找到能处理的View或者到达根ViewGroup。 三、事件拦截机制 事件拦截机制主要涉及两个关键方法:...
在本项目"swift-自定义瀑布流可添加自定义header和footer"中,我们将探讨如何实现这样一个功能丰富的用户界面,并且能够添加自定义的头部和尾部视图。 首先,我们从创建自定义UICollectionViewFlowLayout开始。这个...
总结,为jQuery添加自定义事件机制是通过`$.fn.extend`扩展jQuery功能,使用`on`和`off`来绑定和解除事件,通过`trigger`来触发事件,并可以传递参数。这种机制极大地丰富了jQuery的事件处理能力,使得开发者能够...
这个压缩包“ios-瀑布流自定义.zip”包含了一个名为“WJWaterflowerView”的自定义控件,它是针对iOS平台,基于UITableView接口实现的瀑布流视图。 在iOS开发中,UITableView通常用于创建列表样式的数据展示,而...
本资源“ios-超详细自定义瀑布流 以及 自定义标签.zip”提供了关于如何在iOS应用中实现自定义瀑布流和标签的详细教程,对于初学者来说是非常有价值的参考。 首先,我们来深入理解瀑布流布局。瀑布流的核心在于其...
在这个项目中,“ios-自定义瀑布流(可添加自定义header和footer).zip”提供了一个自定义的iOS版瀑布流视图,允许开发者在其中添加自定义的头部和尾部组件,提升用户体验。 首先,我们要理解瀑布流的核心原理。它...
1. **自定义View组件**:由于Android原生并不直接支持瀑布流布局,开发者通常需要自定义一个ViewGroup,继承自LinearLayout、RelativeLayout或其他基础布局,并重写其测量和布局方法。这是实现瀑布流的关键步骤,...
总的来说,手写Vue工作流涉及到的知识点包括:Vue的基本概念和用法、组件化开发、响应式数据绑定、事件处理、Ant Design Vue的使用、自定义样式、计算属性和方法、状态管理、错误处理以及测试。通过这个过程,开发者...
瀑布流布局,也被称为...但总体来说,自定义ViewGroup实现瀑布流需要理解Android布局系统,熟悉测量和布局过程,以及掌握图片加载和内存管理策略。在实际项目中,这将是一个锻炼和提升Android开发技能的好机会。
5. **动态工作流**:高级的工作流自定义支持动态流程,即流程可以根据某些条件或事件动态改变路径,这在应对复杂多变的业务环境时非常有用。 6. **权限管理**:在自定义工作流时,需要考虑权限分配,确保只有授权的...
在jQuery中实现瀑布流,主要依赖于其强大的DOM操作和事件处理能力。首先,你需要引入jQuery库,这可以通过CDN链接或者将jQuery库文件下载到本地项目中来完成。然后,创建一个包含待布局元素的容器,并确保元素的初始...
总结来说,Swift的流水布局通过自定义UICollectionViewFlowLayout和相关的数据源及代理方法,使得开发者可以轻松定制UI和事件流。通过这种方式,我们可以构建出具有高度灵活性和适应性的用户界面,适应各种设备和...
1. **创建自定义滑块控件**:在`myslider.cpp`和`myslider.h`文件中,我们可以创建一个新的滑块类,继承自`CSliderUI`。这样,我们可以覆盖父类的方法并添加自己的逻辑。 ```cpp // myslider.h class MySliderUI : ...
瀑布流布局,也被称为Pinterest布局,是一种常见的网页和移动端应用设计模式,因其视觉效果像水流沿石块自然下落而得名。在Android开发中,实现自定义瀑布流布局可以帮助开发者构建富有动态感、视觉吸引力的展示界面...
- **灵活性**:通过自定义SDK,开发者可以根据项目需求调整播放器的底层逻辑,如视频解码、流媒体处理等,确保播放器适应各种复杂的环境。 - **优化性能**:根据特定场景优化代码,可以提高播放性能,减少资源消耗,...
【设计和自定义工作流简介】 在现代企业中,Microsoft SharePoint 网站成为团队协作和信息共享的重要平台。为了提升工作效率和生产力,无需编写代码,你可以利用SharePoint Designer 2010来设计无代码工作流解决方案...
本文主要讨论了从Node.js中的事件触发器到Vue框架中的自定义事件的原理和应用,帮助开发者深入理解这两者之间的关联。 首先,让我们从Node.js的事件触发器开始。Node.js提供了一个名为`EventEmitter`的内置模块,它...
Flex 事件流是Flex应用程序中事件处理的核心机制,它使得组件之间能够有效地通信和响应用户交互。在深入探讨之前,我们需要理解几个基本概念。 1. **事件机制**:事件是Flex中的一种通信方式,当特定条件满足时,...
泛微OA是一款企业级的办公自动化系统,其前端开发涉及到一系列接口方法和自定义方法,以实现对工作流、表单、页面等的定制。以下是对这些方法的详细解释: 1. **模板上代码块**:这是最基础的前端开发方式,针对...