0

ムービークリップの深さを制御する方法を作成しようとしています。これにより、ムービークリップの深さを任意の数に設定でき、低い値よりも高い値で表示されます。

プロパティの深さが追加されたMovieClipを拡張するMovieClipDepthクラスと、すべてのオブジェクトが内部に配置されるDisplayObjectContainerを拡張するContainerクラスを作成することを考えていました。

Containerクラスは、addChildメソッドをオーバーライドして、子が追加されたときに子の表示順序を更新します。

私が助けを必要としているのは、子供たちの深さの値に応じて子供たちをどのように並べ替えるのですか?

4

2 に答える 2

2

あなたの質問の下のコメントで読むことができるように、これにはいくつかの方法があります。

しかし実際には、「ムービークリップの深さを任意の数に設定する」という質問は、AS3では実際には実行できません。私が正しければ、AS2でこれを行うことができるので...

... どうだった ...

_root.createEmptyMovieClip("mc", -1000);

また

_root.createEmptyMovieClip("mc1", 1);
_root.createEmptyMovieClip("mc2", 10);

動作しましたが、AS3では動作しません。AS3では、深さは0から始まり、DisplayObjectをゼロから連続していないレベルに強制的に配置することはできません。

したがって、コンテナ内の3つのムービークリップの深さは、0、1、2の値でのみ可能です。

たとえば、深さを負の数にすることはできません。

ここで、カスタム深度マネージャーを作成する場合はそれを行うことができますが、これらの事実を考慮する必要があります。

つまり、仮想深度を作成できます。

addChildAtしたがって、たとえばメソッドをオーバーライドできます。現時点では、間違った数を指定すると、負の数、または子の数よりも多い場合、フラッシュはエラーを返します。

RangeError: Error #2006: The supplied index is out of bounds.

だからmc.addChildAt(newchild, -1000)、アラーを与えます。

ただし、メソッドをオーバーライドすると、トリックを作成できるため、深さを配列に格納できます。AS3のニーズに合わせて、任意の数値を格納し、その順序を変換できます。

追加された子と深さをペアリングするのと同じように、深さで配列を並べ替えてから、順序に従って子を管理します。

さらに質問がある場合は、遠慮なく質問してください。これにより、解決策に近づくことができます。

于 2011-05-11T08:42:48.670 に答える
0

このチュートリアルをご覧になることをお勧めします:

ウェブサイトhttp://www.flashandmath.com/の深さ管理方法のツアー。私はあなたが初心者ではないと思います。

リンクは次のとおりです: http ://www.flashandmath.com/intermediate/depths/index.html

于 2011-05-11T09:02:43.363 に答える