`

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属性的组件时立刻派发。
******





分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics