flex – ActionScript中的绑定如何工作?

据我所知,通过在更改var时自动触发的事件来执行绑定到ActionScript中的var.我有几个问题:

>如果类没有显式地扩展Eventdispatcher会发生什么?编译器中是否存在某种魔法,这本质上使得该类成为Eventdispatcher?
>如何绑定到静态vars工作?是否将某种隐式静态addEventListener()函数添加到类中?
>我注意到你可以把[Bindable]放在static vars上而不​​是static函数,为什么呢?

编辑:

感谢Christophe Herreman的光明回答.但是,我从上面的问题中得到了一些跟进.我想知道有没有人可以填补我的空白(我试图对这些问题编号4,5,6,但由于某种原因他们出现了1,2,3)

>我将-keep选项添加到编译器,并查看生成的绑定代码.有人可以解释这段代码如何应用吗?编译器似乎为每个类生成一个名为BindableProperty的类,其中包含getter和setter.这怎么会折叠到我写的班上?该功能看起来像C#中的部分类 – 这是完全是幕后编译器功能,还是我可以使用自己的东西?
> BindableProperty类仍然没有显式实现Eventdispatcher,生成的类如何实现事件调度?
>在问题3中,我询问绑定到静态函数,但实际上意味着静态getter和setter函数.这似乎不允许.

解决方法

绑定确实通过事件调度工作.通过将-keep标志添加到编译器设置,可以从生成的Actionscript代码中学到很多东西.

我会尽量回答你的问题.

>编译器将拾取[Bindable]元数据标签,并为您标记为可绑定的每个属性创建一个getter和setter. getter将返回该属性的值.设置器将检查新值是否与原始值不同,并将调度PropertyChange事件(如果有).>与实例属性基本相同,只有现在才创建一个静态的getter和setter.此外,还创建了一个mx.binding.StaticPropertyWatcher来监视静态属性的更改.>当绑定到静态方法时,会得到以下警告:“应用于不是getter或setter的函数时,”[Bindable]需要一个事件名称参数.“这个描述几乎说明了一切.由于您没有为此方法专门触发的“propertyChange”事件,您必须自己调度自定义.那是[Bindable(event =“customEvent”)],然后从你的类的某个地方发送该事件.

相关文章

一:display:flex布局display:flex是一种布局方式。它即可以...
1. flex设置元素垂直居中对齐在之前的一篇文章中记载过如何...
移动端开发知识点pc端软件和移动端apppc端软件是什么,有哪些...
最近挺忙的,准备考试,还有其他的事,没时间研究东西,快周...
display:flex;把容器设置为弹性盒模型(设置为弹性盒模型之后...
我在网页上运行了一个Flex应用程序,我想使用Command←组合键...