ステート

ステートとは、「ある時点での画面の状態」を示すものです。
各画面は1つ以上のステートをもっていて、デフォルトのステートは「ベースステート」という名前がついています。

ステートは、FlexBuilderのデザインビューのステートビューか、もしくはタグで記述できます。

ステートは階層構造をもっていて、新規に作成するステートは必ず親ステートをもっています。
(ベースステートは頂点のステートで、すべてのステートはベースステートを基点にします)

ステートは、親のステートに対する差分を記述するような形で作成します。
例えば、ボタンを押されたときに新たにラベルを表示するようなステートを作成したい場合、

ベースステート
  |
  |-state1

という階層構造でstate1を作成し、このstate1に「ラベルを追加する」という記述を行います。

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" 
  layout="absolute" xmlns:local="*" viewSourceURL="srcview/index.html">

 <mx:states>
  <mx:State name="state1">
   <mx:AddChild position="lastChild">
    <mx:Label x="283" y="10" text="state1" width="169"/>
   </mx:AddChild>
  </mx:State>
 </mx:states>

 <mx:Button x="31" y="10" text="ステート切り替え" width="221" id="label1" click="{this.currentState='state1'}"/>
</mx:Application>

this.currentStateというのはUIComponentの変数で、各コンポーネントごとにcurrentStateを定義できます。
この変数にステートの名前をいれることでステート切り替えを行います。
ステートの切り替えが発生すると、そのステートのコードが実行されます。上記の場合、state1には
ラベルを追加するという記述がしてある為、画面にラベルが追加されます。

ステートは親との差分なので、

ベースステート
  |
  |-state1
  |    |-state1_1
  |
  |-state2

という階層構造にした場合、state1はベースステート+state1の差分の画面、state1_1はベースステート+state1+state1_1の
差分の画面を表示、という形になります。この場合、state1とstate2は親子関係にないため、state1及びstate1_1で行った画面変更は、
state2では無視されます。逆にstate1で新たに画面変更を追加した場合、state1_1にはその変更が反映されます。

以下にサンプルアプリをあげておきます。
http://www.souko105.net/~hatena/20070208/StateSampleApplication.html
アプリケーションとパネルにステートを設定してあり、相互にステート切り替えを
行うサンプルになっています。