`

使用events

阅读更多

使用events
在flex中使用event需要二步,你需要定义一个函数或者类方法来处理事件
可以通过addEvent
<?xml version="1.0"?>
<!-- events/SimpleEventHandler.mxml -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="initApp();">
<mx:Script><![CDATA[
 import mx.controls.Alert;
 private function initApp():void {
  b1.addEventListener(MouseEvent.CLICK, myEventHandler);
 }
 private function myEventHandler(event:Event):void {
  Alert.show("An event occurred.");
 }
]]></mx:Script>
<mx:Button id="b1" label="Click Me"/>
</mx:Application>
也可以采用
<?xml version="1.0"?>
<!-- events/SimplerEventHandler.mxml -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:Script><![CDATA[
 import mx.controls.Alert;
 private function myEventHandler(event:Event):void {
  Alert.show("An event occurred.");
 }
]]></mx:Script>
<mx:Button id="b1" label="Click Me" click="myEventHandler(event)"/>
</mx:Application>
上面的二中方法是一样的,但是建议采用addEventListener的方式


专门化Event对象
添加事件的方式通过参数传入
function myEventListener(e:Event):void;

import mx.event.ToolTip
function myEventListener(e:ToolTipEvent):void

访问currentTarget属性
currentTaget属性就是事件关联的组件

注册事件处理
1、定义处理函数           
 <mx:tag_name event_name="handler_function"/>
2、使用addEventListener方法注册 
 comonentInstance.addEventListener(
 event_typ:String,
 event_listener:Function,
 user_capture:Boolean,
 priority:int,
 weakRef:Boolean)

给处理函数增加参数
由于addEventListener已经确定量4个参数,所以无法在添加参数,那可以在处理函数上添加参数
<mx:Script>
public function addListeners():void {
b1.addEventListener(MouseEvent.CLICK,clickListener);
}
public function clickListener(e:MouseEvent, a:String):void { ... }
</mx:Script>
<mx:Button id="b1"/>  


手动dispatch事件
可以通过组件的dispatchEvent方法手动派发事件

事件传播
当事件产生以后,有3个阶段,按照如下顺序进行
capturing
targeting
bubbling

capturing phase(捕获阶段)
在捕获阶段,flex检测显示列表中事件祖先,看那个注册了事件监听,flex从根组件开始,逐级遍历显示列表到直接目标对象
在大多数情况下,根组件主要是Stage,SystemManager,Application,
例如,如果你有一个包含TitleWindow容器的Panel容器,结果如下
application
    pannel
        TitleWindow
            Button      
当在button上发生click事件时,将发生如下步骤
1、检查application的click事件监听器
2、检查panel的click事件监听其
3、检查TitleWindow的click事件监听
当捕获阶段,flex更换currentTarget属性到当前的节点,current属性关联到事件对象
缺省的在捕获阶段,容器没有监听,缺省的use_capture参数是false,唯一一个方式就是在addEventListener的时候传递
参数为true
myPanel.addEventListener(MouseEvent.MOUSE_DOWN,clickHandler,true);
如果你在mxml中定义,采用默认的false,无法修改
targeting阶段
在定位阶段,flex执行事件派发
bubbling阶段
在bubbling阶段,flex执行事件的祖先,flex派发直接父类,继续到根空间,这个也捕获相反

    
3、创建一个事件处理类,将组件注册到事件处理类上


探索实践的结构
你可以决定拟使用时间的那个阶段,采用eventPhase属性,这个属性包含了下面的int值
1 - capturing phase(CAPTURING_PHASE)
2 - Targeting phase(AT_TARGET)
3 - Bubbling phase(BUBBLING_PHASE)

事件优先级
一个事件你可以注册多次,flex注册的顺序是通过addEventListener的顺序调用的
addEventListener的第四个参数就是优先级,默认为0,首先执行高的,然后执行低的

使用子类

按键事件

分享到:
评论

相关推荐

    微信小程序wx.navigateTo方法里的events参数使用详情及场景

    本文将详细介绍`events`参数的使用及其应用场景。 `events`参数的引入,使得在跳转过程中可以执行目标页面的方法并传递数据,提高了用户体验。以购物场景为例,用户在订单列表页可以跳转到评论订单页,完成评论后...

    unity实现车方向盘转动效果

    实现车方向盘转动效果需要使用到多种技术,包括获取屏幕坐标、计算角度、实现拖拽功能、更新模型的旋转、使用 C# 脚本、使用 Unity 的 Events、使用 RectTransform、使用 Camera、使用 Transform 和实现交互功能等。

    Java的Events事件实例

    在Java编程语言中,事件(Events)是GUI(图形用户界面)编程的重要组成部分。Java的事件处理机制使得用户与应用程序的交互变得可能,比如点击按钮、选择菜单项或输入文本等。本文将深入探讨Java中的事件及其应用...

    events.out.tfevents tensorboard模型文件

    在实际使用中,我们首先需要启动TensorBoard,然后指向包含"events.out.tfevents"文件的目录。TensorBoard会读取这个文件,并在浏览器中打开一个交互式的界面,展示模型训练的各种信息。这对于调试模型、理解和改进...

    Oracle 11g Events深入剖析

    - 特别地,可以使用立即跟踪名称来记录诊断信息:`ALTER SESSION SET EVENTS 'immediate trace name dump level'`。 2. **对于所有新会话**: - 使用`ALTER SYSTEM SET EVENTS`语句。 - 示例:`ALTER SYSTEM SET...

    详解如何模拟实现node中的Events模块(通俗易懂版)

    一、Events模块的基本使用及简单实现 基本用法是通过EventEmitter类,实现on和emit方法来实现事件监听和触发。on方法用于绑定事件监听器,而emit用于触发事件,进而调用所有绑定的监听器。下面通过简单的代码示例,...

    E-Debug Events V1.5 易语言调试工具

    本文将深入探讨E-Debug Events V1.5的功能、使用方法以及其在易语言调试中的独特优势。 首先,E-Debug Events V1.5的核心功能在于获取易语言程序中的按钮事件地址。在易语言中,事件驱动编程是一种常见的编程模式,...

    Windows Socket 模型

    - 高并发、大流量的应用应考虑使用events模型,特别是IOCP,它可以提供更好的性能和扩展性。 - 开发者需要根据实际需求、系统资源和预期的并发量来决定采用哪种模型。 5. **实际应用** - 在Web服务器、聊天应用...

    Laravel开发-mailgun-events

    本教程将深入探讨如何在Laravel项目中配置和使用Mailgun Events。 1. **安装Mailgun**: 在开始之前,你需要注册一个Mailgun账户并获取API密钥。安装Mailgun服务提供者可以通过Composer来完成,运行以下命令: ``...

    ionic4事件订阅服务events.ts

    ionic4升级ionic5被移除的Events服务,新项目已不推荐使用,主要给老项目升级使用(https://github.com/ionic-team/ionic/blob/master/CHANGELOG.md)。

    DNS Client Events错误尝试读取本地主机文件时出错

    标题中的“DNS Client Events错误尝试读取本地主机文件时出错”是指在Windows操作系统中,DNS客户端服务在尝试访问和解析本地计算机的主机文件(也称为“hosts”文件)时遇到的问题。这个问题可能会导致网络连接故障...

    GFI EventsManager 8.0 事件管理器 part5

    &lt;br&gt;GFI EventsManager 是一款使用简单的事件管理解决方案,可以对从各种日志类型(包括 Windows 事件、W3C 和 Syslog)收集的事件进行监控、归档、处理和报告。 该产品以最先进的事件处理和过滤规则在行业中...

    2019-labview-events_for_ui_actor_indicators-1.0.0.6

    “events_for_ui_actor_indicators-1.0.0.6.vip”文件是一个LabVIEW虚拟仪器包(VI Package),它封装了特定的函数、子VI和资源,以便于开发者导入和使用。安装这个包后,可以在项目中直接调用相关的组件和功能,...

    GFI EventsManager 8.0 事件管理器 part6

    &lt;br&gt;GFI EventsManager 是一款使用简单的事件管理解决方案,可以对从各种日志类型(包括 Windows 事件、W3C 和 Syslog)收集的事件进行监控、归档、处理和报告。 该产品以最先进的事件处理和过滤规则在行业中...

    backbone-events-standalone, 独立,最低版本的Backbone.Events.zip

    backbone-events-standalone, 独立,最低版本的Backbone.Events backbone-events-standalone 这是在浏览器或者nodejs环境中,提取 Backbone 插件( 可以使用独立的( 无外部相关性) )的事件的插件模块。哦,亲爱的,为...

    oracle scheuler

    #### 五、使用 Events **4.1 Scheduler 抛出的 Events** Event 可以是系统触发的(例如数据库关闭),也可以由应用程序主动抛出。Scheduler 支持监听特定事件,并据此执行相应的 Job。 **4.2 Application 抛出的 ...

    前端项目-knockout-delegated-events.zip

    **前端项目-knockout-delegated-events** 在前端开发中,事件处理是用户交互的核心部分。Knockout.js 是一个流行的 JavaScript MVVM(Model-View-ViewModel)库,它简化了数据绑定和DOM操作。然而,原生 Knockout....

    template-terms-of-service:使用 Events API 和交互式消息向新用户发送服务条款或欢迎消息的示例 Slack 应用程序

    如果您使用 Plus 计划或 Slack Enterprise Grid,您可以使用来禁用用户的帐户。设置创建一个Slack应用启用交互式组件(请参阅下面的启用交互式组件) 导航到“ OAuth和权限”页面,然后添加以下漫游器令牌作用域: ...

    vim-tmux-focus-events, 使终端vim和tmux更好地协同工作.zip

    vim-tmux-focus-events, 使终端vim和tmux更好地协同工作 tmux-focus-events.vimFocusGained 和 FocusLost 自动命令事件在终端vim中不工作。 这个插件在使用vim内部Tmux时恢复它们。以下是相关内容:vim fugitive插件...

Global site tag (gtag.js) - Google Analytics