ステージ上の複数のMCを非表示にする方法

このQ&Aのポイント
  • 現在ステージ上に配置されている複数のMCを_visibleプロパティを使用して非表示にする方法について質問です。
  • 非表示にしたいMCの数が複数ある場合、for文を使用して一括で非表示にすることができますが、うまく動作しない状況で困っています。
  • スクリプトの記述に誤りがあるのか、思うように非表示にならないので、正しい方法を教えていただけると助かります。
回答を見る
  • ベストアンサー

visibleについて

現在ステージ上に複数のMCが配置してあり、 これらのMCを_visibleを使用して非表示にしたいと考えています。 for文を使用して非表示にしたいのですがうまく動作しません。 単純な質問ですがお付き合い頂けたらと思います。 例 ステージにmc test_mc1 ~ test_mc10 を配置 //イベント発生時に非表示 test_btn.onRelease = function() { for( i = 1 ; i <= 10 ; i++) { aaa = "test_mc" + i aaa._visible = false; } } 上記のようにスクリプトを記述したのですが、非表示されません。 非表示になる方法をご教授頂けたら幸いです。 開発環境:CS3 AS2.0 よろしくお願いします。

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

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

  • ベストアンサー
  • an631
  • ベストアンサー率82% (28/34)
回答No.1

aaa._visible = false; ↓ this._parent[aaa]._visible = false; 上記のように書き換えてください。 私がテスト用に作ったものでは、これで動きました。 test_btnやtest_mc1の位置関係によっては this._parent[aaa]ではなくて _root[aaa]やthis._parent._parent[aaa]としないと動かない場合もあります。

gardens64
質問者

お礼

an631様ご回答ありがとうございます。 ご教授頂いた通りに記述したところ、理想の動作をしました。 [aaa]の[]がないことが原因でした。 プログラミング初心者なので、このような記述方法があることすら 知りませんでした。 今回は大変勉強になりました。 機会があれば再度ご教授頂ければと思います。 ありがとうございました。

