[Bindable]?
是基于事件的,当原发生改变,会通知到目标对象。?
1.可以写在整个类的前面,比如?
???? [Bindable]?
???? public class TextAreaFontControl extends TextArea {}?
??? 这样会对? TextAreaFontControl 中所有的public variables 和 public get/set?
?? 绑定?
2.可以写在variables 前面,比如?
?? [Bindable(event="fooChanged")]?
?? public var foo:String;?
3.也可以写在函数前面,?
? [Bindable("myNameChanged")]?
? public function getNmae():String {?
?????? return myName;?
? }?
? public function set myName(myName:String):void {?
???? this.myName = myName;?
???? disPatchEvent(new Event("myNameChanged"));?
? }?
? 这样所有的外部对getNmae的应用在myName改变时都会得到通知?
??? ****************************************************************??? ****************************************************************
?
?
1、在public class定义前[Bindable]元数据标签绑定所有的作为变量定义的public属性,并且所有的public属性都定义有getter和setter方法。在这种情况下,[Bindable]没有参数,例如:[Bindable]public class TextAreaFontControl extends TextArea {}flex编译器自动创建一个事件名叫propertyChange用于所有的公有属性,这些属性可以作为绑定表达式的源。这种定义等同于[Bindable(event="propertyChange")]如果属性值的改变与原来相同,flex并不传递这个事件或更新属性。2、在public,protected 或 private 属性前,格式为:[Bindable]public var foo;3、Before a public,protected,or private property defined by a getter or setter method.你必须同时定义getter和setter方法,以便于使用[Bindable]元数据标签。[Bindable]public function set shortNames(val:Boolean):void {??? ...???????????????}public function get shortNames():Boolean {??? ...}?你可以使用自定义的事件名,如:[Bindable(event="changeShortNames")]public function set shortNames(val:Boolean):void {??? ...??? // Create and dispatch event.??? dispatchEvent(new Event("changeShortNames"));}// Get method.public function get shortNames():Boolean {??? ...}????// Define public vars for tracking font size.??? [Bindable]??? public var maxFontSize:Number = 15;??? [Bindable]??? public var minFontSize:Number = 5;// Define private variable.??? private var _maxFontSize:Number = 15;??? [Bindable(event="maxFontSizeChanged")]??? // Define public getter method.??? public function get maxFontSize():Number {??????? return _maxFontSize;??? }??? // Define public setter method.??? public function set maxFontSize(value:Number):void {??????? if (value <= 30) {??????????? _maxFontSize = value;??????? } else _maxFontSize = 30;??????? // Create event object.??????? var eventObj:Event = new Event("maxFontSizeChanged");??????? dispatchEvent(eventObj);??? }