• ベストアンサー

ムービークリップを全て消去したい・・・

タイトルどおりの悩みなのですが、attachMovieで複製したムービークリップを削除したいのですが、removeMovieClipでは一つずつしか消去が出来ず、プログラムがかさばってしまって大変見づらくなってしまいました。 教えて頂きたいのですが、たくさん作られたムービークリップを一括で削除する方法は無いでしょうか。(ありえないと思いますが、AllMovieClipDelete()みたいな・・・) for文で連続して消せばいいのかもしれませんが、一つ一つの名前がバラバラなので、それも出来ず、少し行き詰っています。 ご教示、よろしくお願いします。

noname#77303
noname#77303
  • Flash
  • 回答数1
  • ありがとう数1

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

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

for..in 文が使えると思います。 次のスクリプトは, 新規ドキュメントを作成して,フレーム1 に書くだけのもので, 上半分以上は本題とは関係ありません(検証実験には関係ありますが)。 ////////////////////////////////////////////////////////////// // -------適当なMCを適当に作成(関係なし)--------- function makeMC(_mc) { _mc._x = Math.random()*(Stage.width-100)+50; _mc._y = Math.random()*(Stage.height-100)+50; _mc.beginFill(0x999999, 50); _mc.lineTo(0, 0); _mc.lineTo(0, 50); _mc.lineTo(50, 50); _mc.lineTo(50, 0); } _root.createEmptyMovieClip("OK", _root.getNextHighestDepth()); makeMC(_root.OK); _root.createEmptyMovieClip("Web", _root.getNextHighestDepth()); makeMC(_root.Web); _root.createEmptyMovieClip("Oshiete", _root.getNextHighestDepth()); makeMC(_root.Oshiete); _root.createEmptyMovieClip("goo", _root.getNextHighestDepth()); makeMC(_root.goo); _root.createEmptyMovieClip("Category", _root.getNextHighestDepth()); makeMC(_root.Category); _root.createEmptyMovieClip("Flash", _root.getNextHighestDepth()); makeMC(_root.Flash); // // --------以下が本題------------------- for (var my_mc in _root) { if (typeof (_root[my_mc]) == "movieclip") { _root[my_mc].removeMovieClip(); } } ////////////////////////////////////////////////////////////// 本題の部分を, コメントアウトしたり,コメントアウトから外したりすれば,動作検証できます。 Google 検索「for..in Flash」 http://www.google.co.jp/search?hl=ja&q=for..in+Flash&lr=lang_ja

noname#77303
質問者

お礼

forにはこんな使い方もあったのですね。 大変勉強になりました。ありがとうございました。

