在 Flex 中关闭视图中的注解



>我在标注中有一个视图导航器,并且标注使用firstView="views在其内部显示一个视图。列表菜单主页视图" .现在如何关闭列表菜单主页视图中的标注?希望有人能帮忙。

这是我的标注代码:

<?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>

你会看到有一个 ViewNavigator 它包含 ListMenusHomeView。这是 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) 负责该函数。

我该怎么办?

Callout类有一个close()方法,所以你基本上只需要访问ListMenusHomeViewparentDocument(这将是你的"viewNav"ViewNavigator)和它的parentDocument,这应该是你的ListMenusHomeView。

我还没有测试过它,但你可以摆弄parentDocumentparentowner属性来访问正确的对象。使用简单的跟踪尝试它们,您将立即启动并运行。

相关内容

  • 没有找到相关文章

最新更新