街中で見かけて「グッときた人」の思い出

_rootにMC1があり、_rootのフレームアクションからこのMC1内にMCを作るにはどうすればいいのでしょうか。

duplicateMovieClipやcreateEmptyMovieClipなどの使い方はわかっているつもりですが、新しく作ったMCを他のMC内に移動させるやり方がわからないのです。

よろしくお願いします。

A 回答 (1件)

> 新しく作ったMCを他のMC内に移動させるやり方


 ^^^^^^^^^^^^^^^^
この 「新しく作ったMC」 というものがどういう意味の新しく作ったMCなのかがわかりません。
ですから,「新しい」とか「古い」とかは抜きで,
階層を越えた MC の引っ越し方法についてのご質問だと解釈して回答します。


---例---

_root の直下に MC1 と MC2 を手動で作成したとして(=兄弟状態),
MC1 の中に MC2 を引っ越しさせます(=親子状態)。

  _root
   ├ MC1
   └ MC2

 ↓MC2を引っ越し↓

  _root
   └ MC1
      └ MC2


実は階層を越えたコピーや引っ越しは直接はできません。
したがって,MC2 をいったん削除して,
MC1 の中に MC2 を attachMovie する方法を使います。

下準備として,
「ウィンドウ」→「ライブラリ」より「ライブラリパネル」を表示させます。

そしてライブラリの中にある MC2 のシンボルを選択し,
右クリック→「リンケージ」で「リンケージプロパティ」パネルを表示させます。
その「リンケージプロパティ」パネルで,

 リンケージ(V): □ActionScript に書き出し(X)

にチェックを入れ,「識別子」を付けるのですが,
この例では,「symbolMC2」 という識別子を付けておいたとします。

ちなみに,
ActionScript に書き出し にチェックを入れると,
自動的に

  □最初のフレームに書き出し(F)

にもチェックが入りますが,
symbolMC2 は MC2 として一度はステージ上に登場するので,
今回のような場合に限ってはチェックをはずしておいてかまいません。
(はずさなくてもかまいません。)

そして,
_root のフレームに次のように書けば,
MC2 は MC1 内に引っ越しできます。


////////////////////////////////////////////////////////////
// MC2 を一旦 深度0 以上に移しておいて
_root.MC2.swapDepths(0);
// MC2 を削除
_root.MC2.removeMovieClip();
// MC1 内の 深度0 に symbolMC2 を MC2 として attachMovie
_root.MC1.attachMovie("symbolMC2", "MC2", 0, {_x:10, _y:10});
////////////////////////////////////////////////////////////


「リンケージとは?」
http://www.1art.jp/flash/le/lessona/lessona.htm

要はMC2 を,
上のURLのように attachMovie をするのですが,
その前に消しておけば引っ越しができる(見える)と言うだけのことです。



ご質問の「新しく作ったMC」 というものが,
手動で作った MC ではなく,ActionScript で作った MC なのかもしれませんが,
その場合だと,
MC1 の中に ActionScript で新しいMCを作れば良いだけのことで,
特に最初から問題は起こりませんよね。

.


※ 動作環境(少しややこしいですが)
 上記スクリプトは,
 一応 Flash MX 以上で使用可能です。
 {_x:10, _y:10} という座標の指定部分の書式を除けば,
 Flash 5 でも使用可能です。
 ただし,
 {_x:10, _y:10} という座標の指定があっても,
 パブリッシュする場合は Flash Player 5 以降で動作可能です。
    • good
    • 0
この回答へのお礼

返事がおくれて申し訳ありません。

丁寧に説明してくださってありがとうございます。おかげさまで問題は解決し、次に進むことができました。
それとsassakunさんいつもありがとうございます。どこかで見たような名前だと思って調べたらやっぱり昔お世話になっていました。

また行き詰まったらここへきます。

お礼日時:2007/03/24 01:49

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!