ActionScript3.0の修正に関して

このQ&Aのポイント
  • ActionScript3.0の修正について、マウスオーバー・マウスアウトの動作をクリックで変更したいです。
  • 現在のスクリプトでは単にMouseEvent.CLICKに変更しても動作しないため、解決方法を教えてください。
  • 環境はaction script3.0、Mac OSX、Flash CS4です。
回答を見る
  • ベストアンサー

ActionScript3.0の修正に関して

下記スクリプトは、A_btnをマウスオーバーすると、mcを表示し、 A_btnをマウスアウトすると、mcを非表示にするというスクリプトです。 これのマウスオーバー、マウスアウトを クリックしたら表示し、もう一度クリックしたら非表示にするというものに 変更したいのですが、 単にMouseEvent.CLICKにすると動作しなかったので どなたか教えていただけないでしょうか? よろしくお願いします。 ---------------------- 環境 action script3.0 Mac OSX Flash CS4 ---------------------- var mc:Fukidashi = new Fukidashi(); A_btn.addEventListener(MouseEvent.MOUSE_OVER,xMouseOver); function xMouseOver(evt){ mc.alpha = 0; addChild(mc); mc.x = 0; mc.y = 0; mc.addEventListener(Event.ENTER_FRAME,imgAlpha); function imgAlpha(event:Event){ mc.alpha += 0.05; if (mc.alpha > 1){ mc.removeEventListener(Event.ENTER_FRAME,imgAlpha); } } } A_btn.addEventListener(MouseEvent.MOUSE_OUT,xMouseOut); function xMouseOut(evt){ removeChild(mc); mc.alpha = 0; }

  • Flash
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • BlurFiltan
  • ベストアンサー率91% (1611/1754)
回答No.1

次のような感じで良いのではないかと思います。 var mc:Fukidashi = new Fukidashi(); //初期値がtrueのフラグでも用意しておく var flag:Boolean = true; A_btn.addEventListener(MouseEvent.CLICK,xClick); function xClick(evt:MouseEvent):void { //もしflagがtrueであれば if (flag) { mc.alpha = 0; addChild(mc); mc.x = 0; mc.y = 0; mc.addEventListener(Event.ENTER_FRAME,imgAlpha); function imgAlpha(event:Event):void { mc.alpha += 0.05; if (mc.alpha>1) { mc.removeEventListener(Event.ENTER_FRAME,imgAlpha); } } //フラグをfalseにする flag=false; //もしフラグがfalseであれば } else { removeChild(mc); //フラグをtrueにする flag=true; } }

yuyumamayaya
質問者

お礼

どうもありがとうございました。 助かりました!