関連するQ&A

  • ムービークリップを削除したい

    FLASH 5 を使っています。 現在、duplicateMovieClip を使ってムービークリップを複製できるようにしています。 複製するMCの名前に連番を付けるようにして同じものを何個も複製できるようにしています。 別途、ゴミ箱を作り複製したMCをゴミ箱に乗せると削除できるようにしたいと考えています。 hitTest と removeMovieClip を使えば良さそうなのですがうまくいきません。 複製したMCが何個も出来るためゴミ箱基準だとMCの名前を指定できないので複製元のMCに onClipEvent (enterFrame) { if (this.hitTest( _root.gomi )) { this.removeMovieClip (); } } と書いてみたのですがダメでした。 なにぶん Actionscriptを始めたばかりで、良く分かりません。 お分かりの方、教えていただけますでしょうか? 宜しくお願い致します。

    • ベストアンサー
    • Flash
  • 幅の異なる複数のムービークリップを等間隔で配置するには

    複数のムービークリップをattachMovieで配置することはできたのですが、これらを左右に等間隔で並べるにはどうしたらいいでしょうか?同じ幅であればなんとかできそうなんですが、ムービークリップの幅がひとつひとつ異なる場合の処理で悩んでいます。 for (i = 1; i < 10; i++) { this.attachMovie ("A" + i,"A" + i,i,{_x:15, _y:15}); } ここまではできました。 これらを下記のようにすれば並べられるんですが、もっとスマートにするにはどうしたら良いでしょうか? A2._x = A1._width + 30; A3._x = A1._width + A2._width + 45; A4._x = A1._width + A2._width + A3._width + 60; A5._x = A1._width + A2._width + A3._width + A4._width + 75; よろしくお願いします。

    • ベストアンサー
    • Flash
  • ムービークリップのインスタンス名を変数で扱う

    Flash初心者で、レベルの低い質問だとは思いますが申し訳ありません。単純なシンタックスに関する質問です。 Panel.Panel0Cont ~ Panel.Panel10Cont という11個のムービークリップがあります。 それぞれのムービークリップを一挙に指定のフレームへgotoAndPlayさせる際に、ムービークリップの名前を変数で代入してforループで回したいのですが、変数への代入の仕方が解りません。例えば、 for (i=0; i>10; i++) { var mc:MovieClip = "Panel.Panel"+i+"Cont"; mc.gotoAndPlay(JumpNum); } mcはムービークリップですから、単純な文字列を代入しても当然タイプエラーになってしまいます。ムービークリップのインスタンス名のプロパティに、文字列を変数を使って代入するやり方があるのだと思います。 そのやり方をご教示頂けませんか。 ※参考書を2冊ひっくりかえしてもにわかには見つかりませんでした。

    • ベストアンサー
    • Flash
  • removeMovieClip()で画面が固まる

    こんばんは。 透明ムービークリップ上でマウスをクリックすると、ライブラリに登録されたムービークリップシンボルをattachMovie()で生成するflashを作っています。生成するのはできるのですが、「Clear」ボタンをつくり、ボタンを押すと、生成したインスタンスをすべて一度に削除するスクリプトを仕込んでいます。しかし、Clearボタンを押すとFlashが固まります。たぶん、スクリプトの書き方に問題があると思うのですがわかりません。わかる方がいらっしゃったらお教え願います。 //インスタンスを生成するスクリプト onClipEvent(load) { count = 0; } onClipEvent(enterFrame) { this.onPress = function() { count++; mouseX = _root._xmouse; mouseY = _root._ymouse; charaName = "Chara" + count; obj_format = {_x:mouseX,_y:mouseY}; attachMovie("chara1",charaName,count,obj_format); } } //インスタンスを削除するスクリプト on(press) { for(i = 1;i <= count; i++) { tmp = "Chara" + i; _root[tmp].removeMovieClip(); } count = 0; }

    • ベストアンサー
    • Flash
  • 消去できません・・・

    保存してあるMOVIEを消そうと思い、消去したのですが、ファイルまたはフォルダの削除エラーとでてきて、内容はほかの人またはプログラムによって使用されています。とでてきます。 これはスパイウェアによってなってるのでしょうか?? 親切な方、パソコン初心者なので教えてください。

  • Flash Liteのムービークリップ間の変数のやりとりについて

     現在、特定のムービークリップに格納されている、2つのムービークリップ間で変数(dropのbtypeとcursorのtype間)をやりとりするプログラムを組んでいるのですが、まだ、Flash Liteの技術が未熟なため、 for(i = 0; i < 2; i++){   tellTarget("drop" add i){     ../:n = btype;   }   tellTarget("cursor" add i){     type = ../:n;   } } と、少々回りくどい記述をしてしまいます。 個人的には tellTarget("cursor" add i){   type = eval("../drop" add i add ":btype"); } のように簡潔に記述できたらよいと思っているのですが、上記の方法では、typeはundefinedとなるため、文法としては正しくありません。  コードをスマートに記述できる方法をご存じの方がおられれば、ご教示ください。

    • ベストアンサー
    • Flash
  • Flash/オブジェクトの指定のしかた

    いつもお世話になっております。 FlashでActionScriptを使って、 異なるオブジェクトを、同じメソッドで 連続的に処理する仕方について質問です。 やりたいこと・・************************* オブジェクトをいくつか複製して、 Resetボタンをクリックすると、 複製したオブジェクトが全てきえる、 というスクリプトを組みたいと考えています。 ************************************** 具体的には以下のように、 duplicateMovieClip()でオブジェクトを複製します。 次に、resetボタン(ボタンオブジェクト)に、 removeMovieClip()メソッドで複製したオブジェクトを 削除します。 メソッドは以下のようにしています。 一気にすべてを消したいために、 For文でremoveMovieClip()メソッドを 実行しようとしています。 removeMovieClip()メソッドを実行させる、 オブジェクトの指定に、 変数を使おうとしましたが、 とれませんでした。(以下参照) function removePoint() {  i = 1;  for (i = 1; i < pointFlg+1; i++){   RemoveObj = "newMc" + i;   _root.RemoveObj.removeMovieClip();  } } 異なるオブジェクトでメソッドを、一気に実行させる、 よい方法はご存知ないでしょうか? サンプル*********************************** function DuplicatePoint(){  pointFlg ++;  var newMcName = "newMc" + pointFlg;  var newLevel = pointFlg;  this.duplicateMovieClip(newMcName, newLevel);  _root.cursol.swapDepths(999);  _parent[newMcName]._x = _parent._xmouse;  _parent[newMcName]._y =_parent._ymouse; } function removePoint() {  i = 1;  for (i = 1; i < pointFlg+1; i++){   RemoveObj = "newMc" + i;   _root.RemoveObj.removeMovieClip();  } }

  • Pirates Buster for Movieをアンインストールしたい

    プログラムの追加と削除の中に「Pirates Buster for Movie」が入っていましたが、削除ボタンを押しても削除されません。 Program Fliesの中を検索しても「Pirates Buster for Movie」が検出されませんでした。 大きなファイルなので削除したいのですが、何か方法はあるのでしょうか。教えてください。

  • ムービークリップ(以下mc)を複製したときの深度の設定で困っています。

    ムービークリップ(以下mc)を複製したときの深度の設定で困っています。 使用ソフト:Adobe Flash CS4 professional flashのバージョン:flashlite1.1 duplicateMovieClip(コピー元mc名,新mc名,深度(例えば10など)); と書いてmcの複製はしっかりできているのですが、深度を「レイヤー内で一番上」に設定したいのですが、どう設定していいかわからず困っています。 通常、レイヤーが3つある場合、重ね順で言うと一番上のレイヤーが最前面に、一番下のレイヤーが最背面に設定されています。 そこで、一番下のレイヤーに上記プログラムを書いて一番下のレイヤーにmcを複製したいのですが、複製したmcは一番上のレイヤーよりも最前面に配置されてしまうのです。 duplicateMovieClipを書いているレイヤー内で最上位に配置したい場合、深度にどのような設定をすればいいか教えてください。

  • MovieMakerクリップ文字の表示時間を長く

    ■仕様機器 Win7  Movie Maker2.6(Vista) ■Movie Makerの、クリップに入れた説明文を、クリップの表示時間と同じようにする方法はありますか。ご存知の方のご教示を御願い致します。 ■コメント クリップの映写時間を仮に10秒とした場合、このクリップに入力した説明文も10秒にしたい。 現在画像の映写時間を10秒としても、説明文は4~5秒で終わり、肝心の説明が読みきれない。 画像の映写時間と説明文の設定時間が、別々に好みに応じて行える方法があればベストです。