0

コールアウト内にこのViewNavigatorがあり、コールアウトはfirstView="views.ListMenusHomeView"を使用してその内部にビューを表示します。ListMenusHomeViewからコールアウトを閉じるにはどうすればよいですか?誰かが助けてくれることを願っています。

コールアウトのコードは次のとおりです。

<?xml version="1.0" encoding="utf-8"?>
<s:Callout xmlns:fx="http://ns.adobe.com/mxml/2009" 
           xmlns:s="library://ns.adobe.com/flex/spark"
           contentBackgroundAppearance="none"
           height="300" width="300"> 
    <fx:Declarations>
        <fx:XML id="menu" source="xmldata/menu2.xml" /> 
    </fx:Declarations>

    <fx:Script>
        <![CDATA[

            import spark.events.PopUpEvent;
            protected function back(event:MouseEvent):void {

                if(viewNav.length>1)
                    viewNav.popView();
            }


        ]]>
    </fx:Script>

    <s:ViewNavigator id="viewNav" width="100%" height="100%" firstView="views.ListMenusHomeView">
        <s:navigationContent>
            <s:Button label="Back" click="back(event)"/>
        </s:navigationContent>
        <s:actionContent>
            <s:Button label="Cancel" click="close(false)"  emphasized="true"/>
        </s:actionContent>
    </s:ViewNavigator>

</s:Callout>

ListMenusHomeViewを保持するViewNavigatorがあることがわかります。これはListMenusHomeViewのコードです。

<?xml version="1.0" encoding="utf-8"?>
<s:View xmlns:fx="http://ns.adobe.com/mxml/2009" 
    xmlns:s="library://ns.adobe.com/flex/spark" title="Main Menu" creationComplete="onCreationComplete()">

<fx:Declarations>
    <fx:XML id="menu" source="xmldata/menu2.xml" /> 
</fx:Declarations>

<fx:Script>
    <![CDATA[

        import com.adobe.serializers.xml.XMLDecoder;

        import mx.collections.ArrayCollection;

        import spark.events.IndexChangeEvent;

        [Bindable]
        private var dataArray:ArrayCollection = new ArrayCollection();  

        private var object:DataArray = new DataArray();

        private function onCreationComplete() : void{

            var decoder:XMLDecoder = new XMLDecoder();
            var resultObj:Object = decoder.decode(menu);    

            dataArray = object.onCreationComplete(menu, menu.menuitem, resultObj, resultObj.menuitem); 

        }

        protected function list1_changeHandler(event:IndexChangeEvent):void
        {

        }



    ]]>
</fx:Script>

<s:List id="tileLayout"
        width="100%" height="100%"
        verticalScrollPolicy="off" horizontalScrollPolicy="on"
        pageScrollingEnabled="true" dataProvider="{dataArray}"
        itemRenderer="renderers.iconList2" change="list1_changeHandler(event)">
    <s:layout>
        <s:TileLayout orientation="columns" requestedRowCount="3" 

                      verticalGap="20" horizontalGap="20"/>

    </s:layout>

</s:List>

ここで、ListMenusHomeView内のアイコンをクリックするたびにMyCalloutを閉じたいと思います。関数list1_changeHandler(event:IndexChangeEvent)がその役割を果たします。

私は何をすべきか?

4

1 に答える 1

0

Calloutクラスにはメソッドclose()があるため、基本的にはListMenusHomeViews parentDocument(「viewNav」になりますViewNavigator) とそのにアクセスする必要parentDocumentがあります。これは ListMenusHomeView である必要があります。

私はそれをテストしていませんが、正しいオブジェクトにアクセスするために、、およびプロパティをいじるかもしれparentDocumentませparentowner。簡単なトレースでそれらを試してみると、すぐに稼働できるようになります。

于 2012-08-16T06:30:06.697 に答える