ActionScript中怎么定义Flex数据绑定,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
在ActionScript 中定义Flex数据绑定
通过使用mx.binding.utils.BindingUtils能够在ActionScript中定义绑定。这个类定义了几个静态方法,通过使用bindProperty() 方法可以让我们创建一个到用变量实现的属性的数据绑定,或者用bindSetter()方法创建一个到用方法实现的属性的Flex数据绑定。
(1)在MXML 与在ActionScript 定义Flex数据绑定的区别
编译期在MXML 中定义Flex数据绑定与在运行期在ActionScript 中定义Flex数据绑定有一些不同之处:
◆不能在由bindProperty()或者bindSetter()方法定义绑定表达式中引入ActionScript 代码。相反,使用bindSetter()方法可以指定一个在绑定发生时调用的
方法。
◆ 不能在由ActionScript 中定义的绑定表达式中引入E4X 表达式。
◆ 在由the bindProperty()或者bindSetter()方法定义的Flex数据绑定表达式的属性链中不能引入函数或者数组元素。更多信息见Working with bindable property chains.
◆同运行时使用bindProperty()或者bindSetter()定义的Flex数据绑定相比,MXML 编译器有更好的警告和错误检查支持。
(2)范例:在ActionScript 中定义Flex数据绑定
下面的例子是用bindSetter()建立了一个Flex数据绑定。bindSetter()方法的参数设置如下:
◆ 源(source) 对象
◆ 源(source) 属性名
◆ 当源(source)属性变化被调用的方法。
下面的范例中,当向TextInput 控件中输入文本时,文本会被转换为大写形式并拷贝给TextArea
控件:
<?xml version="1.0"?> <!-- binding/BindSetterAS.mxml --> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"> <mx:Script> <![CDATA[ import mx.binding.utils.*; import mx.events.FlexEvent; // Method called when myTI.text changes. public function updateMyString(val:String):void { myTA.text = val.toUpperCase(); } <!-- Event listener to configure binding. --> public function mySetterBinding(event:FlexEvent):void { var watcherSetter:ChangeWatcher = BindingUtils.bindSetter(updateMyString, myTI, "text"); } ]]> </mx:Script> <mx:Label text="Bind Setter using setter method"/> <mx:TextInput id="myTI" text="Hello Setter" /> <mx:TextArea id="myTA" initialize="mySetterBinding(event);"/> </mx:Application>
(3)定义绑定观察者 (watchers)
Flex 有个mx.binding.utils.ChangeWatcher 类,可以用这个类来定义一个Flex数据绑定观察者。通常,Flex数据绑定观察者在绑定发生时激活一个事件监听器。可按照下面的范例使用
ChangeWatcher 的watch()即可建立一个Flex数据绑定观察者:
<?xml version="1.0"?> <!-- binding/DetectWatcher.mxml --> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" initialize="initWatcher();"> <mx:Script> <![CDATA[ import mx.binding.utils.*; import mx.events.FlexEvent; import mx.events.PropertyChangeEvent; public var myWatcher:ChangeWatcher; // Define binding watcher. public function initWatcher():void { // Define a watcher for the text binding. ChangeWatcher.watch(textarea, "text", watcherListener); } // Event listener when binding occurs. public function watcherListener(event:Event):void { myTA1.text="binding occurred"; // Use myWatcher.unwatch() to remove the watcher. } ]]> </mx:Script> <!-- Define a binding expression_r to watch. --> <mx:TextInput id="textinput" text="Hello"/> <mx:TextArea id="textarea" text="{textinput.text}"/> <!-- Trigger a binding. --> <mx:Button label="Submit" click="textinput.text='Goodbye';"/> <mx:TextArea id="myTA1"/> </mx:Application>
看完上述内容,你们掌握ActionScript中怎么定义Flex数据绑定的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注编程网行业资讯频道,感谢各位的阅读!