• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:removeMovieClip()で画面が固まる)

removeMovieClip()で画面が固まる

このQ&Aのポイント
  • 透明ムービークリップ上でマウスをクリックすると、ライブラリに登録されたムービークリップシンボルをattachMovie()で生成するflashを作っています。生成するのはできるのですが、「Clear」ボタンをつくり、ボタンを押すと、生成したインスタンスをすべて一度に削除するスクリプトを仕込んでいます。
  • しかし、Clearボタンを押すとFlashが固まります。たぶん、スクリプトの書き方に問題があると思うのですがわかりません。わかる方がいらっしゃったらお教え願います。
  • FlashのremoveMovieClip()関数に問題がある可能性があります。また、生成されたインスタンスを削除する際に、カウンター変数のリセットを忘れている可能性もあります。

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

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

スクリプトの書き方に問題があるというか, 何をしたいのか,よくわかりませんが… 確認ですが > //インスタンスを削除するスクリプト > on(press) { >  ~ 略 ~ を書いているのは,透明のムービークリップ外の別のボタンですよね。 でないと, this.onPress と on(press) が重なってしまいますもんね。 透明のムービークリップに aaa というインスタンス名を付けて, インスタンスを削除するボタンには ---------------------------- on (press) { for (i=1; i<=_root.aaa.count; i++) { tmp = "Chara"+i; _root.aaa[tmp].removeMovieClip(); } _root.aaa.count = 0; } ---------------------------- と書くと,固まることもなくちゃんと Chara1~Chara i は消えました。 透明のムービークリップに書いた count は透明のムービークリップ内の変数です。 一方,ボタンは, _root に置かれたものなら _root の変数 count を参照して, for (i=1; i<=count; i++) をループさせようとします。 count は未定義なので,固まってしまうのです。 書かれているスクリプトの for 以下を // で注釈行にして, trace(count); としてみました。↓ ---------------------------- on (press) { trace(count); // for (i=1; i<=count; i++) { // tmp = "Chara"+i; // _root[tmp].removeMovieClip(); // } // count = 0; } ---------------------------- そして,ムービープレビューして,そのボタンをクリックすると 「undefined」と表示されました。 for (i=1; i<=undefined; i++) なので暴走するのです。 また,Chara1~Chara i も,_root にはできず,透明のムービークリップ内にできます。 その点が要注意です。 解決策は以上です。 ================================ あと,よくわからない点ですが,なぜ, onClipEvent (enterFrame) の中に, this.onPress = function() が入っているのでしょうか。意味がわかりません。 そんなところに書いても,Press したときににしか function() は実行されません。 ------------------------------- onClipEvent (load) { count = 0; 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); }; } ------------------------------- もしくは, ------------------------------- onClipEvent(load) { count = 0; } on (press) { count++; mouseX = _root._xmouse; mouseY = _root._ymouse; charaName = "Chara"+count; obj_format = {_x:mouseX, _y:mouseY}; attachMovie("chara1", charaName, count, obj_format); } ------------------------------- で良いと思います。

gunkiti
質問者

お礼

ご回答ありがとうございます。説明が下手で申し訳ございません。count変数に対するパスが間違っていたんですね。あと、attachMovie()で生成したインスタンスがどこにできるのかがわからなかったんですが、_rootにできるのではなく、透明ムービークリップ内にできるんですね。知りたかったことがわかってすごくありがたいです。ここで回答してくださる方はみんな説明が上手だなぁ・・・

関連するQ&A