Это зависит от потребностей вашего приложения, но я обычно делю свой дизайн на визуальные фрагменты и использую пользовательские компоненты MXML, чтобы разметить основные области и компоненты моего приложения (панели данных, диалоговые окна и т. Д.) С использованием пользовательских компонентов на основе mxml. Затем я дополню это с помощью пользовательских компонентов ActionScript, где мне нужно больше гибкости, чем обеспечивают встроенные компоненты макета. MXML удобен тем, что позволяет очень легко выводить компоненты на сцену и устанавливать их различные свойства и настройки стиля.
Возьмите этот пример двух идентичных панелей входа в систему:
В MXML:
<mx:Panel xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="290" height="148" title="Login">
<mx:Label text="User name:" width="80" textAlign="right" y="8" x="8"/>
<mx:Label text="Password:" width="80" textAlign="right" y="38" x="8"/>
<mx:TextInput id="txtUsername" maxChars="20" y="8" x="90"/>
<mx:TextInput id="txtPassword" displayAsPassword="true" y="38" x="90" maxChars="20"/>
<mx:Button x="185" y="68" label="Login" id="btnLogin" click="doLogin()"/>
</mx:Panel>
И в ActionScript:
package
{
import flash.events.MouseEvent;
import mx.containers.Panel;
import mx.controls.Button;
import mx.controls.Label;
import mx.controls.TextInput;
public class MyLoginPanel extends Panel
{
private var _unLabel:Label;
private var _passLabel:Label;
private var _txtUsername:TextInput;
private var _txtPassword:TextInput;
private var _btnLogin:Button;
public function MyLoginPanel()
{
}
override protected function createChildren():void
{
super.createChildren();
this.width = 290;
this.height = 148;
this.title = "Login";
this.layout = "absolute";
_unLabel = new Label();
_unLabel.text = "User Name:";
_unLabel.width = 80;
_unLabel.setStyle("textAlign", "right");
_unLabel.move(8, 8);
this.addChild(_unLabel);
_passLabel = new Label();
_passLabel.text = "Password:";
_passLabel.width = 80;
_passLabel.setStyle("textAlign", "right");
_passLabel.move(8, 38);
this.addChild(_passLabel);
_txtUsername = new TextInput();
_txtUsername.move(90, 8);
this.addChild(_txtUsername);
_txtPassword = new TextInput();
_txtPassword.move(90, 38);
_txtPassword.displayAsPassword = true;
this.addChild(_txtPassword);
_btnLogin = new Button();
_btnLogin.label = "Login";
_btnLogin.move(185, 68);
_btnLogin.addEventListener(MouseEvent.CLICK, doLogin);
this.addChild(_btnLogin);
}
}
}
Семь строк кода против 62. Это довольно простой пример, но, надеюсь, вы сможете увидеть, какую выгоду вы можете получить, выложив множество частей своего приложения в MXML, независимо от того, используете ли вы режим разработки в Flex Builder или нет.
Тем не менее, я рекомендую не допускать actionScript в ваших файлах mxml. Относитесь к MXML как к своему представлению и разделяйте любую тяжелую функциональность на другие классы. Затем вы можете предоставить общие свойства в тех классах, к которым могут привязываться элементы управления в ваших компонентах MXML. MXML - это язык разметки, и, по моему опыту, в конечном итоге стоит использовать его там, где это имеет смысл, и переходить в ActionScript всякий раз, когда требуется более тяжелая работа.