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

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

  • Posted by: ryow
  • 2007年10月 2日 20:15
  • Flash

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

今まで、ボタンを押して小窓を出したとき、それ以外のボタンや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ファイル)。

Comments:2

un 2008年1月10日 09:03

はじめまして
つい先日ryowさんのblogを発見し、いろいろ勉強させて頂いております。
目から鱗な記事が多く感謝です!!

まさに今、他のボタンの制御に手をやいていたところでさっそく紹介されている方法を試してみたのですが、僕の環境では成功しませんでした。。
mac flash8

僕の場合createEmptyMovieClip()で作成した空MCのサイズは変更出来ないようです。
代入後にtrace()してみると0となり、onReleaseは反応しませんでした。


attachMovie("screen","screen",100);
screen._x = (Stage.width - screen._width)/2;
screen._y = (Stage.height - screen._height)/2;
_root.createEmptyMovieClip("asdf",99);
asdf._width = 1000;
asdf._height = 1000;
asdf.onPress = function(){
trace("押したよ");
}

です。
うむむ。


なぜなんでしょう!?

ryow 2008年1月10日 20:53

unさま
コメントありがとうございました。

createEmptyMovieClipはダメでした。勘違いしてました。
ダミーのmcをやっぱりアタッチするか(_alpha0とかで)の方法がよいと思います。。

Comment Form

Trackbacks:0

TrackBack URL for this entry
http://ryow.net/mt/mt-tb.cgi/235
Listed below are links to weblogs that reference
Flashでウィンドウを出したときにそれ以外のmc、ボタンを全て押せなくする方法 from ryow.net Blog

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

About

りょうどっとねっとブログ

Twitter :ryownet

はてな :ryownet

Search

Return to page top