ムービークリップの削除方法を教えてください

このQ&Aのポイント
  • FLASH 5を使用して、duplicateMovieClip関数を使ってムービークリップを複製しています。しかし、複製したムービークリップを削除する方法が分かりません。hitTest関数とremoveMovieClip関数を使ってゴミ箱に乗せた場合に削除できると思いましたが、うまくいきません。解決策を教えてください。
  • 新しく学習したActionscriptで、ムービークリップを複製する方法を試しています。複製したムービークリップをゴミ箱に乗せた場合に、自動的に削除されるようにしたいのですが、うまくいきません。ご存知の方、解決策を教えてください。
  • FLASH 5を使用していますが、ムービークリップを複製する方法が分かりません。複製したムービークリップをゴミ箱に乗せると削除できるようにしたいと考えていますが、どのようにすれば良いでしょうか?Actionscriptの初心者なので、分かりやすく教えていただけると助かります。
回答を見る
  • ベストアンサー

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

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

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

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

  • ベストアンサー
noname#35109
noname#35109
回答No.1

書かれているスクリプトのままで,ちゃんと消えますよ。 作成&検証は Flash 5 です。 よくわかりませんが, 書かれているスクリプトがアヤシイのではなくて, duplicateMovieClip の方が悪いのではないでしょうか。 一番アヤシイのは深度です。 removeMovieClip で消せるのは,深度0 以上のムービークリップです。 深度-1以下の深度を割りあてると,removeMovieClip では消せません。 ===私が作った物====== Flash を起動して, ステージの真ん中(中央)辺りに, 50px×50pxくらいの塗りの四角を描いて, ムービークリップに変換し, インスタンス名に「gomi」と付ける。 次にステージの真ん中の下の方に, 直径40pxくらいの塗りの丸を書いてボタンシンボルに変換する。 そのボタンに,次のように書く。 ----------------------- on (press) { this.startDrag(); } on (release, releaseOutside) { this.stopDrag(); } ----------------------- そのボタンをさらにムービークリップシンボルに変換し, インスタンス名に「myMC」と付ける。 その「myMC」に,次のように書く。 ----------------------- onClipEvent (enterFrame) { if (this.hitTest(_root.gomi)) { this.removeMovieClip(); } } ----------------------- 新規レイヤーを挿入して, そのレイヤーのフレームに次のように書く。 ----------------------- // i= 0~9 までループ for (i=0; i<10; i++) { // myMC を newMC? という名で 深度 i に複製 _root.myMC.duplicateMovieClip("newMC"+i, i); // 複製した物の整列 _root["newMC"+i]._x = 20+45*i; _root["newMC"+i]._y = 100; } ----------------------- →「制御」→「ムービープレビュー」(もしくはパブリッシュ) ================ 以上のように作成して, ステージの上の方に複製された横一列のムービークリップをドラッグして, ゴミ箱の「gomi」にドラッグすると消えます。 ただし, ステージ下に最初に作ったムービークリップはドラッグしても消えません。 理由は,深度が-1以下だからです。 ///////////////////////////////////////////// 上は, ご質問のスクリプトをなるべくそのまま残した, 単なる実験サンプル例です。 本当は, ムービークリップに onClipEvent (enterFrame) を書くと, CPUの無駄づかいになるので, ムービークリップには何も書かず, ムービークリップ内のボタンの方に, ----------------------- on (press) { this.startDrag(); } on (release, releaseOutside) { this.stopDrag(); if (this.hitTest(_root.gomi)) { this.removeMovieClip(); } } ----------------------- と書いた方が良いです。 また, 実験のために,最初に描いた「myMC」には何も工夫をしていませんが, _rootのフレームのスクリプトに次のように1行を付けたすと, 最初に描いた「myMC」も消すことができます。 ----------------------- // myMC を深度 1000 に深度変更 _root.myMC.swapDepths(1000); ----------------------- とにかく上のようなものを作成すると,ちゃんと消えませんか? まず,深度をうたがってみてください。  duplicateMovieClip("MC名", 深度); 「深度は 0 以上になるように」です。

sea_line
質問者

お礼

遅くなりましてスミマセン。 書き込みをした後、自己解決をしたのですが締め切れませんでした。 私も深度を疑ったのですが、MCに付けた連番と同じものを深度にしていたので深度は0以上だったので、他に理由が分からずに質問をさせて頂きました。 その後、何度か試してみたら突然消えるようになったので逆に何故それまでは消えなかったのかが未だに良く分かりません。 とても丁寧にお返事を下さいまして本当にありがとうございます。 ムービークリップに onClipEvent (enterFrame) を書くと CPU の無駄づかいになるんですね。 知りませんでした。 試してみます。 また何かありましたら宜しくお願い致します。

