`

UIComponent中的事件

    博客分类:
  • Flex
阅读更多

UIComponent.as

//--------------------------------------
//  Lifecycle events
//--------------------------------------
[Event(name="add", type="mx.events.FlexEvent")]

在调用addChild()或addChildAt()将组件作为content child添加到某个container后派发。
而调用rawChildren.addChild()或rawChildren.addChildAt()将组件作为noncontent child添加到某个container时不会派发。
******

[Event(name="creationComplete", type="mx.events.FlexEvent")]

在组件完成构建,属性处理,测量,布局以及绘制后派发。
此时,组件会依据visible的设置来显示或不显示,即使组件已绘制完毕。
******

[Event(name="updateComplete", type="mx.events.FlexEvent")]

在组件的commitProperties(), measure()</code>, 和updateDisplayList()方法执行完毕后派发。
这是在组件显示前调整组件的最后机会。所有的属性都已完成提交并且组件已经完成测量和布局。
******

[Event(name="hide", type="mx.events.FlexEvent")]

在组件的状态由可见变为不可见时派发。
******

[Event(name="initialize", type="mx.events.FlexEvent")]

在组件完成构建和所有的初始化属性设置后。
初始化阶段之后,会完成属性的处理、组件的测量、布局和绘制,随即派发creationComplete事件。
******

[Event(name="move", type="mx.events.MoveEvent")]

在组件移动后派发。
移动是指需要LayoutManager来改变组件的x和y属性,如:
直接改变x和y,调用move()方法,或改变下列属性:
 *  <ul>
 *    <li><code>minWidth</code></li>
 *    <li><code>minHeight</code></li>
 *    <li><code>maxWidth</code></li>
 *    <li><code>maxHeight</code></li>
 *    <li><code>explicitWidth</code></li>
 *    <li><code>explicitHeight</code></li>
 *  </ul>
当调用move()方法时,move事件在move() return前派发。而在其他所有情况下,move事件在属性修改后派发。
******

[Event(name="preinitialize", type="mx.events.FlexEvent")]

在组件的初始化序列的最开始派发。在本事件被派发时,组件处于非常粗略/原始的状态。
许多组件,如Button control,创建internal child 组件来实现功能。例如,Button control创建一个内部的UITextField 组件来代替其label 文本。
当Flex派发preinitialize事件时,其children,包括internal children尚未被创建。
******

[Event(name="remove", type="mx.events.FlexEvent")]

对应add事件。
******

[Event(name="resize", type="mx.events.ResizeEvent")]

在组件被resized后派发。
可以通过设置组件的width和height,调用setActualSize()方法,或设置下列属性使得LayoutManager需要更改width和height :
 *  <ul>
 *    <li><code>minWidth</code></li>
 *    <li><code>minHeight</code></li>
 *    <li><code>maxWidth</code></li>
 *    <li><code>maxHeight</code></li>
 *    <li><code>explicitWidth</code></li>
 *    <li><code>explicitHeight</code></li>
 *  </
ul>
resize事件在属性更改后派发。
******

[Event(name="show", type="mx.events.FlexEvent")]

在组件的状态从invisible改为visible时。
******

//--------------------------------------
//  Mouse events
//--------------------------------------
[Event(name="mouseDownOutside", type="mx.events.FlexMouseEvent")]

用PopupManager打开的组件,当鼠标在组件外部点击时派发。
******

[Event(name="mouseWheelOutside", type="mx.events.FlexMouseEvent")]

用PopupManager打开的组件,当鼠标滚轮在组件外部滚动时派发。
******

//--------------------------------------
//  Validation events
//--------------------------------------
[Event(name="valueCommit", type="mx.events.FlexEvent")]

当值被程序或者用户交互方式修改后。
由于程序方式修改值会触发本事件,请确保在任何valueCommit事件的处理方法中不会改变某个值从而触发另一个valueCommit事件。
例如,不要在一个valueCommit事件处理方法中修改一个control的dataProvide的属性。
******

[Event(name="invalid", type="mx.events.FlexEvent")]

当组件被Validator监视并且验证失败时派发。
******

[Event(name="valid", type="mx.events.FlexEvent")]

当组件被Validator监视并且验证成功时派发。
******

//--------------------------------------
//  Drag-and-drop events
//--------------------------------------
[Event(name="dragEnter", type="mx.events.DragEvent")]

在拖放操作中,当鼠标移上组件时由该组件派发。
在Flash Player中运行的程序,在鼠标移上任何组件时会派发本事件多次。
而在AIR中运行的程序,本事件只派发一次。

若想成为合法的释放目标,需要定义方法来接收本事件。在处理方法中,可以改变释放目标的表现来提供本组件是否接收释放的可视化反馈。
例如,可以给目标组件绘制边框,或者将组件设为焦点。

如果想接受拖放,必须调用DragManager.acceptDragDrop()方法。如果不调用该方法,将不会获得其他任何拖放事件。

在Flash Player中,action属性的值总是DragManager.MOVE,即使是在复制。
这是因为dragEnter事件发生在control识别Control键按下之前。
dragOver事件的action属性确实有值来表明拖放操作的类型。可以通过调用DragManager.showFeedback()来改变其值。

在AIR中,action属性的默认值是DragManager.COPY。
由于Tree的数据构成方式,Tree在处理拖和放时不同于其他的list-based 组件。
对于Tree组件,dragDrop事件的处理方法在同一个Tree中移动或者复制数据,或者向另一个Tree中复制数据时,只执行一个操作。
如果从一个Tree中通过拖放来移动数据到另一个Tree中,dragComplete事件的处理方法会执行这个操作 -- 添加数据到目标Tree,并删除源Tree 的数据, 而不是dragDrop事件的处理方法。
这是必须的,因为要重新为被移动的数据设定parent,Flex必须先从原来的Tree中删除它。

参加mx.managers.DragManager 。
******

[Event(name="dragOver", type="mx.events.DragEvent")]

在拖放操作中,当鼠标移上某组件时由该组件派发。
在Flash Player中,当拖动操作的目标组件是合法的释放目标时派发本事件。
在AIR中,拖动操作的目标组件是任意组件都会触发,即使目标组件不是合法的释放目标。

在处理方法中,可以改变释放目标的表现来提供本组件是否接收释放的可视化反馈。
例如,可以给目标组件绘制边框,或者将组件设为焦点。

你应该处理事件以便在释放之前执行其他逻辑判断,如释放数据到释放目标的其他区域,读取键盘输入来决定本次操作是move还是copy,或根据拖放动作的类型来反馈不同的可视化效果。

你也可以通过DragManager.showFeedback()来改变拖动操作。action属性的默认值是DragManager.MOVE。

参加mx.managers.DragManager 。
******

[Event(name="dragExit", type="mx.events.DragEvent")]

当在组件外部拖动但并没有释放数据到本组件时派发。

可以通过本事件来恢复到未拖入时的普通状态。
******

[Event(name="dragDrop", type="mx.events.DragEvent")]

当用户在释放目标上释放鼠标时派发。

通过本事件的处理方法可以添加被拖动的数据到释放目标。

在从一个Tree拖动数据到另一个Tree时,如果在处理方法中调用Event.preventDefault(),会阻止释放。
******

[Event(name="dragComplete", type="mx.events.DragEvent")]

在拖动动作完成时由drag initiator(拖动数据的源组件)派发,不管释放是否成功。

可以通过本事件来执行对本次拖放动作的最终清理操作。例如,如果从一个List组件拖放项目到另一个List,可以删除源数据。

如果在Tree组件之间拖放时,在dragComplete事件的处理方法中调用Event.preventDefault(),会阻止释放。
******

[Event(name="dragStart", type="mx.events.DragEvent")]

由源组件在拖放开始时派发。
本事件在list-based组件内部使用。在拖放过程中不需要处理本事件。
如果想要控制拖放操作的开始,可以用mouseDown或者mouseOver事件。
******

//--------------------------------------
//  Effect events
//--------------------------------------
[Event(name="effectStart", type="mx.events.EffectEvent")]

在效果开始前派发。

在本事件被派发前,效果不会改变任何可视化元素。
******

[Event(name="effectStop", type="mx.events.EffectEvent")]

只有在调用stop()方法停止效果后派发。

效果随后在完成时派发EFFECT_END事件。EFFECT_STOP事件的目的是让事件监听得知事件尚未完成就被终止,而不是自然的结束或者调用end()方法结束。
******

[Event(name="effectEnd", type="mx.events.EffectEvent")]

在效果结束时派发。

在本事件被派发之前,效果做了最后的一些视觉改变,但还没有渲染到屏幕上。
因此,你可能需要调用callLater()方法来延迟后续操作,直到所有的视觉修改都被渲染到屏幕上。
******

//--------------------------------------
//  State events
//--------------------------------------
[Event(name="currentStateChanging", type="mx.events.StateChangeEvent")]

在修改currentState属性的值之后,但是在视觉状态改变之前派发。

本事件只有在派发者有一个或多个相关监听时才被派发。
******

[Event(name="currentStateChange", type="mx.events.StateChangeEvent")]

在视觉状态改变之后派发。

本事件只有在派发者有一个或多个相关监听时才被派发。
******

[Event(name="enterState", type="mx.events.FlexEvent")]

在组件进入一个视觉状态后派发。

本事件只有在派发者有一个或多个相关监听时才被派发。
******

[Event(name="exitState", type="mx.events.FlexEvent")]

在组件退出一个视觉状态前派发。

本事件只有在派发者有一个或多个相关监听时才被派发。
******

//--------------------------------------
//  Tooltip events
//--------------------------------------
[Event(name="toolTipCreate", type="mx.events.ToolTipEvent")]

在将要创建ToolTip时派发。

如果你创建了自己的IToolTip对象,并在toolTip属性中放置了引用,ToolTipManager 会显示你自定义的ToolTip。否则,ToolTipManager会创建ToolTipManager.toolTipClass的实例来显示。

ToolTip事件的序列是:toolTipStart,toolTipCreate,toolTipShow,toolTipShown,toolTipHide和toolTipEnd。
******

[Event(name="toolTipEnd", type="mx.events.ToolTipEvent")]

当ToolTip被隐藏并很快会被抛弃时派发。

如果用ToolTipManager.hideEffect定义了效果,那么本事件会在效果停止播放后派发。
******

[Event(name="toolTipHide", type="mx.events.ToolTipEvent")]

在ToolTip将要被隐藏时派发。

如果用ToolTipManager.hideEffect定义了效果,那么本事件会在效果开始播放前派发。
******

[Event(name="toolTipShow", type="mx.events.ToolTipEvent")]

在ToolTip将要显示时派发。

如果用ToolTipManager.showEffect定义了效果,那么本事件会在效果开始播放前派发。
你可以在ToolTip出现之前用本事件进行修改。
******

[Event(name="toolTipShown", type="mx.events.ToolTipEvent")]

在ToolTip显示后派发。

如果用ToolTipManager.showEffect定义了效果,那么本事件会在效果停止播放后派发。
******

[Event(name="toolTipStart", type="mx.events.ToolTipEvent")]

当鼠标移上某个已经定义了toolTip属性的组件时立刻派发。
******





分享到:
评论

相关推荐

    UIComponent

    在IT行业中,UIComponent(用户界面组件)是一个关键概念,特别是在构建富互联网应用程序(RIA)或现代Web应用时。UIComponent通常指的是一个可重用的、自包含的代码单元,它负责呈现用户界面的一部分,并可能包含...

    ActionScript的自定义组件及自定义事件例子

    在本实例中,我们将深入探讨如何在ActionScript中实现自定义组件和自定义事件,这对于创建复杂的Flash应用程序至关重要。 首先,让我们了解自定义组件。在ActionScript中,自定义组件是通过继承已有的UIComponent...

    flex事件机制的分发

    在Flex事件流中,捕获阶段是从最外层的UIComponent祖先组件开始,逐级向下传递,直到到达目标组件。在这个阶段,事件会依次经过所有在事件路径上的父级组件,但不会触及目标组件本身。 2. **目标阶段**: 当事件...

    flex自定义组件事件DEMO

    4. 示例学习:在"flex自定义组件事件DEMO"中,你可以看到如何在自定义组件中创建并派发自定义事件,以及如何在其他地方监听和响应这些事件。通过分析代码,可以了解事件生命周期、事件冒泡和捕获的概念,以及如何在...

    Demo4-内置事件订阅1

    2. **订阅打开UI成功事件**:在UnityGameFramework框架中,打开UI是通过`UIComponent`组件完成的。首先,你需要在`OnEnter`函数中加载`EventComponent`和`UIComponent`。然后,使用`Event.Subscribe`方法订阅特定...

    Flex各自定义组件事件通讯例子

    在Flex开发中,自定义组件和事件通讯是构建复杂应用程序的关键技术。本示例通过一个简单的用户登录场景,深入解析了如何实现组件间的有效通信。下面将详细解释Flex自定义组件、事件处理以及它们在实际应用中的作用。...

    Flex自定义组件和事件

    在Flex中,自定义组件和事件的使用对于创建功能丰富的用户界面至关重要。下面我们将详细探讨这两个主题。 ### 一、Flex自定义组件 #### 1. 创建自定义组件的原因 在Flex应用中,有时标准组件库提供的组件无法满足...

    Flex4视频教程_02-03用AS自定义事件.rar

    4. **处理自定义事件**:在事件处理函数中,你可以访问自定义事件中携带的数据和执行相应的业务逻辑: ```actionscript private function onCustomEvent(event:CustomEvent):void { trace("接收到自定义事件:", ...

    BlurryLoading-UiComponent

    在实际应用中,开发者可以按照以下步骤使用"BlurryLoading-UiComponent": 1. **引入库**:将库的CSS和JavaScript文件链接到项目中,确保它们在页面加载时可用。 2. **创建HTML结构**:根据库的要求,为需要模糊加载...

    flex中拖拉拽好实例objecthandles

    在mousedown事件中启动拖放,mousemove事件中更新拖放对象的位置,而mouseup事件中结束拖放。 标签中的"flex air"提示我们这个实例可能还与Adobe Integrated Runtime(AIR)有关。AIR允许Flex应用程序运行在桌面...

    flex 拖拽效果程序

    5. **处理事件**:在事件处理器中,我们可以根据事件类型执行相应的操作,例如在`dragDrop`事件中,我们可以将拖动的数据应用到目标组件上。 6. **自定义视觉效果**:为了提供更好的用户体验,还可以自定义拖动过程...

    非可视化组件(类)写的mxml中

    5. **交互与事件处理**:通过`id`属性引用非可视化组件,可以在MXML中调用其方法或监听其事件。例如,可以在组件上添加事件监听器: ```xml (event)"/&gt; ``` 6. **库和依赖管理**:`libs`目录通常包含项目所需的...

    更换地图中的ESRI标志

    或者,如果你使用的是`MapLoadComplete`事件处理程序,可以直接在函数中调用: ```actionscript //add this to the MapLoadComplete function changeESRILogo(map); ``` 通过以上步骤,我们就成功地在ArcGIS ...

    Flex中通过设置isPopUp属性创建一个无法拖动的Alert对话框的例子

    `isPopUp`是Flash Player和Adobe AIR中的UIComponent类的一个属性,它定义了组件是否应该作为弹出窗口显示。当`isPopUp`设置为`true`时,组件会以弹出窗口的形式出现,通常可以被拖动。但在我们的例子中,我们希望...

    as3的滚动条

    监听器函数会接收到滚动事件,并根据事件中的信息更新滚动条的滑块位置。 此外,AS3滚动条还可以实现两种模式:水平滚动条(HORIZONTAL)和垂直滚动条(VERTICAL)。它们的布局和计算方式略有不同,但基本原理相同...

    Flex自定义控件

    在Flex中,我们可以通过继承现有的UIComponent类或者使用Spark或 Halo组件模型来实现自定义控件。下面将详细探讨Flex自定义控件的相关知识点。 1. **自定义控件的基础** - **UIComponent**: Flex中的所有可视组件...

    Flex问题解决大全

    Flex中的可视化组件具有多个重要特性,包括尺寸管理、事件处理、样式定义、特效以及皮肤定制。尺寸可以通过属性如`height`和`width`进行设置,同时支持百分比和像素单位。事件处理使得组件能响应用户的交互行为,如...

    OpenScales学习

    在`FxMap`的`onCreationComplete`事件中,框架会执行以下关键操作: 1. **地图初始化**:创建一个`Map`实例并将其添加到`FxMap`中。 2. **最大范围设置**:如果`FxMap`的子组件中存在`FxMaxExtent`,则将其`bounds`...

Global site tag (gtag.js) - Google Analytics