duplicateMovieClipでコピーしたムービークリップの階層構造を保ったコピー方法

このQ&Aのポイント
  • JavaScriptには慣れていますが、ActionScriptはまだ慣れていません。MC_1の子として、MC_2をコピーしたい場合、_root.MC_2.duplicateMovieClip(...)とすると、_rootの子としてコピーされます。
  • こうしたい場合、MC_1の下にMC_2のコピーを配置したいのですが、_root.MC_2.duplicateMovieClip(...)だと階層が崩れてしまいます。
  • MC_1の子としてMC_2のコピーを配置する方法について、詳しい方からのアドバイスをお待ちしています。
回答を見る
  • ベストアンサー

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
  • 回答数1
  • ありがとう数1

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

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

duplicateMovieClip で階層を越えてムービークリップをコピーすることはできません。 というか,ActionScript 1.0 と 2.0 では階層を越えてムービークリップをコピーすることはできません。 シンボルに識別子を付けて attachMovie するなどの方法をとる必要があります。 リンケージとは? http://1art.jp/flash2/chapter/33/33.htm

kura07
質問者

お礼

回答ありがとうございます。 この方法ではできないことだけでなく、他の方法まで教えてくださってありがとうございます。 解決しました。

関連するQ&A

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

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

    • ベストアンサー
    • Flash
  • for & duplicateMovieClip & function

    for & duplicateMovieClip & function // == info用テキスト作成 ==================== /**/ var H_TextFieldInfo = _root.createTextField("I_textField",1001 ,10 ,10 ,690 ,20); _root.H_TextFieldInfo.text = ""; // 文字列を表示 テキスト表示テスト // == データ読み込み ============================== for(Hi=2; Hi<=10; Hi++){ H_name01 = "I_MC"+ Hi; H_gFX = I_MC01._width * Hi; H_gFY = 10; // ************ _root.I_MC01.duplicateMovieClip (H_name01, (201+Hi), {_x:H_gFX ,_y:H_gFY }); H_num = Hi; _root[H_name01].onRelease = function(){ _root.H_TextFieldInfo.text = H_num; } // ************ } ステージ上に I_MC01 というインスタンス名でムービークリップを配置して、上記のようなアクションスクリプトを書きました。for分の_root.I_MC01.duplicateMovieClip でI_MC01を複製し、その複製したムービークリップをクリックすると、テキストに番号が入力されるようにしたつもりなのですが、出来ませんでした。 いくつか思いつくことをやってみたのですが、出来ませんでした。 このようなときムービークリップをクリックすると、個別の番号をテキスト欄に表示させるにはどうしたらよいのでしょうか? ご教授よろしくお願いします。

    • ベストアンサー
    • Flash
  • MCの複製方法

    MCを三つ用意し各MCに、MC000、MC001、MC002と名前をつけ、縦に三つ並べ、下記のようにしました。 ● ● ● これをASを書いて、 ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● for (i=1; i<=6; i++) { _root.MC000.duplicateMovieClip(["MC000"+i], i, {_x:_root.MC000._x+(i*50)}); _root.MC001.duplicateMovieClip(["MC001"+i], 10+i, {_x:_root.MC001._x+(i*50)}); _root.MC002.duplicateMovieClip(["MC002"+i], 20+i, {_x:_root.MC002._x+(i*50)}); } としたのですが、 一つのMCから ● をASを書いて、 ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● とすることはできますでしょうか? 複雑になりすぎない程度に方法がありましたら、ご教授いただけたらと思います。 よろしくお願いします。

    • ベストアンサー
    • Flash
  • ムービークリップ名の取得方法

    ムービークリップ名を取得したいです。 thisで取得すると、例えば『_level0.foo.var』が取れますが、最後の『var』だけを取得したいです。 this.substring(11)などとしても取れませんでした。 そこで、実は、duplicateMovieClip(mc,sindo);されたムービークリップで取得できればよいので、親側でduplicateMovieClip(mc,sindo);した直後にeval(mc).id=mc;として、子側でthis.idとして取得する方法としました。 これで今のところ上手く取得できていますが、親側で、eval(mc).id=mc;する前に子側でthis.idを取得するような微妙なタイミングがあるとしたら、不確実になってしまうような気がします。 #オーサリングツールはParaFla!、Actionscrptは1.0相当を使用です。

    • ベストアンサー
    • 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
  • ムービークリッププロパティの変更

    こんにちは。 ムービークリップA_mcをロールオーバーした時にムービークリップB_mcを表示ロールアウトした時にムービークリップB_mcを非表示にしたいのです。 まずはムービークリップB_mcの_alphaを100にするスクリプトを記述しようとしています。 B_mcはアニメーションですでに_alpha=0でステージにおかれています。 A_mcに on(rollOver){ _root.B_mc._alpha=100; } on(rollOut){ _root.B_mc._alpha=0; } と記述したのですが、表示されませんでした。 試しにと on(rollOver){ _root.B_mc._visible=true; } on(rollOut){ _root.B_mc._visible=false; } としてもだめでした・・・ すみません。原因がよくわからず対処方法もわかりません・・・何方かご教授頂けないでしょうか? よろしくお願いします。

    • ベストアンサー
    • Flash
  • ムービークリップをスクロール操作させる方法は?

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

    • ベストアンサー
    • Flash
  • 3つのムービークリップ再生・巻き戻しの順番制御

    初めまして。 初心者につき、基本的な事だとは思うのですが、調べても分からなかったため、こちらで質問させて頂きたいと思います。 3つのムービークリップ(a_mc,b_mc,c_mc)【フレーム数30】と、 各々を再生させるためのボタン(A,B,C)を使って、 b_mcを再生中にAのボタンを押すと、b_mcを巻き戻した後で、 a_mcを再生するといった感じで3すくみのような状態にしたいのですが、b_mcの巻き戻しとa_mcの再生が同時に行われてしまいます。 現在のActionScriptは以下のようなものなのですが、どなたかご教授願えませんでしょうか? よろしくお願いいたします。 ボタンAのスクリプト on (release) { //Cの巻き戻し _root.c_mc.onEnterFrame = function() { if (this._currentframe>=2) { this.prevFrame();} else {delete this.onEnterFrame} } //Bの巻き戻し _root.b_mc.onEnterFrame = function() { if (this._currentframe>=2) { this.prevFrame();} else {delete this.onEnterFrame} } //BでもCでもないときの判別式? //Aの再生 _root.a_mc.onEnterFrame = function() { if (this._currentframe<=29){ this.gotoAndPlay(this._currentframe); delete this.onEnterFrame} } }

    • ベストアンサー
    • Flash
  • 外部ムービー読込み後 AS が動きません

    どなたかお教え下さい。 _root上のMCに外部swfを読み込んだとします。 その読み込まれたswf上のムービーの途中でASでストップstop();、を 入れて途中で一度とめるようにしてありますが、止まりません。 プログラムの知識がないのでずっと悩んでいます。 よろしくお願いいたします。 ■現状■ set_mcという名のMC上に、同じ階層にある01.swfを読み込む。 現在テスト用に、読み込む側は読込みだけ、読み込まれる01.swfは 10フレーム中の5フレーム目にキーフレームをつくり アクションで this.stop(); とだけ書いてあります 読込み側 _root.set_mc.loadmovie("01.swf"); _root.set_mc._lockroot = true; 読み込まれた01.swfの5フレーム目 this.stop(); ------------------------ 01.swf のみならばちゃんと止まるのですが読み込まれると とまりません。非常に初歩的なことかもしれませんが、 どうかよろしくお願いいたします。

    • ベストアンサー
    • Flash
  • 自分自身をunloadmovie

    どなたか教えて下さい。 _root上のMCに外部swfを読み込んだとします。 その読み込まれたswf上にあるボタンを使って、それ自身のswfを他のswfに置き換えるにはどのようにActionScriptを記述すればよいのでようか? ■例■ area_mcという名のMC上に、同じ階層にある01.swfを読み込む。 _root.area_mc.loadmovie("01.swf"); _root.area_mc._lockroot = true; 読み込まれた01.swf上にあるボタンBtnA_btnをクリックして、01.swfを別の02.swfに置き換えたい ↑↑↑↑↑↑↑ これってできるのでしょうか?だとしたら、01.swf内のBtnA_btnにはなんと記述すればよいのでしょう? どなたかお力をお貸し下さい。 よろしくお願い致します。

    • ベストアンサー
    • Flash