1          Flex API里面介绍viewstack:

MX ViewStack 导航器容器由一组彼此上下堆叠的子容器组成,其中一次只可以显示一个子容器。选择另一个子容器后,它将显示在原来子容器的位置处,所以看起来好像此子容器替换了原来的子容器。但是,原来的子容器仍然存在,只不过它现在处于不可见状态。

注意:MX 导航器容器的直接子容器必须为 MX 容器(MX 布局或 MX 导航器容器)或者 Spark NavigatorContent 容器。您不能直接在某一导航器中嵌套控件或除 Spark NavigatorContent 容器之外的 Spark 容器;它们必须是子 MX 容器的子容器。

ViewStack 容器不提供用于选择当前哪个子容器可见的用户界面。通常,ActionScript 中设置其 selectedIndexselectedChild 属性以响应某些用户操作。或者,可以将 MX LinkBar、TabBar、ButtonBar 或者 ToggleButtonBar 控件或 Spark ButtonBar 控件与 ViewStack 容器关联,以提供一个导航界面。为此,请将 ViewStack 容器指定为 LinkBar、TabBar 或 ToggleButtonBar 容器的 dataProvider 属性的值。

2    简单应用:

  2.1   selectedChild

 。Work.mxml组件里的代码:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <local:WorkAS xmlns:fx="http://ns.adobe.com/mxml/2009"
  3. xmlns:s="library://ns.adobe.com/flex/spark"
  4. xmlns:mx="library://ns.adobe.com/flex/mx" xmlns:local="*" width="400" height="300">
  5. <fx:Declarations>
  6. <!-- 将非可视元素(例如服务、值对象)放在此处 -->
  7. <s:RadioButtonGroup id="index"/>
  8. </fx:Declarations>
  9. <mx:VBox>
  10. <mx:HBox>
  11. <s:RadioButton label="111"  groupName="index"/>
  12. <s:RadioButton label="222"  groupName="index"/>
  13. <s:RadioButton label="333"  groupName="index"/>
  14. <s:RadioButton label="444"  groupName="index"/>
  15. </mx:HBox>
  16. <mx:VBox>
  17. <mx:ViewStack id="viewstack">
  18. <mx:VBox id="new1">
  19. <s:Button label="1111"/>
  20. </mx:VBox>
  21. <mx:VBox id="new2">
  22. <s:Button label="2222"/>
  23. </mx:VBox>
  24. <mx:VBox id="new3">
  25. <s:Button label="3333"/>
  26. </mx:VBox>
  27. <mx:VBox id="new4">
  28. <s:Button label="4444"/>
  29. </mx:VBox>
  30. </mx:ViewStack>
  31. </mx:VBox>
  32. </mx:VBox>
  33. </local:WorkAS>


WorkAS.as文件里面的代码:

  1. package
  2. {
  3. import flash.events.Event;
  4. import mx.containers.VBox;
  5. import mx.containers.ViewStack;
  6. import mx.events.FlexEvent;
  7. import spark.components.Application;
  8. import spark.components.RadioButtonGroup;
  9. public class WorkAS extends Application
  10. {
  11. public var index:RadioButtonGroup;
  12. public var viewstack:ViewStack;
  13. public var new1:VBox;
  14. public var new2:VBox;
  15. public var new3:VBox;
  16. public var new4:VBox;
  17. public function WorkAS()
  18. {
  19. super();
  20. addEventListener(FlexEvent.CREATION_COMPLETE,initer);
  21. }
  22. private function initer(event:FlexEvent):void{
  23. index.addEventListener(Event.CHANGE,change);
  24. }
  25. private function change(event:Event):void{
  26. if("111"==index.selectedValue){
  27. viewstack.selectedChild=new1;
  28. }
  29. else if("222"==index.selectedValue){
  30. viewstack.selectedChild=new2;
  31. }
  32. else if("333"==index.selectedValue){
  33. viewstack.selectedChild=new3;
  34. }
  35. else if("444"==index.selectedValue){
  36. viewstack.selectedChild=new4;
  37. }
  38. }
  39. }
  40. }

运行效果:

   

2.2  ToggleButtonBar

mxml组件代码:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <Day3:DMMainAS xmlns:fx="http://ns.adobe.com/mxml/2009"
  3. xmlns:s="library://ns.adobe.com/flex/spark"
  4. xmlns:mx="library://ns.adobe.com/flex/mx" xmlns:Day3="Day3.*" >
  5. <fx:Declarations>
  6. <!-- 将非可视元素(例如服务、值对象)放在此处 -->
  7. </fx:Declarations>
  8. <mx:VBox>
  9. <mx:ToggleButtonBar dataProvider="viewstack">
  10. </mx:ToggleButtonBar>
  11. <mx:ViewStack id="viewstack">
  12. <mx:VBox label="First">
  13. <s:Button label="按钮1111"/>
  14. </mx:VBox>
  15. <mx:VBox label="Second">
  16. <s:Button label="按钮2222"/>
  17. </mx:VBox>
  18. <mx:VBox label="Third">
  19. <s:Button label="按钮3333"/>
  20. </mx:VBox>
  21. </mx:ViewStack>
  22. </mx:VBox>
  23. </Day3:DMMainAS>

运行效果:

     

以上 viewstack的两种基本用法 学习ING....