removeChildで描画した絵(シンボル:ムービークリップ)を消し

このQ&Aのポイント
  • Adobe Flash Pro ActionScript 3.0で作成した絵をremoveChildで消す方法について教えてください。
  • 左クリックした時に表示されるムービークリップをremoveChildで消す方法を教えてください。
  • removeChildを使用して直前に追加したムービークリップを削除する方法と、これまでに追加した全てのムービークリップを削除する方法を教えてください。
回答を見る
  • ベストアンサー

removeChildで描画した絵(シンボル:ムービークリップ)を消し

removeChildで描画した絵(シンボル:ムービークリップ)を消したい。 お世話になります。 adobe Flash pro ActionScript 3.0 で作成しております。 左クリックを押したら、 var mc:pen=new pen; addChild(mc); mc.x=mouseX; mc.y=mouseY; でpenというムービークリップを表示させるようにしております。 removechildで消せるということはわかっているのですが、 具体的にどのようにしたら消せるのでしょうか? (1)直前に書いたmcを削除する方法 (2)今までに書いた全てのmcを削除する で教えて頂ければと思いますのでよろしくお願いします。

  • Flash
  • 回答数3
  • ありがとう数11

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

  • ベストアンサー
  • blchox
  • ベストアンサー率75% (3/4)
回答No.2

var mc:pen=new pen; addChild(mc); var btn:Sprite = new Sprite(); btn.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler); btn.addEventListener(MouseEvent.MOUSE_UP, mouseUpHandler); addChild(btn); function mouseDownHandler(event:MouseEvent):void { trace("mouseDownHandler"); } function mouseUpHandler(event:MouseEvent):void { trace("mouseUpHandler"); removeChild(mc); } たぶんこんな感じだと思います。 テストしてないんで、タイプミス等があったらすいません。

その他の回答 (2)

  • 76masa
  • ベストアンサー率50% (8/16)
回答No.3

完全に消すなら、ANo.2さんの removeChild(mc); の後に mc = null とすると良いでしょう。 こうすれば、GCの対象になり、メモリからも削除する事が出来ます。

  • blchox
  • ベストアンサー率75% (3/4)
回答No.1

まず、情報が少なすぎます。 >removechildで消せるということはわかっているのですが、 どのようにわかってるのでしょうか? どのように作成しているのかわかりませんので、一般的な話として。 (これでわからなければ違う勉強をまずすべきだと思います。) 左クリックということは、マウスイベントを発生させてそれにてpenを削除するということだと思うので、 っていうか何を左クリック? クリックするオブジェクトに対してイベントリスナーを登録して イベントを受けたらそこに登録した関数でremovechildしてあげれば終わりだと思います。 ソースを書いたほうがいいですか? これで意味がわからなければソース書いても為にはならないかと・・・・ (説明が下手ならすいません)

kgyqk433
質問者

お礼

>ソースを書いたほうがいいですか? >これで意味がわからなければソース書いても為にはならないかと・・・・ 初心者で大変申し訳ございません。 できれば、ソースを書いて頂ければありがたいです。 よろしくお願いします。

