actionscript 3 -在MXML文件之间传递数据,并在单击另一个文件后打开一个



我对flex很陌生,试图理解整个flex是如何工作的

场景:

我开始创建一个MXML文件,其中将有一个文本框和一个按钮。如果按钮被点击一个弹出框将显示文本框的值(这工作完美)。我想到的第二件事是如何在其他页面上显示相同的数据。所以,如果我点击按钮。它应该加载另一个页面并显示写入文本框

中的数据

我的代码现在是这样的:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="horizontal">
    <mx:Script>
        <![CDATA[
            import mx.controls.Alert;
            public function open(event:MouseEvent):void{
                Alert.show("I am opening a page");
                Alert.show(txt_inp.text + " is written here");
            }
        ]]>
    </mx:Script>
    <mx:TextInput id="txt_inp" />
    <mx:Button id="openBttn" label="Click Me" click="open(event)" />
</mx:Application>

And Name.xml(The Second page is)

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="setYelp()">
    <mx:Script>
        <![CDATA[
            public var helloYou:HelloYou;
            public function yelpHandler():void{
                yelp.text = "Ayush"
            }
            public function setYelp():void {
                helloYou.openBttn.addEventListener(MouseEvent.CLICK,yelpHandler);
            }
        ]]>
    </mx:Script>
    <mx:Label id="yelp" text="yelp">
    </mx:Label>
</mx:Application>

我参考了以前问过的一些类似的问题,并试图遵循它,但还是不能真正理解。

此外,在我的flex构建器中,我有两个MXML> MXML模块和MXML组件的选项。我应该在这里使用它们吗?如果不是,我应该在什么时候使用?

为什么要使用多个页面?通常,Flex应用程序是带有多个视图的单个应用程序,在这种情况下共享数据要容易得多。

如果你想在不同的页面之间传递信息,你可以使用cookie(参见例如从Flex访问浏览器cookie)

另一个flex解决方案是http://custardbelly.com/blog/blog-posts/2010/11/15/flex-hero-persistant-data-in-mobileapplication/

我能想到的最后一件事是使用javascript桥访问浏览器的localstorage (o sqlite)并在那里存储信息。

但是,为什么要在请求之间保存信息,而不是简单地创建一个更改其视图的应用程序呢?

1解决方案
使用ViewStack组件集成你的第一个mxml和第二个mxml。
这就是@wezzy所说的"单应用+多视图"。
这是共享值的最简单的方法,如果您可以集成到一个mxml中。

这样的

<mx:ViewStack id="viewstack" width="100%" height="100%" selectedIndex="0" >
    <!-- Input Page is here  -->
    <mx:Canvas id="view1" width="100%" height="100%">
        <mx:TextInput id="txtName" width="150" maxChars="40" />
        <mx:Button label="Go to NextPage" click="viewstack.selectedChild=view2;"/>
    </mx:Canvas>
    <!-- Result Page -->
    <mx:Canvas id="view2" width="100%" height="100%">
        <mx:TextInput text="{txtName.text}" width="150" editable="false" />
        <mx:Button label="Back to PrevPage" click="viewstack.selectedChild=view1;"/>
    </mx:Canvas>
</mx:ViewStack>

2解决方案
使用SharedObject(或DB)保存和加载值

第三方案
使用单例变量在类之间共享值。
请看我的回答。Flex -访问另一个mxml页面上的静态变量的问题

相关内容

最新更新