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));
}
}