- ベストアンサー
FLASHでの深度の設定に関する質問
- FLASH MX 2004を使用して、リンクしたい物の深度を設定する際に問題が発生しています。
- リンクしたい物を深度5に設定すると、その物が見えなくなってしまいます。
- どなたかお詳しい方にアドバイスをいただきたいです。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
まず、深度についてですが。 深度は -16384 から 1048575 の範囲の数値で、数値が大きいほど上に重なって表示されます。 描画しただけのシェイプ等も含めた全てのオブジェクトは、どのオブジェクトとも重複することのない深度が割り当てられます。 ステージに配置されたオブジェクトは、レイヤーの順序やレイヤー内での重なり順などから、-16383 から(最も下層の -16384 はムービー自身が占有します)順に深度が割り当てられます。 attachMovie や duplicateMovieClip のように動的にムービークリップを挿入するメソッドでは、新たに挿入するインスタンスの深度を指定することができます。 この時、既に他のオブジェクトが占有している深度を指定すると、古いオブジェクトは新しいオブジェクトに置き換えられて消えてしまいますので、他のオブジェクトが占有していない深度を指定する必要があります。 つまり、リンクのムービークリップ(仮に”link_clip”とします)を円のムービークリップよりも上に表示するには、link_clip の深度が円のムービークリップの深度よりも高い数値になっていればいいことになります。 ステージに予め配置してあるオブジェクトの場合は、先述の通り -16383 から順に深度が割り当てられます。 よって、link_clip を予めステージに配置している場合は、負の深度が割り当てられている可能性が高いです。 一方、ご質問文のスクリプトを拝見した限りでは、変数 depth の初期値が分からないので正確には分かりませんけれど、おそらく、円のムービークリップの深度は 0 ~ 19 (もしくは 1 ~ 20 )と思われますので、この状態では link_clip は必ず円のムービークリップの下になってしまいます。 一番手っ取り早い方法は、link_clip も attachMovie で動的に挿入し、深度の指定である第3引数を変数 depth の最大値以上に設定することです。 例えば、円のムービークリップが 20 まで占有しているのであれば、21 以上を指定すると link_clip の方が上に配置されます。 円のムービークリップを挿入したループの後に、depth + 1 という具合に変数 depth を利用して第3引数を指定すると、確実だと思います。 どうしても link_clip をステージに配置しておかなければならない事情でしたら、swapDepths を使って、他のムービークリップと深度を入れ替えるといった方法があります。 swapDepths では、深度または既存のムービークリップのインスタンス名かのどちらを指定できます。 深度を指定する場合は、どのオブジェクトも占有していない数値を指定すると、そのムービークリップの深度だけが変化することになります。 今回の場合は、link_clip の深度が円のムービークリップの深度以上であればいいので、例えば _root.link_clip.swapDepths( depth + 1 ); といった方法でも可能です。 このスクリプトも、円のムービークリップを挿入するループの後で実行してください。 余談ですが。 MouseMove イベントを利用して描画する場合は、最後に updateAfterEvent(); というスクリプトを入れておくと、フレームレートに関係なく、イベントが起こる度に表示が更新されるので、絵の動きがスムーズになります。 よろしければ effect 関数の最後に挿入してみてください。
お礼
お礼遅れて申し訳ありませんでした!!とてもわかりやすく、参考にさせていただきました!そして無事稼働しております!どうもありがとうございました