- ベストアンサー
AS2でレイヤーが優先されてswapDepthsがうまく作動してくれな
AS2でレイヤーが優先されてswapDepthsがうまく作動してくれない。 AS2で_mcの中にポップアップするballoon_mcを入れており そのような構造の_mcを_rootに複数並べています。 ロールオーバー時に_root.getNextHighestDepth()にswapDepthsさせようとしてます。 しかしながらballoon_mcは他の_mcの後ろに行ってしまいます。 _mc自体の重ね合わせを固定すると消えてしまいます。 深度はコンフリクトはしてないはずなのですが 何故か消えてしまいます。 使っているソフトはCS5です。 分かる方いらっしゃいますか?
- みんなの回答 (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 する」 (↑本物は消して替え玉にすり替える) などというような『手品』を考える必要があると思います。 画像:識別子を付ける場面↓
お礼
なーーーるほど このような仕様だったのですね! むしろこっちの方が便利だし利にかなってますよね。 あと最後の入れ替え技も挑戦してみます。 ありがとうございます。