我需要了解Flex中的自定义事件

时间:2009-10-07 16:21:25

标签: flex

package classes.events
{
    import flash.events.Event;

    public class ASSEvent extends Event
    {
        public static const ALERT:String = " Add Alert";

        public function ASSEvent(type:String, bubbles:Boolean=true,cancelable:Boolean=false)
        {
            super(type, bubbles, cancelable);
        }



    }
}

这里有什么类型,气泡和可取消的保留以及我们为什么要使用它......任何人都可以解释这整个代码。

public function ASSEvent(type:String, bubbles:Boolean=true,cancelable:Boolean=false)
            {
                super(type, bubbles, cancelable);
            }

2 个答案:

答案 0 :(得分:3)

bubblestrue且从UI元素调度事件时,它也将从UI元素的父元素调度,然后是父元素,依此类推,直到它到达顶层或监听器在活动上致电stopPropagation()stopImmediatePropagation()。如果您只是在非UI类上调度事件,只需将bubbles设置为false。

cancelabletrue时,它基本上意味着您希望侦听者可能会调用preventDefault()。您可以通过致电isDefaultPrevented()来检查是否有人取消了该活动。例如,您可以创建“applying_data”事件并允许侦听器取消它以防止调用代码实际应用数据。如果事件在逻辑上不可取消,请将其设置为false。

请注意,如果您实施自定义事件,则必须覆盖clone()方法。

有关Event类的更多信息,请访问Adobe docs

答案 1 :(得分:0)

type字段是事件的名称。通常,您使用Event或MouseEvent或KeyboardEvent类(或许多其他类)中的常量,但您也可以创建自己的常量。您应该使用静态常量,但是尽管您可以使用任何String来表示一个,但请尝试将它们保留为camelCase并省略诸如的字符。和其他标点符号。原因是,虽然使用addEventListener的工作方式相同,但您可以使用事件的名称在MXML中定义事件侦听器...如果您有点和东西,这将无效。

如果您希望事件传播UI元素链,则应将bubbles字段设置为true。例如,如果一个按钮触发事件,则其中的Canvas将获取事件及其HBox,依此类推。当您想要捕获组件子项中可能发生的事件(例如鼠标单击或键盘单击)时,这非常方便。这就是为什么你可以在Application.application.stage上放置这样的监听器并捕获你的应用程序获得的每个keyDown。

可取消字段允许您对事件调用preventDefault()以取消默认逻辑。例如,这可能包括在TextField中输入字符。如果你想进行自己的默认处理,请使用优先级EventPriority.DEFAULT_HANDLER调用addEventListener()...然后,可以创建其他侦听器,如果它们调用preventDefault(),则可以使您不通过检查来执行所需的功能isDefaultPrevented()。