関連するQ&A

  • ムービークリップの領域をシェイプの形状にしたい

    よろしくお願い致します。 ムービークリップにマウスオーバーするとムービークリップが再生し、マウスアウトすると逆再生するというものを作っています。 ここで、ムービークリップのマウスオーバーする領域を矩形ではなく、見たままの形(シェイプの形状)だけに指定するにはどうすれば良いでしょうか? 現在の状況は、マウスオーバーさせるムービークリップに onClipEvent (load) { this.stop(); } onClipEvent (enterFrame) { if (this.hitTest(_root._xmouse, _root._ymouse, false)) { this.nextFrame(); } else { this.prevFrame(); } } のアクションを書いています。 自分なりに調べたところ、「shapeFlag?というものを使うらしい?」というのは分かったのですが、どう使えば良いのかさっぱり分かりません・・ どなたかご指導頂けないでしょうか。 どうぞよろしくお願い致します。

    • ベストアンサー
    • Flash
  • ムービークリップ

    ムービークリップをクリックすることによって、 他のムービークリップの位置を変更できますか? もしくは他のムービークリップの複製はできますか? 今はクリックしたムービークリップ(自分自身)の 複製は出来ています。 on (release) { this.duplicateMovieClip("Photo_big", 0); _root.Photo_big._xscale = 80; _root.Photo_big._yscale = 80; _root.Photo_big._x = 350; _root.Photo_big._y = 200; } ちなみに移動したいムービークリップのインスタンス名は text1です。

    • ベストアンサー
    • Flash
  • ムービークリップが重なると音が一定の間隔で鳴らす

    初めて投稿させていただきます。 mcを2つ用意します。 ・mc1はランダムに移動する ・mc2は常に固定の位置 やりたい事は、 ・mc1がmc2の上に重なった時に、音が一定の間隔で鳴る仕組みをつくりたい ・mc1がmc2と重なってる状態から離れた時は音を止めたい。また重なったら音を鳴らす この二つです。 現状ですと、連続して鳴り続けてしまったり、全く鳴らなかったりと 上手い方法が思いつきません。 どなたかアドバイスをお願いします。 音は単純な「ポン」というようなマウスオーバー時などによく使う音です。 考えてみたAS onClipEvent (enterFrame) { if(_root.mc2_mc.hitTest(_root.mc1_mc)){ _root.Oto.start(); } else { _root.Oto.stop(); } } 宜しくお願いいたします。

  • flash as2.0 hitTest()について

    FLASHMXで作業をしています。 mcが壁に当たると反対方向にmcを移動させたいのですが 以下では、うまくいきません。理由がわかりませんし打開策も わかりません。解決策を教えてください。よろしくお願いいたします。 onClipEvent(load){ this._x=100; this._y=380; } onClipEvent(enterFrame){ this._y -=3; if(_root.tama_mc.hitTest(_root.kabe_mc)==true){ this._y +=5; } }

  • duplicateMovieClipでコピーしたムービークリップ

    JavaScriptには慣れていますが、ActionScriptはまだ慣れていません。 +_root │ ├MC_1 │└MC_3 │ └MC_2 こういう階層のとき、MC_1の子として、MC_2をコピーしたいのですが、 _root.MC_2.duplicateMovieClip(...);とすると、_rootの子としてコピーされます。 <本当はこうしたいけど…> +_root │ ├MC_1 │├MC_3 │└【MC_2のコピー】 │ └MC_2 <こうなってしまう> +_root │ ├MC_1 │└MC_3 │ ├MC_2 └【MC_2のコピー】 方法をご存知の方は、ご教授願います。

    • ベストアンサー
    • Flash
  • ムービークリップを消したいのですが…

    myPointAからmyPointOまで15個のMCがあり、mycoodinateというMC上でクリックすると、それらを順番にduplicateMovieClipでそれぞれ、newPointAからnewPointAからnewPointOまで15個が、それら自身で座標を取って複製するというものです。 今度、そのnewPointAからnewPointAからnewPointOをBackspaseキーかDeleteキーを押す毎に大きい方から順にremoveMovieClipで消えていきたいのですが、消えてくれないです。 (最初にOがくるのはOを原点とし、ABCと点を取っていきたいがための仕様です。) 環境はWIN2000 MXです。 どなたか御教授お願い致します。 pointCount = 0; myCoodinate.onPress = function(){ if( pointCount <= 15 ){ pointCount++; point(); } }; function point(){ switch( pointCount ){ case 1: myPointO.duplicateMovieClip("newPointO", pointCount); break; case 2: myPointA.duplicateMovieClip("newPointA", pointCount); break;               ・               ・ case 15: myPointN.duplicateMovieClip("newPointN", pointCount); break; default: break; } } myListener = new Object(); myListener.onKeyDown = function(){ if( Key.getCode() == 8 ){ pointCount--; eracepoint(); }else if( Key.getCode() == 46 ){ pointCount--; eracepoint(); } } Key.addListener(myListener); function eracepoint(){ switch( pointCount ){ case 1: newPointO.removeMovieClip(); break; case 2: newPointA.removeMovieClip(); break;             ・             ・  case 15: newPointN.removeMovieClip(); break; default: break; } }

    • ベストアンサー
    • Flash
  • AS1.0で基準点をそろえたい

    AS1.0でduplicateMovieClipを使った複製をした後MC同士の基準点をそろえたいのですがうまくできません 今MC1とMC2というムービークリップをduplicateMovieClipを使って複製しています まず針(MC1)というフレームがありその中に //関数が呼ばれたら描画する setInterval(hari,1000); function hari(){ i ++; duplicateMovieClip("Hari","hari" + i , i); } が書いてありこれは針が1秒ごとに描画されていくという方法です そして円(MC2)というフレームの中にも //関数が呼ばれたら描画する setInterval(EN,1000); function EN(){ i ++; duplicateMovieClip("En","en" + i , i); } がかいてありこれも複製できるようになっています 針(MC1)の中には onClipEvent (load) {       //針の位置をランダムで決めた後描画 this._x = Math.random() * 300 + 50; this._y = Math.random() * 200 + 50; } onClipEvent (enterFrame) {     //針回転     _rotation += 6; } がありこれをベースにして円(MC2)の基準点を針(MC1)にあわせて描画したいのですがやり方がわかりません 自分が考えた方法ですが onClipEvent (load) {       円1の位置x = 針1の位置x       円1の位置y = 針1の位置y } をやったんですがうまくいきません 誰か教えてください

  • ボタンをロールオーバーした時にMCを複製したい

    はじめまして、よろしくお願いします。 表題の通りですが、 ボタンをロールオーバーした時にMCを複製したいのですが、やり方がわかりません。 body(←ボタン名)を押した時に snow(←複製されるMC名)を噴射するような形にしたいです。 フレーム1に書かれたスクリプト------------------- for (count = 1;count<30;count ++) { snow.duplicateMovieClip("snow" + count , count ); } ----------------------------------------------- 複製されるMC(snow)---------------------------------- onClipEvent(load){ xposition = _root.body._x+75; yposition = _root.body._y+75; scale = Math.random()*30+10; speedx = 12-(scale+Math.random()*30+1)/5; speedy = 12-scale/5; this._x = xposition; this._y = yposition; this._xscale = scale; this._yscale = scale; } onClipEvent (enterFrame){ if(this._y>400){ this._y=yposition; this._x=_root.body._x+75; this._alpha = 100; } this._x+=speedx; this._y+=speedy; this._alpha = this._alpha-5; } ----------------------------------------------- 早急に解決しなくてはならなく、困っています。 よろしくお願いします。

    • ベストアンサー
    • Flash
  • ムービークリップの位置と角度の制御について

    スクリプト初心者です。 ●矢印の形をした、ムービークリップ(mc1)がステージ端まで移動すると跳ね返り、跳ね返る方向に向きを変えるスクリプトで悩んでいます・・。 ●ステージサイズ:400×300  シーン1、1フレーム目にmc1配置。 mc1をシーン1に配置の際、角度45度に。 mc1に下記スクリプトを書きました。 onClipEvent(load){     vx=5;     vy=5; } onClipEvent(enterFrame){ this._x += vx; this._y += vy; if (400 < this._x) { vx = -5; this._rotation=-135; } if (300 < this._y) { vy = -5; this._rotation=135; } if (this._x < 0) { vx = 5; this._rotation=-45; } if (this._y < 0) { vy = 5; this._rotation=45; } } ●ステージ端まで行くと矢印(mc1)が跳ね返る事は、出来たのですが、方向(回転角度)がうまく出来ませんでした・・。 自分でも、これでは、回転角度がうまく行かないと分かってはいるのですが・・。 どなたかお分かりの方おられましたら助けてください! よろしくお願いいたします。

    • ベストアンサー
    • Flash
  • 揺れるスクリプトについて

    こちらで教えていただいたサイトで揺れるスクリプト を勉強していたのですが、 ■をMCにして、  onClipEvent (load) {    this._xscale = this._yscale = 0;    function sMove(mScale,acc,conv) {      theScale = theScale*acc+(mScale-this._yscale)*conv;      this._xscale = this._yscale += theScale;    }  }  onClipEvent (enterFrame) {    if (this.hitTest(_root._xmouse,_root._ymouse,1)) {      sMove(130,0.8,0.2);    } else {      sMove(100,0.8,0.2);    }  } と書いたのですがプレビューすると真っ白なままなにも 表示されません。 なぜなのでしょうか?

    • ベストアンサー
    • Flash

専門家に質問してみよう