関連するQ&A

  • AS3.0 でフェードイン、

    AS3.0 でフェードイン、フェードアウトを繰り返したいんです。 _btnをマウスオーバーするとimg_mcがフェードインし、 _btnをマウスアウトするとimg_mcがフェードアウトするというものをつくりたいのですが、 下記スクリプトだと一通り動作を完了すると、ボタンにマウスを持っていっても反応しなくなります。 繰り返し動作させるにはどうしたらよいのでしょうか? var img_mc:MovieClip; img_mc.alpha = 0; _btn.addEventListener(MouseEvent.MOUSE_OVER,xClick0); function xClick0(evt){ img_mc.addEventListener(Event.ENTER_FRAME,imgAlpha); function imgAlpha(event:Event){ img_mc.alpha += 0.05; //スピード if (img_mc.alpha > 1){ img_mc.removeEventListener(Event.ENTER_FRAME,imgAlpha); } } } _btn.addEventListener(MouseEvent.MOUSE_OUT,xClick); function xClick(evt){ img_mc.addEventListener(Event.ENTER_FRAME,imgAlpha2); function imgAlpha2(event:Event){ img_mc.alpha -= 0.05; //スピード if (img_mc.alpha == 0){ img_mc.removeEventListener(Event.ENTER_FRAME,imgAlpha2); } } }

    • ベストアンサー
    • Flash
  • actionscript3.0について教えてください。

    actionscript3.0について教えてください。 Flash CS4で、マウスオーバーすると画像が表示するものを制作しました。 (全レイヤー、1フレーム目のみで制作していました) そして最近その以前制作したものの直前に別のムービーを入れることになり、 画像のように1フレーム目から4フレーム目まであけました。 そしてもともとあったフレームをすべて5フレーム目に移動しました。 すると、エラーが出るようになりました。 5フレーム目に移動するとエラーが出るようになってしまったので、 試しに2フレーム目、3フレーム目など試しましたが同じくエラーが出ました。 エラーの内容は TypeError: Error #1009: null のオブジェクト参照のプロパティまたはメソッドにアクセスすることはできません。 at test_fla::MainTimeline/frame5() です。 下記のスクリプトを上から二つ目のレイヤーに記述しています。 一番上のレイヤーには、stop();と記述しています。 超初心者のため説明不十分かもしれませんが、宜しくお願いいたします。 /*ボタン1 */ nav1txt_mc.visible = false; nav1_btn.addEventListener(MouseEvent.MOUSE_OVER,onMouseover); function onMouseover(e:MouseEvent):void{ nav1txt_mc.visible = true; nav1txt_mc.gotoAndPlay("nav1txt_mc"); } nav1_btn.addEventListener(MouseEvent.MOUSE_OUT,nondisplay); function nondisplay(e:MouseEvent):void{ nav1txt_mc.visible = false; } /*ボタン2*/ nav2txt_mc.visible = false; nav2_btn.addEventListener(MouseEvent.MOUSE_OVER,onMouseover2); function onMouseover2(e:MouseEvent):void{ nav2txt_mc.visible = true; nav2txt_mc.gotoAndPlay("nav2txt_mc"); } nav2_btn.addEventListener(MouseEvent.MOUSE_OUT,nondisplay2); function nondisplay2(e:MouseEvent):void{ nav2txt_mc.visible = false; } /*ボタン3*/ nav3txt_mc.visible = false; nav3_btn.addEventListener(MouseEvent.MOUSE_OVER,onMouseover3); function onMouseover3(e:MouseEvent):void{ nav3txt_mc.visible = true; nav3txt_mc.gotoAndPlay("nav3txt_mc"); } nav3_btn.addEventListener(MouseEvent.MOUSE_OUT,nondisplay3); function nondisplay3(e:MouseEvent):void{ nav3txt_mc.visible = false; } /*ボタン4*/ nav4txt_mc.visible = false; nav4_btn.addEventListener(MouseEvent.MOUSE_OVER,onMouseover4); function onMouseover4(e:MouseEvent):void{ nav4txt_mc.visible = true; nav4txt_mc.gotoAndPlay("nav4txt_mc"); } nav4_btn.addEventListener(MouseEvent.MOUSE_OUT,nondisplay4); function nondisplay4(e:MouseEvent):void{ nav4txt_mc.visible = false; } 宜しくお願いいたします。

    • ベストアンサー
    • Flash
  • FLASH/一定時間停止後、再生されるscript

    flash CS4/ActionScript3.0にてサイトローテーションバナーを制作しております。 ムービークリップ「btn1_mc」をクリックするとフラッグ「scene1」を再生し、 「btn1_mc」にポインタが乗った時は一定時間停止し、再生されるという動きを作りたいのですが、初心者のため、うまくActionScriptが書けません。 setTimeout関数を使えば良いということはわかったのですが… 下記コードに書き加え、実装する方法を教えていただければ助かります。 よろしくお願いします。 btn1_mc.addEventListener(MouseEvent.CLICK,btn1Click); btn1_mc.addEventListener(MouseEvent.ROLL_OVER,btn1Over); btn1_mc.addEventListener(MouseEvent.ROLL_OUT,btn1Out); btn1_mc.buttonMode=true; function btn1Click(evt:MouseEvent):void{ gotoAndPlay("scene1"); } function btn1Over(evt:MouseEvent):void{ gotoAndStop("scene1"); btn1_mc.gotoAndStop(2); } function btn1Out(evt:MouseEvent):void{ gotoAndPlay("60"); btn1_mc.gotoAndStop(1); }

  • actionscript3.0 rotationについて

    actionscript3.0 rotationについて btnを押すごとにmcを時計回りに90度減速させながら回転させたいと思っています。 しかし2回ボタンを押して180度回転させるまではうまくいくのですが 3回目に270度になると、回転がとまりません。 分岐させて、-90度回そうと思うと(当たり前ですが)逆回転してしまいます。 どのように記述すればよいでしょうか? よろしくお願いします。 以下スクリプトです。 var i:int=0; function onEnter(event:Event):void{ mc.rotation += (i-mc.rotation)*0.1; } addEventListener(Event.ENTER_FRAME, onEnter); btn.addEventListener(MouseEvent.MOUSE_DOWN, MouseLDownFunc); function MouseLDownFunc(event:MouseEvent):void{ i+=90; };

    • ベストアンサー
    • Flash
  • Flash(ActionScript3.0)

    Flash(ActionScript3.0)でゲーム制作を行っています。 ActionScriptもFlashも最近初めて触れた初心者で、分からないことがたくさん湧いてきて困っています。 よろしければご回答お願い致します。 インスタンスをドラッグすることができる、という要素と、 インスタンスをクリックすると45度回転する、という要素を同時に入れたいのですが、 同時にプログラムを組むとドラッグだけをすることができず、 どうしてもドラッグ後に45度回転してしまいます。 (プログラムのソースはネットから拾ってきたものです)。 どうすればドラッグと回転を分けることができるのでしょうか。 プログラム自体は以下のように組みました。 ご回答いただければ嬉しいです。 よろしくお願い致します。 //インスタンスの回転プログラム mc1.addEventListener(MouseEvent.CLICK, kaiten); function kaiten(event:MouseEvent) { mc1.rotation += 45; } //インスタンスのドラッグプログラム //インスタンスの0点からのマウス座標用変数 var mc1X:int; var mc1Y:int; //マウスがインスタンスを押したらsec1開始 mc1.addEventListener(MouseEvent.MOUSE_DOWN,sec1); //sec1 マウスダウン座標確認、sec2開始 function sec1(event:MouseEvent):void { mc1X = event.localX; mc1Y = event.localY; addEventListener(MouseEvent.MOUSE_MOVE,sec2); } //sec2 インスタンス移動 function sec2(event):void { mc1.x = mouseX-mc1X; mc1.y = mouseY-mc1Y; //低FPSマウス移動スムーズ対応 event.updateAfterEvent(); } //マウスが離れたらsec3開始 stage.addEventListener(MouseEvent.MOUSE_UP,sec3); mc1.addEventListener(MouseEvent.MOUSE_OUT,sec3); //sec3 sec2停止 function sec3(event):void { removeEventListener(MouseEvent.MOUSE_MOVE,sec2); }

  • マウスアウトで非表示にする

    シーン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; } //-----------------------------------

    • ベストアンサー
    • Flash
  • actionscript3.0 オブジェクトの動的生成

    actionscript3.0についての質問です。 イラストレーターのテキストツールのように 任意の文字オブジェクトを複数生成し、生成された任意の文字オブジェクト をドラッグで移動する処理をactionScriptで実行したいと考えています。 現在actionscript3.0で行いたいと考えている一連の流れは以下の通りです。 1.ステージに配置したテキストフィールに任意の文字列を入力 2.入力された文字列を参照してムービークリップ内のダイナミックテキストに出力。 3.ステージにボタンを配置し、それを押すことでステージに1.2の手順によって作成されたムービークリップが生成。 4.生成されたムービークリップをドラッグすると動かすことができる。 1から3までの内容を下記のようなスクリプトで行いました。 //ダイナミックテキストを内包するためのムービークリップを定義 //埋め込みアセットクラスmcからインスタンスを生成 var word_mc:MovieClip = new mc( ); //ボタンクリックイベントを登録 create_btn.addEventListener( MouseEvent.Click, creClick ); //ボタンクリック時の処理 function creClick( evt:MouseEvent ):void { //テキストフィールドinputWordに入力されたテキストを変数inputに格納 var input:String = inputWord.text; //word_mc内に配置したダイナミックテキストoutputWordに入力テキスト内容を出力 word_mc.outputword.text = input; //word_mcを画面に表示 addChild( word_mc ); } //word_mcをドラッグで移動させるためのスクリプト word_mc.addEventListener( MouseEvent.MOUSE_OVER, wordMO ); function wordMO( evt:MouseEvent ):void { word_mc.addEventListener( MouseEvent.MOUSE_DOWN, wordMD ); word_mc.addEventListener( MouseEvent.MOUSE_UP, wordMU ); } function wordMD( evt:MouseEvent ):void { word_mc.startDrag( ); } function wordMU( evt:MouseEvent ):void { word_mc.stopDrag( ); } ひとつのオブジェクトを生成するだけならこれで問題ないのですが、 このスクリプトでは、、"車"、"自転車"、"飛行機"という文字列をそれぞれ内包した変数名もしくはクラス名の違うオブジェクトを生成することが できません。 埋め込みアセットクラスをあらかじめ複数作っておいて、クラス名を 連番で名づけ、クラス名から動的にオブジェクトを生成すれば 内容の異なるオブジェクトを生成することは可能ですが、 単語を追加するたびに埋め込みアセットクラスを作成しなければ ならない上、変数名は同じなため、個々のオブジェクトをマウスドラッグすることができません。 イラストレーターのテキストツールのように 任意の文字列を生成した後、個々にマウスドラッグできようにするには どうしたら良いのでしょうか。 どうかご指導のほど、よろしくお願い致します。

    • ベストアンサー
    • Flash
  • AS3のボタンアクションについて

    FlashCS3 ActionScript3.0 ボタンアクションでつまづいています。 http://www.cucinadicasamia.fr/ 上記サイトのように、ボタンをクリックすれば、ダウンの状態を保持、 他のボタンをクリックでダウンの状態を解除。 のようにしたいのですが、上手くいきません。 下記のようにコードを書いたのですが。。。 A_mc.addEventListener(MouseEvent.CLICK,Click); A_mc.addEventListener(MouseEvent.ROLL_OVER,Over); A_mc.addEventListener(MouseEvent.ROLL_OUT,Out); B_mc.addEventListener(MouseEvent.CLICK,Click); B_mc.addEventListener(MouseEvent.ROLL_OVER,Over); B_mc.addEventListener(MouseEvent.ROLL_OUT,Out); function Over(event:MouseEvent):void{ event.target.gotoAndPlay("B"); } function Out(event:MouseEvent):void{ event.target.gotoAndPlay("A"); } function Click(event:MouseEvent):void{ trace("click"); event.target.gotoAndPlay("C"); } A_mc.buttonMode = true; B_mc.buttonMode = true; /////////////////////////////////////////////////////////////////////// function Clickとfunction Overが同時に発生しているので上手くいかないのでしょうか。。。 ご教授お願いいたします。

  • ActionScript3.0 初心者です

    ActionScript3.0 初心者です。 ムービークリップballに対して、以下のようなスクリプトを書いて、 ロールオーバーすると徐々に大きく、 アウトすると徐々に小さくなるようにしています。 しかし、初めはうまくいくのですが、 オーバー、アウトの回数を重ねるごとに、 縮尺の間隔が短くなってしまいます。 常に同じ間隔で縮尺させるにはどうすればいいのでしょうか? よろしくお願いします。 ball.addEventListener (MouseEvent.MOUSE_OVER, r_over); ball.addEventListener (MouseEvent.MOUSE_OUT, r_out); var c:int; var nDeceleration:Number = 0.1; function r_over(event:MouseEvent):void { c = 400; ball.addEventListener(Event.ENTER_FRAME, ballsize); function ballsize(event:Event):void { if(ball.width==c){ ball.removeEventListener(Event.ENTER_FRAME,ballsize); } else{ ball.width +=(c - ball.width) *nDeceleration; ball.height +=(c - ball.height) *nDeceleration; } } } function r_out(event:MouseEvent):void { c = 150; ball.addEventListener(Event.ENTER_FRAME, ballsize); function ballsize(event:Event):void { if(ball.width==c){ ball.removeEventListener(Event.ENTER_FRAME,ballsize); } else{ ball.width +=(c - ball.width) *nDeceleration; ball.height +=(c - ball.height) *nDeceleration; } } }

  • Actionscript3.0 子のイベントを削除

    Actionscript3.0で親のムービーから子のイベント指定して削除することは可能でしょうか? 親のステージに配置したmymcの中でballをENTER_FRAMEを使い動かしています。 親のステージに配置したbtnをクリックすることで、 ENTER_FRAMEを削除したいのですが、 下記のスクリプトだと、親のほうでmyenterframeが未定義と表示されてしまいます。 どのように記述すればよいのでしょうか? よろしくお願いいたします。 ーーーーーーーーーーーーーーーーー親ーーーーーーーーーーーーーーーーー btn.addEventListener (MouseEvent.CLICK, myclick); function myclick(event:MouseEvent):void{ mymc.removeEventListener(Event.ENTER_FRAME, myenterframe); } ーーーーーーーーーーーーーーーーーmymcーーーーーーーーーーーーーーーーー addEventListener(Event.ENTER_FRAME, myenterframe); function myenterframe(evt:Event):void { ball.x++; }

    • ベストアンサー
    • Flash

専門家に質問してみよう