Flex 自定义组件自定义属性的动态更新

效果预览:

前天有群友问到在Flex里自定义了一个组件,然后又在该组件里public了一个属性绑定数据不更新问题,然后在主程的mxml里声明命名空间后,用标签形式把自定义的属生用{}绑定一个字符变量可以实时更新,但由AS生成的自定义组件的属性就不能实时更新.经过乱翻一些资料可以用BindingUtils类的bindProperty方法实现由AS生成的组件自定义属性更新!当按提交时,会同时更新两个组件的flag属性值
参数:
bindProperty(site:Object, prop:String, host:Object, chain:Object, commitOnly:Boolean = false)
其实我们这样用:
bindProperty(目标对象, 目标对象属性, 数据源对象, 数据源对象属性)

DynamicAttr.mxml

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" initialize="init()" xmlns:Jian="*">
  3. <mx:Script>
  4. <![CDATA[
  5.     import mx.binding.utils.BindingUtils;
  6.    
  7.     [Bindable]
  8.     public var attr:String = Math.random().toString();
  9.    
  10.     private function init():void
  11.     {
  12.       var temp:LabelExt = new LabelExt();
  13.       temp.x = 150;
  14.       temp.y = 50;
  15.       temp.setStyle("borderStyle", "solid");
  16.       temp.flag = attr;
  17.       panel.addChild(temp);
  18.       BindingUtils.bindProperty(temp, "flag", this, "attr");
  19.     }
  20.  
  21.     private function chang():void
  22.     {
  23.       attr = Math.random().toString();
  24.     }
  25. ]]>
  26. </mx:Script>
  27. <mx:Panel id="panel" title="Flex 自定义组件自定义属性动态更新"
  28.     top="10" left="10" right="10" bottom="10" layout="absolute">
  29.     <mx:Label text="由AS创建的组件:" x="50" y="50" />
  30.     <mx:Button x="340" y="90" label="Submit" click="chang()" />
  31.     <mx:Label text="自定义命名的标签创建:" x="300" y="50" />
  32.     <Jian:LabelExt id="labels" flag="{attr}" x="430" y="50" borderStyle="solid" />
  33. </mx:Panel>
  34. </mx:Application>

LabelExt.mxml 自定义组件

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <mx:Box xmlns:mx="http://www.adobe.com/2006/mxml">
  3. <mx:Script>
  4.     <![CDATA[
  5.         [Bindable]
  6.         public var flag:String;
  7.     ]]>
  8. </mx:Script>
  9. <mx:Label text="{flag}"/>
  10. </mx:Box>
发表于: 02-10-10 · 1 评论 »  1,670 次阅读

1 评论 致 《Flex 自定义组件自定义属性的动态更新》

  1. 肾虚怎么办 发表:

    确实是不错~~~~~~

    九月 1st, 2010 at 15:17

评论

兄弟,没有中文内容的评论一律过滤!