在 actionscript3 中,每当对象的属性更新时,我是否可以收听一个事件?
我找到了处理 Flex 事件对象的PropertyChangeEvent 。我不熟悉 Flex 以及我的应用程序使用它的组件意味着什么。我的应用程序严格写在 actionscript3 中。
更新看起来在 actionscript-2 - Object.watch中有类似的东西
在 actionscript3 中,每当对象的属性更新时,我是否可以收听一个事件?
我找到了处理 Flex 事件对象的PropertyChangeEvent 。我不熟悉 Flex 以及我的应用程序使用它的组件意味着什么。我的应用程序严格写在 actionscript3 中。
更新看起来在 actionscript-2 - Object.watch中有类似的东西
在 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”事件。
根据 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
}
您还可以使用:
ChangeWatcher.watch(textarea, "text", watcherListener);
private function watchListener(event:Event):void
{
// Use myWatcher.unwatch() to remove the watcher.
}
但是如果你有一个扩展“Object”的类,如果你实例化,它就没有 dispatchEvent() 方法来分派事件。您必须扩展 IEventDispatcher。