Apache flex 隐藏viewstack容器的容器

Apache flex 隐藏viewstack容器的容器,apache-flex,actionscript-3,Apache Flex,Actionscript 3,我有一个viewstack容器,包含三个视图:红色、黑色和蓝色。我如何才能完全隐藏黑色&不包括它 <?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:mx="library://ns.adobe.com/flex/mx" xmlns:s="library://ns

我有一个viewstack容器,包含三个视图:红色、黑色和蓝色。我如何才能完全隐藏黑色&不包括它

<?xml version="1.0" encoding="utf-8"?>
<s:Application  xmlns:fx="http://ns.adobe.com/mxml/2009"    
            xmlns:mx="library://ns.adobe.com/flex/mx"     
            xmlns:s="library://ns.adobe.com/flex/spark"
            horizontalCenter="0" verticalCenter="0"
            >

<mx:LinkBar dataProvider="{myVS}" borderVisible="false" color="blue" disabledColor="black"  />

<mx:ViewStack id="myVS" borderVisible="false" width="100%" height="100%"  >

    <mx:VBox id="red" label="click red" horizontalAlign="center" verticalAlign="middle" >
        <s:Label id="r1" color="red" fontSize="25" text="This is the red label" />
    </mx:VBox>

    <mx:VBox id="black" label="click black" horizontalAlign="center" verticalAlign="middle" >
        <s:Label id="r2" color="black" fontSize="25" text="This is the black label" />
    </mx:VBox>

    <mx:VBox id="blue" label="click blue" horizontalAlign="center" verticalAlign="middle" >
        <s:Label id="r3" color="blue" fontSize="25" text="This is the blue label" />
    </mx:VBox>

</mx:ViewStack>

</s:Application>

我认为最快捷、最肮脏的方法就是将其移除:

myVS.removeElement(black);
但是,我想我应该使用视图状态。这样,您就可以在不知道如何/在何处将其放回的情况下稍后将其取回。定义您的州:

<s:states>
    <s:State name="all" />
    <s:State name="notBlack" />
</s:states>
然后,当您想要删除它时,可以通过设置
currentState

<s:Button click="currentState='notBlack'" label="remove black" />

恐怕我没有领会你问题的意图。ViewStack组件用于显示多个相互“堆叠”的视图,一次只显示一个视图。它不像TabNavigator那样包含内置导航。如果您想“完全隐藏”黑色视图,只需在编译代码之前注释掉它,因此它将永远不会显示

我在您的代码示例中看到,您正在使用带有ViewStack的链接栏作为数据提供程序,因此您可能想问如何将黑色视图保留在链接栏之外。只需执行一些ActionScript魔术来创建自定义数据提供程序:

var dataProvider : ArrayCollection = new ArrayCollection([
{label:"click Red"},
{label:"click blue"}
]);
并指定该数据提供程序作为链接栏的数据提供程序源:

<mx:LinkBar dataProvider="{dataProvider}" borderVisible="false" color="blue" disabledColor="black"  />


同时使用状态和视图堆栈?那太疯狂了。我看没有理由不起作用,但它们有时被用作两种不同的方法来达到相同的目的。哈!我不知道。。。我当然不认为它们是相互排斥的……:)ViewStack的全部功能是批量更改视图。。。视图状态在整个视图中更为分散。尽管如此,我更新了我的回复,表明你可以移除这个东西。。。又快又脏<代码>myVs.removeElement(黑色)。我只是想说明有很多方法可以解决这个问题:)我没有想过要和美国一起去做,但我认为Flextra的答案对我来说最合适。谢谢
<mx:LinkBar dataProvider="{dataProvider}" borderVisible="false" color="blue" disabledColor="black"  />