ページ遷移
Flexでページ遷移を実現するにはどうしたらよいのでしょうか。ViewStackを使うのがいちばん簡単です。
ViewStackとは、コンポーネントを格納するためのコンテナで、複数コンポーネントを登録できますが、表示するのは現在選択中のものだけです。その性質を利用して、ViewStackに複数のページを登録しておいて、選択するページを変えることでページ遷移を実現します。
最初のページのコンポーネントを作成します。
Page1.mxml
まだ、ページ遷移のロジックは組み込みません。同様にして、次のページを作成します。
<mx:Panel xmlns:mx="http://www.macromedia.com/2003/mxml"
width="400" height="400" title="Page1">
<mx:ControlBar>
<mx:Button label="Goto Page2"/>
</mx:ControlBar>
</mx:Panel>
Page2.mxml
これらのページを格納するViewStackを持つ、メインのアプリケーションを作成します。
<mx:Panel xmlns:mx="http://www.macromedia.com/2003/mxml"
width="400" height="400" title="Page2">
<mx:ControlBar>
<mx:Button label="Goto Page1"/>
</mx:ControlBar>
</mx:Panel>
MyApp.mxml
他のコンポーネント(ページ)を組み込むのは簡単です。MXMLのファイル名をタグ名にするだけです。同一のディレクトリのコンポーネントを参照するには、xmlns属性に*を設定します。
<mx:Application xmlns:mx="http://www.macromedia.com/2003/mxml">
<mx:ViewStack id="viewStack" changeEffect="Fade">
<Page1 id="page1" xmlns="*"/>
<Page2 id="page2" xmlns="*"/>
</mx:ViewStack>
</mx:Application>
これで雛型ができました。
Page1のボタンのclick属性に次のスクリプトを記述します。
parentDocument.viewStack.selectedChild = parentDocument.page2
Page1.mxmlのparentDocumentは、MyApp.mxmlです。このようにして、親のドキュメントを参照します。あとは、ViewStack.selectedChildプロパティを書き換えるだけです。
同様にして、Page2のボタンに処理を追加すると、ページ遷移ができるようになります。