gpt4 book ai didi

apache-flex - Actionscript 组件可以监听它自己的 propertyChange 事件吗?

转载 作者:行者123 更新时间:2023-12-04 03:11:37 26 4
gpt4 key购买 nike

我在 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 {

最佳答案

如果您在未指定事件类型的情况下使用 [Bindable] 标记,则当属性更改其值时,将调度类型为 PropertyChangeEvent.PROPERTY_CHANGE 的事件,即字符串“propertyChange”。

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

this.addEventListener(PropertyChangeEvent.PROPERTY_CHANGE, onOnChange);

您的监听器函数从未被调用的原因是事件类型不正确。

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

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

[Bindable(event="myOnChangeEvent")]

并在您认为属性正在更改时(即:在 setter 中)手动分派(dispatch)该事件,尽管这似乎不是您想要做的。

关于apache-flex - Actionscript 组件可以监听它自己的 propertyChange 事件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/210666/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com