【发布时间】:2011-10-25 23:05:17
【问题描述】:
我对 Spark 中的 Flex 开发还很陌生,想阐明构建组件的最佳方式。
我之前曾尝试使用绑定表达式来设置 ViewStack 的选定索引:
public class MyComponentView extends SkinnableComponent
{
public var selectedIndex:int = 0;
}
<s:Skin ...>
<mx:ViewStack selectedIndex="{hostComponent.selectedIndex}">
....
</mx:ViewStack>
</s:Skin ...>
然而,这个绑定表达式似乎不起作用,尽管如果我将该绑定表达式移到 s:Label 上,它会显示正确的数字。
为了让它工作,我更改了代码:
public class MyComponentView extends SkinnableComponent
{
[SkinPart(required = "true")]
public var myStack:ViewStack;
private var _selectedIndex:int = 0;
private var _indexChanged:Boolean;
public function set selectedHistoryIndex(value:int):void
{
_selectedIndex = value;
_indexChanged = true;
invalidateProperties();
}
override protected function partAdded(partName:String, instance:Object):void
{
super.partAdded(partName, instance);
switch (instance)
{
case myStack:
_indexChanged = true;
invalidateProperties();
break;
}
}
override protected function commitProperties():void
{
super.commitProperties();
if (_indexChanged && myStack)
{
_indexChanged = false;
myStack.selectedIndex = _selectedIndex;
}
}
}
<s:Skin ...>
<mx:ViewStack id="myStack">
....
</mx:ViewStack>
</s:Skin ...>
这是我打算这样做的方式吗?
【问题讨论】:
标签: apache-flex view flex4 skin flex-spark