Actionscript - 在对象上侦听属性更改事件

时间:2013-08-07 19:34:36

标签: actionscript-3 flash flex

在actionscript3中,每当对象的属性更新时,我是否可以收听事件?

我发现PropertyChangeEvent 正在处理Flex事件对象。我不熟悉Flex以及它对我的应用程序使用它的组件意味着什么。我的申请在actionscript3中严格执行。

更新看起来在actionscript-2中有类似的内容 - Object.watch

3 个答案:

答案 0 :(得分:3)

  

在actionscript3中,是否有一个我可以随时收听的事件   对象的属性是否更新?

不,或者至少不是默认情况下!

在Flex中,对象的自定义属性使用get / set方法实现,set方法调度属性更改事件。像这样:

private var _myVar : SomeClass;
public function get myVar():SomeClass{
  return _myVar;
}

public function set myVar(value:SomeClass):void{
  _myVar = value;
  dispatchEvent(new Event('myVarChanged'));
}

这主要用于Flex框架中的绑定,并且大多数“propertyChanged”事件都没有记录。他们偶尔会变得有用。

非Flex代码;非常欢迎您以同样的方式撰写您的房产。我不希望默认的Flash类派遣'propertyChanged'事件。

答案 1 :(得分:1)

根据Actionscript 3.0参考(http://help.adobe.com/pt_BR/FlashPlatform/reference/actionscript/3/mx/binding/utils/BindingUtils.html#bindSetter()

您可以使用:

BindingUtils.bindSetter(myFunctionHandler, entity, "property");

protected function myFunctionHandler(object:Object):void
{
    // implementation
}

答案 2 :(得分:0)

您也可以使用:

ChangeWatcher.watch(textarea, "text", watcherListener);

private function watchListener(event:Event):void
{
    // Use myWatcher.unwatch() to remove the watcher.
}

但是如果你有一个扩展“Object”的类,如果你实例化,它就没有dispatchEvent()方法来调度一个事件。你必须扩展IEventDispatcher。