首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 媒体动画 > flex >

自定义组件,如何返回内部的一个控件的属性值?是不是用get方法

2012-04-30 
自定义组件,怎么返回内部的一个控件的属性值?是不是用get方法?自定义组件myCanvas,里面有个button控件,当

自定义组件,怎么返回内部的一个控件的属性值?是不是用get方法?
自定义组件myCanvas,里面有个button控件,当点击此button时,button的label作为组件的可读取属性selectedName,可被别的控件读取:

XML code
private var _sButtonName:String;public function set selectedName(name:String):void{ _sButtonName = name;}public function get selectedName():String{ return _sButtonName;}


组件内的button的click方法代码为:
XML code
private function selectedValue(evt:MouseEvent):void{  selectedName = evt.target.label;}


现在在application中使用这个myCanvas组件(id为myCS),且另外有个textinput控件,其text值为
XML code
<mx:TextInput x="49" y="26" text="{myCS.selectedName}"/>


可运行后,点击myCS里的button,textinput并没有显示此button的label,问题出在哪里呢?

[解决办法]
加到set方法上
[Bindable]
public function set selectedName(name:String):void
{
 _sButtonName = name;
}

才看到你这个名字不一样_sButtonName 和selectedName
[解决办法]
[Bindable]标签的使用,分变量级别绑定,函数级别绑定和类级别的绑定

变量级别的绑定:顾名思义在变量上面加绑定,如果这个变量有变化才会触发事件,其他引用这个变量的地方才会变化,_sButtonName变了,跟这个_sButtonName 绑定的地方会变化,或者跟一个getter方法叫sButtonName的也会变化,但你的getter叫selectedName

在函数前定义,必须是通过setter和getter方式定义,必须写在set前面。setter方法里面变量变化后,会触发getter
[Bindable]
public function set Num(n:Number):void{...}
public function get Num():void{...}

在一个公有类的定义前使用,这样这个类的所有公有变量,set、get方式定义的函数,都可以用于绑定,这就是对象级别的绑定。

热点排行