関連するQ&A

  • addChildで描画した絵(シンボル:ムービークリップ)を消したい。

    addChildで描画した絵(シンボル:ムービークリップ)を消したい。 お世話になります。 adobe Flash pro ActionScript 3.0 で作成しております。 左クリックを押したら、 var mc:pen=new pen; addChild(mc); mc.x=mouseX; mc.y=mouseY; でpenというムービークリップを表示させるようにしております。 そこで、作成したmcを消す方法はどのようにしたらよいでしょうか? (1)直前に書いたmcを削除する方法 (2)今までに書いた全てのmcを削除する で教えて頂ければと思いますのでよろしくお願いします。

    • ベストアンサー
    • Flash
  • AS3.0 ループを利用したムービークリップ生成

    お世話になります。 ソフトはFlashCS3を使用しています。Actionscript3.0で書き出そうと思っています。Actionscript3.0初心者ですがよろしくお願いします。 ライブラリーに Mc01,Mc02,Mc03,Mc04とクラスを指定したムービークリップを準備した状態でステージにムービークリップを生成しようと考えています。その際、for文を使って短く書きたいと思っています。 for (var i=0; i>4; i++){ var "Mc0"+i:"Mc0"+i = new "Mc0"+i(); "Mc0"+i.x = 10*i; "Mc0"+i.y = 10*i; this.addChild("Mc0"+1); } 上記のように書くと「1086:シンタックスエラー:identifierがMcの前に必要です。」とエラーが出てうまく作動しません。 参考までに現在は以下のようにすべて書き出しています。 //ムービクリップ01 var Mc01:Mc01 = new Mc01(); Mc01.x = 0; Mc01.y = 0; this.addChild(Mc01); //ムービクリップ02 var Mc02:Mc02 = new Mc02(); Mc02.x = 10; Mc02.y = 10; this.addChild(Mc02); …… 以下省略 特にfor文にこだわっててはいません。ループで生成できればOKです。 どなたかわかる方よろしくお願いします。

    • ベストアンサー
    • Flash
  • 文字列の置き換え処理について

    いつもお世話になります。 ActionScript3でサイト制作を行なっています。 初歩的な質問で大変恐縮ですが、文字の置き換え処理に関するご質問です。 「a_mc」というムービークリップがあり、関数Aの中で「a_mc」をthis.addChildします。 「b_mc」というムービークリップがあり、関数Aの中で「b_mc」をthis.addChildします。 以下「c_mc」、「d_mc」というムービークリップが続きます。 上記のムービークリップで不要になったものをremoveChildする時に、共通の関数で処理したいと考え、 this.removeChild(*_mc);という感じに*をa~dの文字列に置き換えて処理できるようにしたいと思い、 下記の処理を作成しましたが、「ReferenceError: Error #1065: 変数 b_mc は定義されていません。」 というエラーが表示されてしまいます。 上記の処理を実現するにはどのような処理方法が適切でしょうか? 是非ご教授ください。 宜しくお願い申し上げます。 // コンテンツMC var a_mc:MovieClip = new a_mcs(); var b_mc:MovieClip = new b_mcs(); var c_mc:MovieClip = new c_mcs(); var d_mc:MovieClip = new d_mcs(); this.addChild(a_mc); this.addChild(b_mc); this.addChild(c_mc); this.addChild(d_mc); // コンテンツ消去処理 // 例)ムービークリップb_mcをremoveChildする場合 removeFunc("b"); function removeFunc(str:String):void { var tempStr:String = str + "_mc"; var categoryNameClass:Class = Class(getDefinitionByName(tempStr)); var categoryContents:MovieClip = new categoryNameClass; this.removeChild(categoryContents); }

    • ベストアンサー
    • Flash
  • removeChildについて(AS3)

    ActionScript3のremoveChildについて、お教えください。 FlashCS5 windowsです。 どうぞ、よろしくお願いします。 順を追って、ご説明します。 ムービークリップ「テストA」「テストB」「テストC」の3つを作成します。 テストC→プロパティ→ActionScript用に書き出し→クラス で、TestCとクラス名を付けます。 ムービークリップ「テストA」のインスタンス名をtestA_mcとして、ステージに配置します。 testA_mc内のタイムラインに、 //---------- var testC_mc:TestC = new TestC(); addChild(testC_mc); //---------- と記述します。 ムービークリップ「テストB」を、ステージに配置します。 テストB内のタイムラインにremoveChildを書いて、 testA_mc内のtestC_mcをremoveChildしたいのですが、 どのように書けば、良いでしょうか、、、? ※不可能な場合は「不可能」と教えていただけますと、助かります。 よろしくお願いいたします。

    • ベストアンサー
    • Flash
  • ムービークリップ再生順序 制御について

    はじめて質問します。Flash初心者ゆえつたない説明ですいませんが、よろしくお願いします! Flash:ActionScript2.0 [現状] メインフレームにABCというムービークリップを配置しています。 それぞれ「mc1」「mc2」「mc3」というインスタンス名がついています。 各ムービークリップにはそれぞれ動きが設定しており、”moving”というフレームラベルをつけています。 [どう動作してほしいか] まずAのムービークリップが再生。Aのムービークリップ再生終了。 ↓ Bのムービークリップ再生開始。Bのムービークリップ再生終了。 ↓ Cのムービークリップ再生開始。Cのムービークリップ再生終了。 ↓ Aに戻る。 上記の動きをタイムラインを利用するのではなく、メインフレームに1つactionScriptを書くことで動作させるにはどうしたらいいでしょうか? ちなみに今は以下のように記述しており、実行すると3つのムービークリップが全て同時に動いてしまいます。 var list:Array = new Array(); for(var i=1; i < 4; i++) { var mcname = "mc" + i ; list[i] = eval(mcname); list[i].gotoAndPlay("moving"); } よろしくお願いいたします。

    • ベストアンサー
    • Flash
  • ムービークリップシンボルとグラフィックシンボルの違いは?

    本当に初歩の初歩の質問で申し訳ありませんが、いまいち理解できないので宜しくお願いします。 シンボルを作成する時、プロパティーで ムービークリップか ボタンか グラフィックかを 訪ねてきますが、ムービークリップでシンボルを作った場合と、グラフィックでシンボルを作った場合と使用する上で、どのように違うんですか。 どちらも同じように機能するように思うんですが? それともう一つ質問です。 シンボルの編集でモーショントゥイーンを作成すると、別個にトゥイーン(番号)のシンボルが発行されていますが、これはどうしても必要なものですか。 シンボルに影響しない削除の方法はあるのでしょうか? どうしても必要なものであれば、どのような時に利用するのでしょう。

  • ムービークリップをスクロール操作させる方法は?

    createEmptyMovieClip()で作成した空のムービークリップ_mcがあり, このムービークリップ_mcの配下に,createTextField()で作成したテキストエリアやcreateEmptyMovieClip()で作成したボタン等を配置しています. このムービークリップ_mcを,ScrollPaneコンポーネントを適用して,又は別の方法で,スクロール操作できるようにしたいのですが方法が分かりません. ご教授お願います. Flash8:ActionScript2.0

    • ベストアンサー
    • Flash
  • addChildとremoveChildの処理についてご教授ください

    いつもお世話になります。 ActionScript3でサイト制作を行なっています。 初歩的な質問で大変恐縮ですが、addChildとremoveChildの処理に関するご質問です。 予め「a_mc」、「b_mc」、「bg_mc」というムービークリップを作成し、それぞれをリンケージしておきます。 1.ENTER_FRAME内の条件Aの中で「bg_mc」上に「a_mc」をaddChildします。 2.条件Bにあるhoge関数の中で「bg_mc」上に「b_mc」をaddChildします。 3.「a_mc」は不要なのでremoveChildしたいのですが、下記のエラーが出てしまいます。 【ArgumentError: Error #2025: 指定した DisplayObject は呼び出し元の子でなければなりません。】 上記のエラーの原因がよく理解できなかたので、色々試してみましたが、 例えば、条件Aの中でステージ上にaddChildしたオブジェクト「this.addChild(c)」は、 条件Bのhogeの中でremoveChildすることができました。 上記の3の処理ができない原因は何でしょうか? また、上記の処理を実現するにはどのような処理方法が適切でしょうか? 是非ご教授ください。 宜しくお願い申し上げます。 // 背景MC var bg:MovieClip = new bg_mc(); // コンテンツMC var a:MovieClip; var b:MovieClip; this.addEventListener(Event.ENTER_FRAME, visibleCheck); function visibleCheck(eventObject:Event):void {  if(条件A) {   a = new a_mc();   bg.addChild(a);  } else if (条件B) {   hoge();   function hoge():void {    b = new b_mc();    bg.addChild(b);    bg.removeChild(a);   }  } }

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

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

    • ベストアンサー
    • Flash
  • (AS3)「var mc:MovieClip = new MC?();」 の?の部分を変数にできないか

    タイトルの通りです。 今ライブラリには100個のムービークリップがあって、それぞれMC1~MC100までのリンケージ名(クラス名)でActionScriptに書き出しているものとします。 これらを動的に「var mc:MovieClip = new MC?();」というふうにしたいのですが、うまくいきません。 一応下のように自分なりに考えてみたのですがやっぱりダメでした。 var i:int = 3; var str:String = "MC"+i; var mc:MovieClip = new str(); stage.addChild(mc);

    • ベストアンサー
    • Flash