0

mx:ViewStack次のように、それぞれの下に異なるビューコンポーネントを持つアプリケーション幅のコンポーネントがs:NavigatorContentあります。

<mx:ViewStack id="vsOne" resizeToContent="true">
    <s:NavigatorContent label="First">
        <package:MyFirstComponent id="myFirstComponent"/>
    </s:NavigatorContent>
    <s:NavigatorContent label="Second">
        <package:MySecondComponent id="mySecondComponent"/>
    </s:NavigatorContent>
</mx:ViewStack>

そして、これはpackage.MyFirstComponentの重要な部分です..

<s:Button label="Next" click="somethingToGoForward()"/>

私が試したこと:

  1. somethingToGoForward()ビューコンポーネントを呼び出して、にアクセスしようとしていますparent vsOne:動作しません。
  2. 呼び出しparent.somethingToGoForward()中 (このメソッドが と同じ mxml にある場合ViewStack): 動作しません

を含む mxml ファイル以外の場所からViewStackを変更するにはどうすればよいですか?selectedIndex

ありがとう。

4

1 に答える 1

0

これは、単純なイベントを使用した例です。

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"     initialize="application1_initializeHandler(event)"
           xmlns:s="library://ns.adobe.com/flex/spark" 
           xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600"  xmlns:local="*">
    <fx:Script>
    <![CDATA[
        import mx.events.FlexEvent;

        protected function application1_initializeHandler(event:FlexEvent):void
        {
            viewStack.selectedChild=one;

        }

        protected function one_changeViewHandler(event:FlexEvent):void
        {
            viewStack.selectedChild=two;
        }

        protected function two_changeViewHandler(event:FlexEvent):void
        {
            viewStack.selectedChild=one;

        }

    ]]>
</fx:Script>
<fx:Declarations>
    <!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>
<mx:ViewStack id="viewStack" >
    <local:ccomp id="one" changeView="one_changeViewHandler(event)" text="LAbel ONE">

    </local:ccomp>
    <local:ccomp id="two" changeView="two_changeViewHandler(event)" text="LAbel TWO" >

    </local:ccomp>
</mx:ViewStack>
</s:Application>

ccompはカスタムコンポーネントです

<?xml version="1.0" encoding="utf-8"?>
    <mx:HBox xmlns:fx="http://ns.adobe.com/mxml/2009" 
     xmlns:s="library://ns.adobe.com/flex/spark" 
     xmlns:mx="library://ns.adobe.com/flex/mx" width="400" height="300">
<fx:Metadata>
    [Event(name="changeView", type="mx.events.FlexEvent")]  
</fx:Metadata>
<fx:Script>
    <![CDATA[
        import mx.events.FlexEvent;

        private var _text:String;

        public function get text():String
        {
            return _text;
        }
        [Bindable]
        public function set text(value:String):void
        {
            _text = value;
        }

        protected function button1_clickHandler(event:MouseEvent):void
        {
            this.dispatchEvent(new FlexEvent("changeView",true));               
        }
    ]]>
</fx:Script>

<fx:Declarations>
</fx:Declarations>
    <s:Button label="Change" click="button1_clickHandler(event)">
    </s:Button>
    <s:Label fontSize="24" text="{text}">
    </s:Label>
   </mx:HBox>

ダビデ

于 2013-03-01T14:47:54.023 に答える