2011-10-03 46 views
0

BindingUtils的大多数示例显示了如何在运行时绑定对象的属性(公共变量或getter/setter)。如何使用具有样式属性的BindingUtils(使用setStyle方法)?

但是,如何在运行时仅通过setStyle("top", value);访问某个组件的属性(如"top")?

我应该创建一个自定义的getter/setter对来影响UIComponent的样式属性吗?似乎有点不必要...

回答

1

你应该捆绑你想用一个“二传手”,即功能观看属性:

private function foo():void 
{ 
    BindingUtils.bindSetter(makeStyleSetter("styleName", target), this, "styleProperty"); 
} 

private function makeStyleSetter(style:String, target:UIComponent):Function 
{ 
    return function(value:Object):void 
    { 
     target.setStyle(style, value); 
    } 
} 
+0

对事物的内存管理方面,我应存储的参考从BindingUtils.bindSetter(...)调用返回的ChangeWatcher实例?这样我可以稍后调用.unwatch();在它摆脱坚实的参考? (我想这不是一个弱引用:S) – bigp

+0

另外,我认为你需要函数闭包(局部变量来保持目标UIComponent的作用域)来防止一些不正确的引用问题。至少,在这种情况下......如果目标可能会改变这一点。 http://www.mikechambers.com/blog/2008/10/08/function-closures-and-this-in-actionscript-3/ – bigp

+1

是的,你可以存储ChangeWatcher的参考。但是我认为这个函数关闭的东西在这里没有意义:在动态函数中你不会做任何与范围有关的事情。 – LoremIpsum

相关问题