電子書籍の厳選無料作品が豊富!

シーン1に、mc(ムービークリップ)とcomment1(ムービークリップ)を配置
mcにマウスオーバーするとcomment1が表示される。
mcよりマウスアウトするとcommen1が非表示になる。
という感じにしたいのですが、マウスアウトしても非表示に出来ないで困っています。


//-----------------------------------

MovieClip(root).comment1.visible = false;

var pointX:Number=70;
var pointY:Number=50;

mc.addEventListener(MouseEvent.MOUSE_OVER, fl_MouseOver);

function fl_MouseOver(event:MouseEvent):void
{
stage.addEventListener(MouseEvent.MOUSE_MOVE,mouseMoveFunc);

function mouseMoveFunc(e:MouseEvent):void {

MovieClip(root).comment1.visible = true;
MovieClip(root).comment1.x=stage.mouseX+pointX;
MovieClip(root).comment1.y=stage.mouseY+pointY;

}
}

mc.addEventListener(MouseEvent.MOUSE_OUT, fl_MouseOver2);

function fl_MouseOver2(event:MouseEvent):void
{
mc.removeEventListener(MouseEvent.MOUSE_OVER, fl_MouseOver);
MovieClip(root).comment1.visible = false;
}

//-----------------------------------

A 回答 (2件)

おそらくしようとされているのは次のような感じではないかと思います。



//---------------------------------------------------
MovieClip(root).comment1.visible=false;

var pointX:Number=70;
var pointY:Number=50;

mc.addEventListener(MouseEvent.MOUSE_OVER, fl_MouseOver);

function fl_MouseOver(event:MouseEvent):void
{
MovieClip(root).comment1.visible=true;
stage.addEventListener(MouseEvent.MOUSE_MOVE,mouseMoveFunc);
}

function mouseMoveFunc(e:MouseEvent):void
{
MovieClip(root).comment1.x=stage.mouseX+pointX;
MovieClip(root).comment1.y=stage.mouseY+pointY;
}

mc.addEventListener(MouseEvent.MOUSE_OUT, fl_MouseOver2);

function fl_MouseOver2(event:MouseEvent):void
{
stage.removeEventListener(MouseEvent.MOUSE_MOVE,mouseMoveFunc);
MovieClip(root).comment1.visible=false;
}
//---------------------------------------------------



本題とは関係ないですが
スクリプトを書かれていらっしゃる場所が
rootのフレームでしたら
そんなに律儀に MovieClip(root) などと書く必要はありませんよ(と言うか書かないのが普通)↓。

//---------------------------------------------------
comment1.visible=false;

var pointX:Number=70;
var pointY:Number=50;

mc.addEventListener(MouseEvent.MOUSE_OVER, fl_MouseOver);

function fl_MouseOver(event:MouseEvent):void
{
comment1.visible=true;
stage.addEventListener(MouseEvent.MOUSE_MOVE,mouseMoveFunc);
}

function mouseMoveFunc(e:MouseEvent):void
{
comment1.x=stage.mouseX+pointX;
comment1.y=stage.mouseY+pointY;
}

mc.addEventListener(MouseEvent.MOUSE_OUT, fl_MouseOver2);

function fl_MouseOver2(event:MouseEvent):void
{
stage.removeEventListener(MouseEvent.MOUSE_MOVE,mouseMoveFunc);
comment1.visible=false;
}
//---------------------------------------------------
    • good
    • 0
この回答へのお礼

BlurFiltan 様
ありがとうございます。動作しました。
頭がさがります。重ねてありがとうございます。
アクションスクリプトが思ったように動かせるようになりたいものです。
追記
#2も、勉強になります。

お礼日時:2011/06/11 07:11

#1です。



#1の投稿後、不具合が起こる可能性を思い立って実験してみたのですが
「mc」にロールオーバー時に「comment1」はマウスと重なって表示される状態になることはあるのでしょうか?

 ↓ステージを見たときの図
 □□□□□□□□□□□□□□□□
 □□■■■■■■■■□□□□□□
 □□■△■■■■■■□□□□□□
 □□■■■■■■■■□□□□□□
 □□■■■■■■■■□□□□□□
 □□□□□□□□□□□□□□□□
 □□□□□□□□□□□□□□□□
 □□□□□□□□□□□□□□□□

 □□=「mc」
 ■■=「comment1」
  △ =マウス

このような表示状態になる場合,
「comment1」がマウスに反応してしまって
出た「comment1」が消えてしまうとか点滅表示すると思います。

もしそうであれば
#1で書いたスクリプトの2行目辺りにでも

MovieClip(root).comment1.mouseEnabled = false;
または
comment1.mouseEnabled = false;

を追加してください。


ActionScript 3.0 では
ボタン動作を定義していないムービークリップもマウスに反応するので,
それを阻止しなければならない場合がたまにあります。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!