トップへ戻るニュースフォーラムFLASH-ML 過去ログBak@Flaダウンロードよくある質問と答
ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   ActionScript 3.0 特設会議室
     enabled、mouseEnabled が効かない
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
飯塚浩幸
Åê¹ÆNo.41663
投稿日時: 2009-3-5 22:20
半人前
居住地: 群馬
投稿: 56
使用環境:
Mac OSX 10.4.10
FLASH CS3
enabled、mouseEnabled が効かない
ステージ上にstart_mcというMovieClipを配置し
start_mcをクリックした直後にボタンとしての機能を
無効にしたいのですがうまくいきません。

以下のようにフレームアクションを記述しています。

start_mc.addEventListener(MouseEvent.CLICK, checkupStart);
start_mc.buttonMode = true;
function checkupStart(ev:MouseEvent):void {
var mc:MovieClip = ev.currentTarget as MovieClip;
mc.mouseEnabled = false;
trace("click");
}

試しに

mc.mouseEnabled = false;
  ↓
mc.enabled = false;

に変更しても結果は同じです。

AS3を使用するようになってから
同様のことがよく起きるのですが
原因がわかりません。。。

ご教授頂けると助かります。
よろしくお願いします。



----------------
meshi
GAMERLIEN

野中文雄
Åê¹ÆNo.41665
投稿日時: 2009-3-5 23:44
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: enabled、mouseEnabled が効かない
私の環境では、とくに問題なく動作します。「うまくいきません」というのは、「ボタンとしての機能」が「無効」にならず、マウスクリックのリスナー関数が何度も呼出されるということですか?また、その問題はつねに発生するのでしょうか。
引用:
meshiさんは書きました:
ステージ上にstart_mcというMovieClipを配置し
start_mcをクリックした直後にボタンとしての機能を
無効にしたいのですがうまくいきません。

以下のようにフレームアクションを記述しています。
start_mc.addEventListener(MouseEvent.CLICK, checkupStart);
start_mc.buttonMode = true;
function checkupStart(ev:MouseEvent):void {
	var mc:MovieClip = ev.currentTarget as MovieClip;
	mc.mouseEnabled = false;
	trace("click");
}


----------------
 

飯塚浩幸
Åê¹ÆNo.41670
投稿日時: 2009-3-6 13:05
半人前
居住地: 群馬
投稿: 56
使用環境:
Mac OSX 10.4.10
FLASH CS3
Re: enabled、mouseEnabled が効かない
野中さん、お返事ありがとうございます。

質問が曖昧ですいませんでした。

「うまくいきません」というのは、「ボタンとしての機能」が「無効」にならず、マウスクリックのリスナー関数が何度も呼出されるということです。

そして原因がわかりました。

実は、start_mc の中に更にinner_mcというMovieClipを入れ子にしていました。
このMovieClipに対してもmouseEnabledをfalseにすることで解決できました。


start_mc.addEventListener(MouseEvent.CLICK, checkupStart);
start_mc.buttonMode = true;
function checkupStart(ev:MouseEvent):void {
var mc:MovieClip = ev.currentTarget as MovieClip;
mc.mouseEnabled = false;
mc.inner_mc.mouseEnabled = false;
trace("click");
}


入れ子になったMovieClipにmouseEnabledを設定する場合
その中身のMovieClipにも適用させないとダメなんですね。
勉強になりました。




----------------
meshi
GAMERLIEN

野中文雄
Åê¹ÆNo.41671
投稿日時: 2009-3-6 13:29
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: enabled、mouseEnabled が効かない
入れ子のすべてを指定したい場合には、DisplayObject.mouseChildrenプロパティを設定する方法も考えられます。

参考: F-siteセミナー「イベントを制する者、ActionScript 3.0を制す」、「DisplayObjectContainer.mouseChildrenプロパティ
引用:
meshiさんは書きました:
実は、start_mc の中に更にinner_mcというMovieClipを入れ子にしていました。
このMovieClipに対してもmouseEnabledをfalseにすることで解決できました。
...[中略]...
入れ子になったMovieClipにmouseEnabledを設定する場合
その中身のMovieClipにも適用させないとダメなんですね。


----------------
 

飯塚浩幸
Åê¹ÆNo.41717
投稿日時: 2009-3-10 9:50
半人前
居住地: 群馬
投稿: 56
使用環境:
Mac OSX 10.4.10
FLASH CS3
Re: enabled、mouseEnabled が効かない
なるほど。

mouseChildren = false;
にしておけば、いちいち子のMovieClipにmouseEnabledを設定しなくても
大丈夫なわけですね。

ありがとうございました!


----------------
meshi
GAMERLIEN

スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

投稿するにはまず登録を
 
Copyright (C) 2003 FLASH-japan. All rights reserved.
Powered by Xoops