Flex里面[Bindable]相信大家都用过,其实这个是给编译器看的,那编译器到底做了什么呢?今天特地去研究了下:
首先在fb的Flex编译器里面加上编译参数-keep-generated-actionscript=true,然后会生成一个generated目录,里面就是从mxml生成的as文件。
比如你在mxml文件里定义了[Bindable]public var foo:String;则会生成如下的as3代码:
[Bindable(event="propertyChange")]
private function get foo():String
{
return this._3712foo;
}
private function set foo(value:String):void
{
var oldValue:Object = this._3712foo;
if (oldValue !== value)
{
this._3712foo = value;
if (this.hasEventListener("propertyChange"))
this.dispatchEvent(mx.events.PropertyChangeEvent.createUpdateEvent(this, "foo", oldValue, value));
}
}
本文详细介绍了Flex中[Bindable]属性的工作原理。通过设置编译参数-keep-generated-actionscript=true,观察到当在MXML文件中使用[Bindable]声明变量时,编译器将生成对应的AS3代码来实现属性变更监听及事件分发。
158

被折叠的 条评论
为什么被折叠?