関連するQ&A

  • FlashでXMLを読み込んだ際の関数について

    XMLでデータを読み込んで表示させているボタンがあり、 そちらを制御するための関数を作りたいのですがうまくいきません。 btn0.onRelease = function() { _root.sound_mc.songStarter(songfile[0], songname[0]); }; btn1.onRelease = function() { _root.sound_mc.songStarter(songfile[1], songname[1]); }; btn2.onRelease = function() { _root.sound_mc.songStarter(songfile[2], songname[2]); }; とある中身を簡単に書きたくて、 for(var i=0; i<=2; i++) { var btn = this["btn" + i ]; btn.onRelease = function() { _root.sound_mc.songStarter(songfile[i], songname[i]); }; } と記述してみましたが、動きません。 正しい書き方をどなたかご教授ください。 よろしくお願いいたします。

    • ベストアンサー
    • Flash
  • Flash オブジェクトの表示/非表示

    こんにちは。今回はオブジェクトの表示/非表示のことに関して質問させていただきます.使っているものは、Mac/FlashCS3/AS1&2 です. (フレーム名"s1"にて) MC(ムービークリップ)/pre_btn(ボタン)/del_btn(ボタン)/btn(ボタン)というオブジェクトが画面に表示してあります. (アクションフレームに) pre_btn.onRelease = function(){   MC._visible = true; } del_btn.onRelease = function(){   MC._visible = false; } (btnムービークリップアクションに) on(release){   _root.gotoAndPlay("s2") } (フレーム名"s2"にて) btn2(ボタン)のみ画面に表示されています. (btn2ムービークリップアクションに) on(release){   _root.gotoAndPlay("s1") } 以上のACを記述しました.これでMCを表示/非表示させることができ,btnをクリックし"s2"フレームに移動/btn2をクリックし"s1"フレームに移動することもできるようになりました. しかし,"s1"にて非表示にしたMCが,"s2"のフレームに移動し"s1"に戻ってきたとき,表示されている状態に戻ってしまいます. どうしたら,一度非表示にしたMCを,その後フレーム移動したとしても,非表示の状態に保つことができるのでしょうか?? どうか,ヒントだけでもいいので,何か教えていただけると嬉しいです. よろしくお願いします.

  • 複数のムービークリップについて

    毎度すみません。 複数のムービークリップ(以下MC)をステージに時間差でバラバラの位置に登場させたいのですが、最初で行き詰まってしまいましたのでご質問させてください。 5個のMC(1~5)をステージに配置し、インスタンス名をmc1~mc5で振っています。 スクリプトレイヤーに以下の様に記述しています。 ------------ for(i=1;i<5;i++){ var mc = this["mc"+i]; mc.num = i; } mc.num._visible = false; mc.num._alpha = 0; //MCを時間差で任意の位置に表示 var t=0; this.onEnterFrame = function(){ t++; if(t==25){ mc1._visible = true; mc1.onEnterFrame = function(){ this._y = 50; } } if(t==50){ mc2._visible = true; mc2.onEnterFrame = function(){ this._y = 100; } } if(t==75){ mc3._visible = true; mc3.onEnterFrame = function(){ this._y = 150; } } //以降、mc4、mc5は省略 } --------- --------- mc.num._visible = false; mc.num._alpha = 0; --------- の部分で、デフォルト時はmc1~5を非表示にしているつもりが、 最初から表示されてしまいます。 初心者なので、近いフラッシュを見よう見真似で作成しています。 根本的に記述法を間違えておりましたら、恐れ入りますがご指摘ください。 またもっと効率的な方法がありましたら、ご教授いただければ幸いです。 Flash8.0、ActionScript2.0で制作しています。

    • ベストアンサー
    • Flash
  • スクリプトをまとめて書くには

    Actionscript 2.0で作成しています。 例えばムービークリップaaa1~aaa10までと、bbb1~bbb10があったとして、 aaa1をクリックするとaaa1とbbb1が動く、というようなスクリプトを書きたい場合、 for( i = 1 ; i <= 10 ; i++ ){ eval("aaa"+i).onRelease = function(){ this.gotoAndPlay(2); _root.eval("bbb"+i).gotoAndPlay(2); } } としてもbbbの方が動きません。 iの値がeval("bbb"+i)の時点で11になってしまってます。 なので現状forを使わずに書いているのですが、 このような方法を簡単な記述で実現するにはどうすればいいのでしょう? それと、同じ動作を別のムービークリップにさせたい場合、 まとめて書くことはできますでしょうか? (例えばこれをまとめて書くとか) aaa.onRelease = function(){ _root.stop(); } bbb.onRelease = function(){ _root.stop(); }

    • ベストアンサー
    • Flash
  • mcにリンクを順番に張りたい

    for(i=0; i<5; i++){ creatEmptyMovieClip(["mc"+i],i); _root["mc"+i]._x = i*10 _root["mc"+i].onRelease=function{ getURL(["test"+i],"_blank"); } } として、 mc1にはtest1 mc2にはtest2 mc3にはtest3 mc4にはtest4 mc5にはtest5 のリンクを設定したいのですが、 なぜかすべてのmcにtest5へのリンクがついてしまいます。 上記のように順番にリンクをつけるには どのようにしたらいいのでしょうか。 _root["mc"+i].onRelease=function{ trace(i); } でiの値を確かめてみると iが5というのがわかります。 このiをカウントするようにすれば解決しそうなんですが、、、。

    • ベストアンサー
    • Flash
  • 外部swfファイルの閉じ方

    メインに"stage2というmcを配置し、123.swfを読み込むボタンを配置しました。 ボタンスクリプト: on (release) { _root.construction(); loadMovie("123.swf", "_root.stage"); _root.stage.swapDepths(5); for (i=1; i<=4; i++) { _root["m_"+i]._visible = false; } 開いた外部swfファイルを閉じる設定をしたいのですが、どのようにすればよいでしょうか。 よろしくお願いいたします。

    • ベストアンサー
    • Flash
  • 移動位置が狂ってしまう

    いつもお世話になります。 「ボタンの有効と無効」及び「左右ボタンで方向切替」を合体させてアクションスクリプトを記述しました。ボタンが1個の時に、falseとtrueで有効・無効を教えていただきました。 次にボタンを2個とした場合、右ボタンを押し、即座に左ボタンを押すとやはり移動位置が狂ってしまいます。私にとっては行数が増え、どのように対処すればいいのかわかりません。 教えてください。 //クラスのインポート import mx.transitions.Tween; import mx.transitions.easing.*; //画像1枚の横幅を設定 var g_w:Number = 120; //画像の枚数を設定 var g_n:Number = 7; //カウンタ用変数 var cnt:Number = 0; //「L_btn」を非表示にしておく L_btn._visible = false; //「R_btn(→ボタン)」クリック時の動作を定義 R_btn.onRelease = function():Void { //もしカウンタが 画像の枚数-1 未満であれば (cnt<g_n-1) { var myTween = new Tween(my_mc, "_x", Regular.easeOut, my_mc._x, my_mc._x-g_w, 3, true); //bt1のボタン機能を無効にする R_btn.enabled = false; //myTweenのモーション終了時に実行するメソッドを定義 myTween.onMotionFinished = function() { //ボタン機能を有効にする R_btn.enabled = true; } //L_btnを表示する L_btn._visible = true; //なおかつカウンタが 画像の枚数-2になれば if (cnt == g_n-2) { //R_btnを非表示にする R_btn._visible = false; } //カウンタに1を加算 cnt++; } } //L_btnクリック時の動作を定義 L_btn.onRelease = function():Void { //もしカウンタが 0 より大きい場合は if (cnt>0) { var myTween = new Tween(my_mc, "_x", Regular.easeOut, my_mc._x, my_mc._x+g_w, 3, true); //bt1のボタン機能を無効にする L_btn.enabled = false; //myTweenのモーション終了時に実行するメソッドを定義 myTween.onMotionFinished = function() { //ボタン機能を有効にする L_btn.enabled = true; } //R_btnを表示する R_btn._visible = true; //なおかつカウンタが 1 になれば if (cnt == 1) { //L_btnを非表示にする L_btn._visible = false; } //カウンタから1を減算 cnt--; } };

    • ベストアンサー
    • 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、外部ファイルの読み込みとスムージングに関して質問させていた

    Flash、外部ファイルの読み込みとスムージングに関して質問させていただきます。 CS4、AS2.0を使用させていただいております。 ボタンが3つあり、それぞれのボタン(nav1_btn、nav2_btn、nav3_btn)を押した際に2階層上のtarget_mcというmcにスムージングをかけて(1.jpg、2.jpg、3.jpg)表示させたいのですが、表示できなくかなり悩んでいます。 【今のスクリプト】 var mcl = new MovieClipLoader(); nav1_btn.onRelease = function() { mcl.loadClip("1.jpg", _parent._parent.target_mc); }; nav2_btn.onRelease = function() { mcl.loadClip("2.jpg", _parent._parent.target_mc); }; nav3_btn.onRelease = function() { mcl.loadClip("3.jpg", _parent._parent.target_mc); }; 宜しくお願いいたします。

    • ベストアンサー
    • Flash
  • ActionScriptでの繰り返し記述をすっきりまとめたい

    FLASHのActionScriptを勉強中です。 繰り返し同じ様なものを記述する場合、for文か何かを使うと思うのですが、以下の場合はどうすればいいのでしょうか? *プログラムの内容は複数のインスタンスを表示してクリックで順次消えるというものです。インスタンスに記述ではなく、フレームに記述しています。(イベントハンドラメソッド) this.b1.onRelease = function(){ _root.b1._visible = false; }; this.b2.onRelease = function(){ _root.b2._visible = false; }; this.b3.onRelease = function(){ _root.b3._visible = false; };      以下繰り返し… お詳しい方、よろしくお願いいたします。

    • ベストアンサー
    • Flash