Как мне использовать данные из главного окна в подокне? - PullRequest
0 голосов
/ 30 июня 2011

Я только начал работать над настольным приложением AIR типа средства просмотра фотографий с Flex.Из главного окна я могу запустить подокна, но в этих подокнах я не могу получить доступ к данным, собранным в главном окне.

Как я могу получить доступ к этим данным?Или как я могу отправить эти данные в подокно при создании?Он не должен быть динамически связан.

myMain.mxml

    <?xml version="1.0" encoding="utf-8"?>
<s:WindowedApplication 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="260" height="200"
                       title="myMain">
    <fx:Declarations>
    </fx:Declarations>
    <fx:Script>
        <![CDATA[
            public function openWin():void {
                new myWindow().open();
            }

            public var myData:Array = new Array('The Eiffel Tower','Paris','John Doe');
        ]]>
    </fx:Script>
    <s:Button x="10" y="10" width="240" label="open a sub-window" click="openWin();"/>
</s:WindowedApplication>

myWindow.mxml

    <?xml version="1.0" encoding="utf-8"?>
<mx:Window name="myWindow"
           title="myWindow"
           xmlns:mx="http://www.adobe.com/2006/mxml"
           layout="absolute"
           width="640" height="360">
    <mx:Script>
        <![CDATA[

        ]]>
    </mx:Script>
    <mx:Label id="comment" x="10" y="10" text=""/>
    <mx:Label id="location" x="10" y="30" text=""/>
    <mx:Label id="author" x="10" y="50" text=""/>
</mx:Window>

Я понимаю, что это может быть очень простой вопрос, ноЯ искал в Интернете, читал и смотрел учебники по случайным предметам AIR в течение нескольких дней и не смог его найти.Риск выглядеть дураком стоит того, я хочу продолжить свое первое приложение!

1 Ответ

2 голосов
/ 30 июня 2011

Вы можете добавить атрибут в свой класс окна и передать данные из приложения.

С атрибутом и функцией установки:

myWindow.mxml:

    <![CDATA[
        private var _data : Array;

        public function set data(data : Array) : void {
             this._data = data;
        }

    ]]>

main

    <![CDATA[
        public function openWin():void {
            var w : myWindow = new myWindow();
            w.data = myData;
            w.open();
        }

        public var myData:Array = new Array('The Eiffel Tower',
                                            'Paris','John Doe');
    ]]>

Это также можно сделать, добавивпараметр конструктора для вашего окна, но вы должны будете написать свой компонент Window в ActionScript.

(Также: вы можете захотеть использовать MyWindow для имени вашего компонента вместо myWindow, но это просто обычные придирки).

Также обратите внимание, что существует одноэлементная переменная Application.application, которая доступна для всех классов в приложении;однако я не знаю, относится ли это к WindowedApplication, и в любом случае это не рекомендуемый подход.

...