Flex4 - 通过自定义代理类实现绑定
作者:hangge | 2015-02-03 13:51
对于无法直接绑定的数据对象,比如样式。可以通过代理类实现样式绑定。
下例通过自定义的代理类将滑块与标签的字体大小进行绑定,拖动滑块则实时改变字体大小。
下例通过自定义的代理类将滑块与标签的字体大小进行绑定,拖动滑块则实时改变字体大小。
效果图如下:

--- 测试页面 ---

--- 代理类 MyStyleProxy.as ---
package
{
import mx.core.UIComponent;
[Bindable]
public class MyStyleProxy
{
private var ui:UIComponent;
public function MyStyleProxy(ui:UIComponent)
{
this.ui = ui;
}
public function set fontSize(size:int):void{
ui.setStyle("fontSize",size);
}
public function get fontSize():int{
return ui.getStyle("fontSize") as int;
}
}
}
--- 测试页面 ---
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
creationComplete="init()">
<fx:Script>
<![CDATA[
import mx.binding.utils.BindingUtils;
[Bindable]
private var styleProxy:MyStyleProxy;
private function init():void{
//将滑块的值和label的字体大小做了双向绑定
styleProxy = new MyStyleProxy(lab);
//label的字体大小决定滑块的值
BindingUtils.bindProperty(slider,"value",styleProxy,"fontSize");
//滑块的值改变也影响字体大小
BindingUtils.bindProperty(styleProxy,"fontSize",slider,"value");
}
]]>
</fx:Script>
<s:layout>
<s:VerticalLayout paddingLeft="20" paddingTop="30"/>
</s:layout>
<s:HSlider id="slider" maximum="100" minimum="0" snapInterval="1"/>
<s:Label id="lab" text="样式测试"/>
</s:Application>
全部评论(0)