0

Flash As3で9個の立方体の立方体を作っています。ただし、インデックス全体がステージに追加される順序のため、適切に回転できません。最初に 6 つの正方形の立方体を作成し、次に 9 つの立方体の壁を作成し、最後に 3 つの壁の立方体を作成します。それはすべて問題ありませんが、左に回転させると、立方体の順序が逆になり、構成全体が台無しになります。回転に基づいてインデックスを動的に変更できることはわかっていますが、それはかなりの作業になります。どうすればもっと良い方法ができますか?

これが実際のモデルです: http://test.mrowa.topdivision.pl/kostka/3DTest.html

4

1 に答える 1

1

Flash の表示リストを使用している場合は、z に基づいてスプライトを並べ替える必要があります。

DisplayObjectContainera の子をz 位置に基づいてソートするコードを次に示します。オブジェクトの位置が変更されるたびにこれを呼び出します。

public function sortChildren(container:DisplayObjectContainer):void
{
    var objects:Vector.<DisplayObject> = new Vector.<DisplayObject>;

    for (var i:int = 0; i < container.numChildren; i++) 
    {
        objects.push(container.getChildAt(i));
    }

    objects.sort(sortCompare);

    var index:int = 0;
    for (var j:int = 0; j < objects.length; j++) 
    {
            index = container.getChildIndex(objects[j]);
            if (index != j)
                container.setChildIndex(objects[j], j);         
    }
}

private function sortCompare(a:DisplayObject, b:DisplayObject):int
{
    return (a.z - b.z);
}

objectsこの関数が呼び出されるたびに配列全体を埋める必要がないように、ステージにアイテムを追加/ステージからアイテムを削除するたびに、メンバーをクラスメンバーに移動し、アイテムを追加/削除できます。

于 2013-04-06T13:37:41.230 に答える