Я хотел бы включить файл MXML в мой файл MXML так же, как вы можете включить внешний файл в AS3, используя директиву include . Использование директивы include приводит код из внешнего файла в исходный файл во время компиляции, помещая его в ту же область видимости.
Например,
Application.mxml:
<Application>
<source="external.mxml"/>
</Application>
External.mxml:
<Styles/>
<Declarations>
<Object id="test"/>
</Declarations>
Мне нужно сохранить этот код / mxml / xml во внешнем файле в объеме с оригиналом. Не спрашивайте меня, почему я хочу это сделать.
Еще один пример. Вот мой текущий код (упрощенно), все в 1 mxml файле:
...
File1.mxml
<Button click="clickHandler()"/>
<Script>
public function clickHandler():void {
}
</Script>
...
Вот что я хочу:
...
File1.mxml
<Group>
<source="File2.mxml"/>
<Button click="clickHandler()"/>
<Group>
File2.mxml
<Script>
public function clickHandler():void {
trace(this); // File1.mxml
}
</Script>
...
Я хочу разбить свой код на отдельный файл ...
~~ Обновление ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~
Хотя НЕ то, что я просил, чтобы использовать схему «код позади», частично оправдывает нарушение кода вне поля зрения. Поэтому я создаю файл MXML, MyGroup.mxml или MyGroup.as, который расширяет группу, содержащую код clickHandler.
Проблема с этим методом в том, что я привязан к типу класса, который расширяю, жестко кодируя представление. Так, например, я должен был бы расширить Группу, если класс MXML, который я хочу разделить на отдельные файлы, является Группой.
Я работал над проектами, где это было сделано, и это не хорошо. Люди начинают устанавливать стили и визуальные аспекты или группировать / просматривать конкретные свойства в коде класса и позже, если или когда нам нужно изменить его или макет, мы получим все эти зависимости от контейнера. Это становится беспорядком. Кроме того, используя Code Behind, вы не сможете использовать его повторно (используйте так, как включают styles.as повторно). Так что это не решение, но я подумал, что упомяну это.
Вот пример кода
MyGroupBehind.mxml:
<Group>
<Script>
public function clickHandler():void {
trace(this); // File1.mxml
}
</Script>
</Group>
MyGroupAhead.mxml:
<MyGroupBehind>
<Button click="clickHandler()"/>
</MyGroupBehind>