AS3経験者がたぶんはまるであろうAS2の落とし穴のまとめ

自分がはまりまくっているのでそのまとめ。
他にもこれってのがあれば教えて頂けるとうれしいです。

getter,setter使える

AS3に近い感じでOOPを意識してクラス作れる

public function get hoge():String
{
    return this._hoge;
}
public function set hoge(hoge:String):Void
{
    this._hoge = hoge;
}

クラスの継承とオーバーライドをする事が出来る

ただし、装飾子はprivateとpublicのみ

class hoge
{
    private var _age:Number;

    public function hoge()
    {
    }

    public function talk(message:String):Void
    {
        trace(message);
    }

    private function set age(age:Number):Void
    {
        this._age = age;
    }
}

hogeを継承するクラスmoge

class moge extends hoge
{
    public function moge()
    {
        super.age = 18;
    }

    public function talk(message:String):Void
    {
        trace("moge : " + message);
    }
}

イベントを取得できるのは、ムービークリップ、ボタン、一部のコンポーネント

自分でディスパッチやろうと思えばできる。
ただし、リスナーに登録するときのインターフェースはすべてが同じではない

hoge_btn.onRelease = function():Void{
    trace("click hoge_btn!!");
}

リスナー関数のスコープがAS3と違う!

Delegate.createを使いましょう

trace(this); // _level_0
hoge_mc.onRelease = function():Void{
    trace(this); // hoge_mc
}

thisを迷子にさせないようにする

trace(this); // _level_0
hoge_mc.onRelease = Delegate.create(this, function():Void{
    trace(this); // _level_0
}

ムービークリップの深度管理

MovieClipクラスのgetDepth、_root.getNextHeighestDepthsあたりで深度を取得する。
その後、createEmptyMovieClipで、指定した深度にムービークリップを配置できる。
ただし、もとからその深度に何かある場合はそれは上書きされてしまうので注意。
もし、深度をあとから変更したい場合は空のムービークリップを配置して、swapDepthで深度を入れ替えてあげる。

タイムラインから取れるthisと_rootは同じ

どちらとも型はムービークリップ

trace(this == _root); // true