• ベストアンサー

AS2でレイヤーが優先されてswapDepthsがうまく作動してくれな

AS2でレイヤーが優先されてswapDepthsがうまく作動してくれない。 AS2で_mcの中にポップアップするballoon_mcを入れており そのような構造の_mcを_rootに複数並べています。 ロールオーバー時に_root.getNextHighestDepth()にswapDepthsさせようとしてます。 しかしながらballoon_mcは他の_mcの後ろに行ってしまいます。 _mc自体の重ね合わせを固定すると消えてしまいます。 深度はコンフリクトはしてないはずなのですが 何故か消えてしまいます。 使っているソフトはCS5です。 分かる方いらっしゃいますか?

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

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

そもそも「深度」というものは 「タイムラインごと」( =階層ごと=MC(ムービークリップ)ごと )にあるもので, なおかつ swapDepths で動かせる深度は その動かすMCが存在する「タイムライン内」(=階層内=MC内)だけです。 また _root.getNextHighestDepth() ↑で得られる値は「数値」です。 「どこそこの深度○」という「住所番地のようなもの」ではなく 「単なる数値(0,1,2,3…)」 が得られるだけです。 > _mcの中にポップアップするballoon_mcを入れており > そのような構造の_mcを_rootに複数並べています。 この部分を階層図に表すと次のようになりますよね。  _root(メインのタイムライン(階層))    └_mc      └balloon_mc balloon_mc をいくら高い数値に swapDepths しようとも _mc 内での表示順序が上の方になるだけですから _mc より上にあるものを飛びこすことはできません。  ※swapDepths で balloon_mc を    AAA より上には移動できない↓   _root(メインのタイムライン(階層))     ├AAA(上レイヤー)     └_mc(下レイヤー)       └balloon_mc balloon_mc を _root の最高深度に配置したいのでしたら balloon_mc を 最初から _root に配置しておくか, または ライブラリ から MCシンボル を attachMovie するなど 別の方法をとるべきです。 ~ ライブラリ から MC を attachMovie する方法例~ ライブラリ にある balloon_mc のシンボルMCを選択し プロパティ の リンケージ より  □ ActionScriptに書き出し  □ 1フレーム目に書き出し にチェックを入れ  識別子:[     ] の欄でたとえば「Balloon」という識別子を与えます。 その Balloon を _root の最高深度に配置するスクリプトは 次のようになります。 ------------------------ //_root の最高深度に //ライブラリの識別子「Balloon」のMCを //「balloon_mc」というインスタンス名で呼びだす _root.attachMovie("Balloon","balloon_mc",_root.getNextHighestDepth()); //適当に座標を指定 _root.balloon_mc._x = Stage.width / 2; _root.balloon_mc._y = Stage.height / 2; ------------------------ なお, どうしても  「_mc の中の balloon_mc が   _root の最高深度に出る」 というような演出を見せたい場合は そのように見えるように  「_mc の中の balloon_mc の  _visible を false にすると同時に  Balloon をattachMovie する」  (↑本物は消して替え玉にすり替える) などというような『手品』を考える必要があると思います。 画像:識別子を付ける場面↓

fun_wizard
質問者

お礼

なーーーるほど このような仕様だったのですね! むしろこっちの方が便利だし利にかなってますよね。 あと最後の入れ替え技も挑戦してみます。 ありがとうございます。

関連するQ&A