2011-08-10 12 views
2

ムービークリップ上に特定のレイヤーでスプライトを描くことは可能ですか?レイヤー間でスプライトを描く

私はフラッシュデザイナーで作成したMCを持っていて、その上に3つのレイヤー、背景、レイアウトのもの、そしてテキストがあります。私はコード内にスプライトオブジェクトを作成し、その上に長方形を描き、addChild(MC内から呼び出された)をステージに追加しました。

問題はスプライトが常に私がデザイナーに加えたレイアウトのもの。

特定のレイヤーでMCにスプライトを追加する方法はありますか?この場合、背景レイヤー。

スプライトのzを変更しても効果はありませんでした。

答えて

2

"z"を変更するといい試しでしたが、何もしません。

実際、すべてのムービークリップは特定の順序でスタックされています。描かれているときは、新しいものでグラフィックをカバーする画家のように、その順序で行われます。 "z"値を変更すると、そのムービークリップの認識された深度が変更されますが、ムービークリップの描画順序は変更されません。あなたのスプライトがすべてのムービークリップの上にあるので、 "z"を変更してもスプライトは常に最後に描画されます。

「レイヤー」は、ActionScriptの操作時には実際には存在しません。これは、Flash Professionalのみで使用可能な概念です。結局、Flash ProfessionalはaddChild()リクエストでそのレイヤを変換します。

したがって、新しいムービークリップをaddChildAt()メソッドで配置することができます。インデックス値が0の場合、新しいムービークリップは上部以外のすべてのムービークリップの下に描画されます。

「getChildIndex(reference)」でインデックスを取得できるように、リファレンスのムービークリップのインデックスを見つける必要があります(Flash Professionalでインスタンス名を「reference」にするなど)。次に、新しいムービークリップをaddChildAt()でこのインデックスの上または下に設定できます。参照のムービークリップと同じインデックスを設定すると、そのインデックスの下になります。

別の方法として、Flash Professionalのレイヤーで設定した一種のダミームービークリップ(ダミー)を作成し、このダミームービークリップ内に新しいムービークリップを「dummy.addChild( )」。

複数のグラフィックスを1つの "レイヤー"でActionScriptを使用して再グループ化して、addChildAt()で表示リスト内のグループを簡単に上下に移動したい場合は、それらをSpriteオブジェクトに追加してからスプライトを移動できます。

+0

私の場合、 'Game' MCは3つのレイヤーを持ち、最初のレイヤーにはpngビットマップオブジェクトがあり、2つ目のレイヤーにはレイアウト用の複数のpngビットマップオブジェクトがあり、3つ目のレイヤーにはいくつかのテキストフィールドオブジェクトがあります。レイヤー上のものはどれもMCなので、addChildAt(スプライト、0)を使ってスプライトをバックグラウンドレイヤーに置くことはできますか? (レイアウトレイヤのものの下に) – LoveMeSomeCode

+0

OK、そうです。純粋な画像を扱うときは、Flash Proが内部的に管理するため、インスタンス名を与えることができないため、子インデックスを簡単に取得できません。とにかく、addChildAt(スプライト、0)を配置することができますが、バックグラウンドの背後になります。 addChildAt(スプライト、1)を使うとスプライトをバックグラウンドの前に置く方が良いかもしれません。ただし、Flash ProでRaw画像がマージされることがあることを知っておく必要があります。回避策は、MovieClipの画像を変換することです。他のMovieClipと同様に、実際の子インデックスを持ちます。 –

+0

ええ、私は後ろに描きたいレイアウトの部分をMCに変換しました。インデックスは1になり、背景とその他のレイアウトのbmpsはインデックス0になります。インデックス1にスプライトを描画すると、動作するように見え、レイアウトmcはマスクとして機能します。ありがとう! – LoveMeSomeCode

1

ステージ上の必要なオブジェクトをムービークリップに変換します。これらのムービークリップは異なるレイヤーに存在する可能性があります。必要な効果を得るには、関数setChildIndex()、swapChildrenAt()および getChildIndex()を使用します。あなたが私にコードを見せればもっとコメントすることができます。機能についての詳細はまたhttp://www.flashandmath.com/intermediate/depths/index.html

関連する問題