Flashでウィンドウを出したときにそれ以外のmc、ボタンを全て押せなくする方法

アホだった。
僕はアホだった。

今まで、ボタンを押して小窓を出したとき、それ以外のボタンやmcをいちいち_enabled=false の処理を書いていた。ボタンが多くなるともう管理しきれない。
全てのmcを取得して全部をenableするのは大変だ! もうダメだ! と思ってたけど、一瞬でそれを解決できる方法を見つけた。

以下は、ウィンドウボタンを押すとwindowというmcを画面にアタッチする場合。windowの深度は変数Dとします。

//前に公開してたバグがあるやつ!!!!
//下のを使ってください!!!
window_btn.onRelease=function(){
var $w = target.attachMovie("window","window_mc",D)
$w._x = (Stage.width - $w._width)/2
$w._y = (Stage.height - $w._height)/2
var $e = _root.createEmptyMovieClip("empty_mc",D-1)
$e._width=Stage.width
$e._height=Stage.height
$e.onRollOver=function(){
this.useHandCursor = false
}
}

↑のは間違いです。createEmptyMovieClipの_widthは変えられません。だってemptyだから。中に何か別のmcを入れるならいいんだけど。

window_btn.onRelease=function(){
var $w = _root.attachMovie("window","window_mc",D) //_rootにattachしなくてもいいけど
$w._x = (Stage.width - $w._width)/2
$w._y = (Stage.height - $w._height)/2
var $e =  _root.attachMovie("dummy","dummy_mc",D-1)
$e._width=Stage.width
$e._height=Stage.height
$e.onRollOver=function(){
this.useHandCursor = false
}
}

つまり、小窓mcより一つ深度が深いところにmcを作って、それにRollOver関数を持たせて上げればいい。本来ならどこを触っても指マーク(RollOverで)になるところを、無理やりuseHandCursorをFにして回避。
これで一瞬にして、小窓以外触れない画面を作ることができました。good job!

2008.01追記。コメントでun様に指摘いただきました。勘違いしてました…本当にごめんなさい。

createEmptyMovieClipしたmcはそのままでは_widthを持てません。この方法を使うにはダミー用のmcをattachMovieするか、空mcをBitmapDataで空画像として使うか(Flash8以降)、ですね。

検証に使ったファイルはこちら(ver8形式 flaファイル)。