FLEX: Как ссылаться на класс MXML из файла внешнего класса AS3? - PullRequest
0 голосов
/ 11 апреля 2011

У меня есть класс mxml, в котором я размещаю список и пару кнопок.

Мне бы хотелось две вещи:

  • Чтобы получить доступ к списку из класса, которыйявляется внешним файлом.
  • Чтобы добавить мой класс as3 в качестве дочернего (визуальный элемент), поскольку мне нужно получить "stage" (глобальное свойство).

Мне не нравитсявстраивать слишком много кода в mxml через <![CDATA[]]>.

Итак, пример mxml

 <?xml version="1.0" encoding="utf-8"?>
    <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
                   xmlns:s="library://ns.adobe.com/flex/spark" 
                   xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="800" minHeight="600" width="800" visible="true">
        <fx:Style source="Main.css"/>
        <fx:Declarations>
            <!-- Place non-visual elements (e.g., services, value objects) here -->
        </fx:Declarations>
        <fx:Script>
            <![CDATA[
                private var menuController:CMenuController= new CMenuController();
            ]]>
        </fx:Script>    
        <s:List x="598.35" y="100.55" width="178" height="324" id="ListBox">
            <s:layout>
                <s:VerticalLayout/>
            </s:layout>
        </s:List> 
</s:Application>

Таким образом, я хотел бы получить доступ к ListBox из CMenuController , когда я набирал CDATA .Кроме того, мне нужно иметь возможность добавлять спрайты и формы через метод addChild () в CMenuController .

Ответы [ 2 ]

0 голосов
/ 11 апреля 2011

Не думаю, что вы понимаете, как отделить визуальные элементы от логики приложения.То, что вы пытаетесь выполнить, считается очень плохой формой, так как это делает для спагетти-кода.

Вместо этого следует использовать управляемый данными подход, создав ArrayCollection того, что вы хотите отобразить в списке (что может быть свойством MenuController).Затем добавьте средство визуализации пользовательских элементов, чтобы сделать все, что вам нужно.Примерно так:

<s:List dataProvider="{menuController.yourListData}" itemRenderer="YourCustomItemRenderer" />

В средстве визуализации элементов вы можете отображать все, что хотите, в зависимости от данных yourListData.Я рекомендую вам прочитать , как работает средство визуализации элементов , а также попытаться найти примеры приложений Flex, управляемых данными.

0 голосов
/ 11 апреля 2011

Сначала необходимо добавить спрайты и формы в UIComponent, а затем добавить это к коду Flex.

Чтобы получить доступ к коду Flex из внешнего класса as3, укажите ссылку в классе as3.Например:

menuController.listReference = LISTID;

...