首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Actionscript -侦听对象上的属性更改事件

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

Stack Overflow用户
提问于 2013-08-07 19:34:36
回答 3查看 1.6K关注 0票数 1

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

我找到了处理Flex事件对象的PropertyChangeEvent。我不熟悉Flex,以及它对我的应用程序使用它的组件意味着什么。我的应用程序是严格用actionscript3编写的。

更新看起来好像在actionscript-2 - Object.watch中有类似的东西。

EN

回答 3

Stack Overflow用户

发布于 2013-08-07 20:08:03

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

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

在Flex中,对象上的自定义属性是用get/set方法实现的,set方法分派一个属性更改事件。就像这样:

代码语言:javascript
复制
private var _myVar : SomeClass;
public function get myVar():SomeClass{
  return _myVar;
}

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

这主要用于Framework中的绑定,而且大多数“propertyChanged”事件都没有文档化。每隔一段时间它们就会变得有用。

在非Flex代码中,我们非常欢迎您以相同的方式编写属性。我不认为默认的Flash类会分派'propertyChanged‘事件。

票数 4
EN

Stack Overflow用户

发布于 2013-08-07 20:30:52

根据ActionScript3.0引用(BR/FlashPlatform/reference/actionscript/3/mx/binding/utils/BindingUtils.html#bindSetter() )

您可以使用:

代码语言:javascript
复制
BindingUtils.bindSetter(myFunctionHandler, entity, "property");

protected function myFunctionHandler(object:Object):void
{
    // implementation
}
票数 2
EN

Stack Overflow用户

发布于 2013-08-08 09:52:49

您还可以使用:

代码语言:javascript
复制
ChangeWatcher.watch(textarea, "text", watcherListener);

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

但是,如果您有一个扩展"Object“的类,如果实例化,它将没有一个dispatchEvent()方法来分派一个事件。您必须扩展IEventDispatcher。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18112245

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档