アプリケーションのニーズにもよりますが、私は通常、デザインを視覚的なチャンクに分割し、カスタム MXML コンポーネントを使用して、mxml ベースのカスタム コンポーネントを使用して、アプリケーションのメイン領域とコンポーネント (データ パネル、ダイアログ ボックスなど) をレイアウトします。次に、組み込みのレイアウト コンポーネントよりも視覚的な柔軟性が必要なカスタム アクション スクリプト コンポーネントを追加します。MXML は、ステージ上でコンポーネントを取得し、それらのさまざまなプロパティとスタイル設定を非常に簡単に設定できるため便利です。
2 つの同一のログイン パネルの例を次に示します。
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>
そしてアクションスクリプトで:
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);
}
}
}
7 行のコードと 62 行のコード。これは非常に単純な例ですが、Flex Builder でデザイン モードを使用しているかどうかに関係なく、アプリケーションの多くの部分を MXML でレイアウトすることでどのようなメリットがあるかを理解していただければ幸いです。
ただし、私がお勧めすることの 1 つは、actionscript を mxml ファイルからできるだけ除外することです。MXML をビューとして扱い、重い機能を他のクラスに分離します。次に、MXML コンポーネントのコントロールがバインドできるクラスにパブリック プロパティを提供できます。MXML はレイアウト言語であり、私の経験では、意味のある場所で使用し、より重い作業が必要な場合はいつでも actionscript にドロップすることで、最終的には利益が得られます。