Ответ 1
В Flex существует несколько способов достижения этой цели:
- Поместите код AS в файл .as и используйте атрибут "source = yourfile.as" в теге Script:
<mx:Script source="yourfile.as" />
Вы также можете использовать объявление includes="yourfile.as"
w/в теге Script:
<mx:Script
<![CDATA[
include "yourfile.as";
//Other functions
]]>
</mx:Script>
- Используйте шаблон Code-Behind, в котором вы определяете код в AS файле, который расширяет визуальный компонент, который вы хотите продлить ваш файл MXML. Затем ваш файл MXML просто расширяет AS файл, и у вас есть (через наследование) доступ ко всему коду. Это будет выглядеть примерно так (я не уверен, что это будет работать для основного файла MXML, который расширяет
Application
):
AS File:
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 включает в себя один "вид", который является точкой входа в остальную часть вашего приложения. В этом представлении содержатся все другие виды, составляющие приложение.
Надеюсь, что это имеет смысл:)