mouseChildren = false; すべての子インスタンスが対象では困るのよ〜。


ActionScriptと磯野家がコラボったのではなく、
mouseChildrenでなぜ!?となったので記事にした。
もやもやしてます、助言お願いします。

はじめに。

波平、カツオ、ワカメはそれぞれインスタンスです。
波平は2人の親インスタンスです。

追記: 090917+21:22

インスタンスが独自のクラスを継承していれば問題ないのですが、
例えば、タイムラインに配置されただけのMovieClip(ActionScriptに書き出していない、つまり継承クラスはflash.display.MovieClipなだけ)が対象の場合と考えていただければと思います。

たとえば、ワカメだけはマウスイベント有効にしたい。

IsonoNamihei.as (波平クラス)
mouseChildren = false;    // ワカメとカツオのマウスイベント無効化
mouseEnabled = false;     // 波平自身のマウスイベント無効化

こうすると、3人のマウスイベントが無効化される。
しかし、俺はワカメのマウスイベントは有効にしたいので、
次の処理をワカメクラスに追記してみたのだが、、、

IsonoWakame.as (ワカメクラス)
mouseEnabled = true;     // ワカメ自身のマウスイベントを有効化

そう、子インスタンスから有効化すればいいでない?
と思ったが。で、できねぇ!

力技でやった。


ふむ、子インスタンスからはできねぇってのか!
で、力技でとりあえず解決してみた。

IsonoNamihei.as (波平クラス)
for (var i: uint = 0; i < numChildren; i++)
{
    var child: * = getChildAt(i);
    if (child is MovieClip && child.name != "ワカメ")
    {
        // ワカメ以外はマウスイベント無効化
        child.mouseEnabled = false;
    }
}

ワカメ以外の子インスタンスのみを無理やりマウスベント無効化!作戦を決行。
こんなんでいいんだろうか。疑問が残りもやもやしますが、とりあえずこれでいいやぁ。
みんなはこんな場合どうしてますか。