微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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”)],然后从你的类的某个地方发送该事件.

原文地址:https://www.jb51.cc/flex/174297.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