Существует несколько способов достижения этого во Flex:
- Поместите код AS в файл .as и используйте атрибут «source = yourfile.as» в теге Script :
<mx:Script source="yourfile.as" />
Вы также можете использовать объявление includes="yourfile.as"
с тегом Script:
<mx:Script
<![CDATA[
include "yourfile.as";
//Other functions
]]>
</mx:Script>
- Используйте шаблон Code-Behind , где вы определяете код в файле AS, который расширяет визуальный компонент, который вы хотите расширить в своем файле MXML. Затем ваш файл MXML просто расширяет файл AS, и у вас есть (через наследование) доступ ко всему коду. Это будет выглядеть примерно так (я не уверен, что это будет работать для основного файла MXML, который расширяется
Application
):
AS-файл:
package {
public class MainAppClass {
//Your imports here
public function CreationComplete():void {
}
public function EnterFrame(event:Event):void {
}
}
}
Файл MXML:
<component:MainAppClass xmlns:component="your namespace here"
xmlns:mx="http://www.adobe.com/2006/mxml"
layout="absolute"
width="600"
height="400"
frameRate="100"
creationComplete="CreationComplete()"
enterFrame="EnterFrame(event)">
</component:MainAppClass>
Используйте каркас, чтобы внедрить функциональность, которую вы ищете как тип "модели", которая содержит функциональность данных, которую вы будете использовать. Это выглядело бы что-то как у Петрушки:
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
layout="absolute"
width="600"
height="400"
frameRate="100"
creationComplete="model.CreationComplete()"
enterFrame="model.EnterFrame(event)">
<mx:Script>
<![CDATA[
[Inject]
[Bindable]
public var model:YourModelClass;
]]>
</mx:Script>
</mx:Application>
На ум приходят две структуры, которые могут помочь с инъекцией: Mate или Петрушка .
Я не уверен, работает ли шаблон выделенного кода с основным файлом MXML (который расширяет приложение), поэтому, если у вас возникли проблемы, вы можете попробовать разбить содержимое вашего основного файла MXML на отдельный компонент который включен в Main. Это может выглядеть примерно так:
Main.mxml:
<mx:Application blah,blah,blah>
<component:YourComponent />
</mx:Application>
YourComponent.mxml:
<component:YourComponentCodeBehind creationComplete="model.creationComplete()"...>
//Whatever MXML content you would have put in the Main file, put in here
</component:YourComponentCodeBehind>
YourComponentCodeBehind.as
package {
class YourComponentCodeBehind {
//Whatever AS content you would have put in the Main .as file, put in here
}
}
Из того, что я смог извлечь из архитектуры Flex, это очень распространенный способ настройки вашего приложения: ваш основной MXML включает в себя один «вид», который является отправной точкой для остальной части вашего приложения. Это представление содержит все другие представления, которые составляют приложение.
Надеюсь, это имеет смысл:)