当前位置:  开发笔记 > 编程语言 > 正文

ActionScript组件可以监听自己的propertyChange事件吗?

如何解决《ActionScript组件可以监听自己的propertyChange事件吗?》经验,为你挑选了1个好方法。

我在Actionscript中有一个CircleButton类.我想知道外部有人何时更改了'on'属性.我尝试听'onChange',但它永远不会碰到那个事件处理程序.

我知道我可以将'on'属性写为get/setter,但我喜欢使用[Bindable]的简单性

对象不能听自己的事件吗?

public class CircleButton extends UIComponent

{
    [Bindable]
    public var on:Boolean;

    public function CircleButton()
    {
        this.width = 20;
        this.height = 20;

        graphics.beginFill(0xff6600, 1);
        graphics.drawCircle(width/2, height/2, width/2);
        graphics.endFill();

        this.addEventListener(MouseEvent.ROLL_OVER, rollover);  
        this.addEventListener(MouseEvent.ROLL_OUT, rollout);        

        this.addEventListener('onChange', onOnChange);
    }       

    private function onOnChange(event:PropertyChangeEvent):void {

Laura.. 7

如果使用[Bindable]标记而未指定事件类型,则当属性更改其值时,将调度类型为:PropertyChangeEvent.PROPERTY_CHANGE的事件,即字符串'propertyChange'.

因此,为了能够注册听取该事件,您需要说:

this.addEventListener(PropertyChangeEvent.PROPERTY_CHANGE, onOnChange);

从未调用过侦听器函数的原因是事件类型不正确.

请注意,当您的类中标记为Bindable的任何变量发生更改时,将调用侦听器方法,而不仅仅是"on".此事件带有一个名为"property"的属性,指示哪个变量已更改.

为避免在每个Bindable变量上调用,您需要在[Bindable]标记中指定一个事件:

[Bindable(event="myOnChangeEvent")]

当你考虑到属性正在改变时(即:在setter中),手动调度该事件,尽管这似乎不是你想要做的.



1> Laura..:

如果使用[Bindable]标记而未指定事件类型,则当属性更改其值时,将调度类型为:PropertyChangeEvent.PROPERTY_CHANGE的事件,即字符串'propertyChange'.

因此,为了能够注册听取该事件,您需要说:

this.addEventListener(PropertyChangeEvent.PROPERTY_CHANGE, onOnChange);

从未调用过侦听器函数的原因是事件类型不正确.

请注意,当您的类中标记为Bindable的任何变量发生更改时,将调用侦听器方法,而不仅仅是"on".此事件带有一个名为"property"的属性,指示哪个变量已更改.

为避免在每个Bindable变量上调用,您需要在[Bindable]标记中指定一个事件:

[Bindable(event="myOnChangeEvent")]

当你考虑到属性正在改变时(即:在setter中),手动调度该事件,尽管这似乎不是你想要做的.


你没有,但为了清楚你添加了监听器的人添加了它.
推荐阅读
可爱的天使keven_464
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有