Могу ли я иметь несколько классов в одном файле в MXML? - PullRequest
4 голосов
/ 28 июня 2011

У меня есть classB, который будет использоваться только внутри classA. Однако classA пишется как mxml, а не как код ActionScript. Можно ли вложить классы в MXML или добавить другой класс после корневого тега в том же файле .mxml? Пояснение: я хочу, чтобы оба класса были написаны на MXML в одном и том же файле, но я не смог найти ничего в документации Adobe, в которой указано, как.

Ответы [ 3 ]

4 голосов
/ 28 июня 2011

Нет, вы не можете определить два класса в одном файле MXML, но вы можете иметь один и тот же пакет (пространство имен) для обоих классов и создать classB internal, поэтому он виден только для классов в этом пакете.

2 голосов
/ 13 июля 2011

Полагаю, вы ищете тег fx: Component , который позволяет определить новый документ MXML в существующем документе MXML:

<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
               xmlns:s="library://ns.adobe.com/flex/spark" 
               xmlns:local="*">

    <fx:Declarations>
        <fx:Component className="MyMXMLClass1">
            <s:Group>
                <s:Button label="MyMXMLClass1" />
            </s:Group>
        </fx:Component>
        <fx:Component className="MyMXMLClass2">
            <s:Group>
                <s:Button label="MyMXMLClass2" />
            </s:Group>
        </fx:Component>
    </fx:Declarations>

    <s:VGroup>
        <local:MyMXMLClass1 />
        <local:MyMXMLClass2 />
    </s:VGroup>

</s:Application>
0 голосов
/ 21 марта 2015

Если во вложенных классах требуется несколько уровней наследования, и альтернативой (упомянутой в предыдущем ответе) является использование например:

<fx:Library>
    <fx:Definition
        name="MyClass"
        >
        <s:Group>
        ...
        <s:/Group>
    </fx:Definition>
</fx:Library>

...
<!-- Use MyClass later in the file. -->
<fx:MyClass ... />

должен находиться вверху файла MXML. Этот синтаксис допускает несколько вложенных определений классов в строке, и каждый может расширять предыдущий с помощью наследования.

...