インナークラス

AS3のインナークラスについて。
端的に書くと、次のような構文でOK。

package innerclasstest{
    
  public class InnerClassTest extends Sprite
  {
    public function test():void {
      var inner:InnerClass = new InnerClass();
      trace(inner.test("test"));
    }
  }
}
class InnerClass{  
  public function test(t:String):String{
    return t;
  }
}

ポイントは以下の通り。
・インナークラスは、パッケージ宣言の外に記述する。
・publicとしては宣言できず、宣言したasファイル内でのみ使用できる。
・親元のクラスはデフォルトでは参照できない(上記だとInnerClassからInnerClassTestの変数へは直接アクセスできない。
 (Javaでいう暗黙的な親宣言がない為、参照を渡す必要がある)
・参照を渡しても、お互いのprivate変数には触れない

Javaほどインナークラスが使いやすいわけではないようだ。一番痛いのは親元を
参照できないこと。
ボタンの各イベントをインナークラスに分けるというような使い方はいいかもしれないけど。

追記

package innerclasstest{
  public class InnerClassTest2 implements InnerInterface
  {
    public function execute1():void{
      trace("execute1");  
        new InnerClass().execute1();
    }
    public function execute2():void{
      trace("execute2");
      new InnerClass().execute2();          
    }
  }
}
interface InnerInterface{
  function execute1():void;
  function execute2():void;
}
class InnerClass implements InnerInterface{
  public function execute1():void{
    trace("inner execute1");  
  }
  public function execute2():void{
    trace("innner execute2");
  }
}

これはOKっぽいです。
ここのInnerInterfaceを動的に作ってfunctionだけその場で書ければ
いいんですが、探したところそういう機能はないっぽいですね(JavaのProxyみたいなやつ)
Flex2のProxyはちょっと用途が違うようで。