据我所知,ActionScript中的var绑定是通过在var更改时自动触发的事件来执行的。我对此有几个问题:
编辑:
感谢Christophe Herreman的出色回答。但是,我从上面的问题中得到了一些后续内容。我想知道是否有人可以为我填补空白(我试着给这些问题编号4,5,6,但出于某种原因他们出现了1,2,3;)
我已将-keep选项添加到编译器并查看生成的绑定代码。谁能解释一下如何应用这段代码?编译器似乎为每个类生成一个名为BindableProperty的类,其中包含getter和setter。这怎么折叠到我写的课上?该功能看起来有点像C#中的部分类 - 这是专门的幕后编译器功能,还是我可以自己使用的东西?
BindableProperty类仍然没有显式实现EventDispatcher,生成的类如何实现事件调度?
在问题3中,我询问了绑定到静态函数,但实际上我的意思是静态getter和setter函数。似乎不允许这样做。
答案 0 :(得分:14)
绑定确实通过事件分派工作。通过在编译器设置中添加-keep标志,您可以从生成的Actionscript代码中学到很多东西。
我会尽力回答你的问题。
编译器将获取[Bindable]元数据标记,并为您标记为可绑定的每个属性创建一个getter和setter。 getter只返回属性的值。设置者将检查新值是否与原始值不同,并且如果出现,将调度PropertyChange事件。
基本上与实例属性相同,现在只创建静态getter和setter。此外,还会创建一个mx.binding.StaticPropertyWatcher来监视静态属性的更改。
绑定到静态方法时,会收到以下警告:“[Bindable]在应用于不是getter或setter的函数时需要一个事件名称参数。”描述几乎说明了一切。由于您没有专门为此方法触发的“propertyChange”事件,因此您必须自行调度自定义事件。那是[Bindable(event =“customEvent”)],然后从你班级的某个地方发出该事件。