2012-03-17 8 views
0

右のシナリオは次のとおりです:私は4つのオブジェクトA、B、C、Dを持っています。私が望むのは、CはBを隠してしまいます。同様に、 AとBはどんな順序でも重なり合うことができますが、それは重要ではありません。AS3 - オブジェクトをあいまいな特定のオブジェクトにする

つまり、オブジェクト(C)はオブジェクト(A)をカバーすることができますが、オブジェクト(A)は別のオブジェクト(B)をカバーすることができます。それが接触したとしても、AではなくBを覆うことができるDと同じです。問題は、これを可能にする層構成を考えることができないことです.Dは常にAとBの両方よりも高くなり、したがって両方があいまいになります。

私は他の誰かが賢明な構成を考え出すことを期待していませんが、これを行うための何らかの種類のActionScriptがあるかどうかは疑問です。特に、私はAとBを動的なTextFieldに、CとDを任意の形状のMovieClips(つまり四角形ではない)にしたいと思います。

希望することができます。

+0

おそらくワットを共有する必要があります帽子あなたが達成しようとしている、そしておそらく人々はより良​​い解決策を考え出す... – loxxy

答えて

2

実際にアイテムをステージに追加するのではなく、copyPixels()またはdraw()を使用してピクセルを描画する、blittingを使用できます。これを行うと、オブジェクトのどの部分が描画されるかどうかを判断できます。テクニックの概要については、このブログ記事を参照してくださいhttp://www.developria.com/2010/02/dealing-with-bitmapdata.html

+0

BitmapData.draw()は私が望むように見えます。これを行うと、テキストを表示したくないビットと重なるピクセルを削除する(つまり、アルファを0に設定する)ループを使用できます。 – puggsoy

+0

個々のピクセルをループして再描画しようとすると、非常に良いパフォーマンスを得ることはできません。代わりに、全体を透明に描画し、必要なオブジェクトの部分を描画します。 –

+0

ああ、ありがとう。私は何度も再描画するので、お互いに素早くできるので、私はこれでできる最高のパフォーマンスを望んでいるでしょう。 – puggsoy

2

ステージに追加する順序によって、何が何の前に表示されるかが決まります。基本的に、最後に追加されたものはすべて上にあり、最初に追加されたものはすべて下にあります。

CでAをカバーするが、BとDをカバーしてBをカバーするがAではカバーしないようにするには、問題がある。 4人がお互いに重なっていたらどうなるか考えてみてください。 CはAをカバーし、Bは透けて見せ、DはBを覆い、Aを見せようとするだろう。ありえない。

+0

それはまさに私が言っていることです。私はレイヤリングを理解しているので、ActionScriptソリューションがあるかどうか尋ねています。私の問題を再説明して、それが不可能だと言っても大した助けにはならない。 – puggsoy

+0

+1。それが(何らかの種類の分割オブジェクトCとDを何も含まずに)述べたように不可能です。要件を再考する必要があります。少なくとも、可能であることがわかっていれば、コードでトランスフムするのに役立ちます。 –

0

あなたが望むものを理解しているとすれば、親/包含MovieClipのsetChildIndex()機能を使用してください。あなたのABCDのすべてのオブジェクトがムービークリップの名前parent_mcに含まれている場合、あなたのような何かを行うことができます。

parent_mc.setChildIndex(a_mc, parent_mc.numChildren-1); // Throw "a_mc" on top 
parent_mc.setChildIndex(b_mc, parent_mc.numChildren-1); // Throw "b_mc" on top 

これはb_mca_mc、などの上にあることになりwouoldを...

また投げるchould表示リストの一番下に何か:ここ

parent_mc.setChildIndex(b_mc, 0); 

がドキュメント:DisplayObjectContainer.setChildIndex()

関連する問題