• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ムービークリップを削除したい)

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

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

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

  • ベストアンサー
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