3D 表示オブジェクトの作成と移動

Flash Player 10 以降、Adobe AIR 1.5 以降

2D 表示オブジェクトを 3D 表示オブジェクトに変換するには、その z プロパティを明示的に数値に設定します。z プロパティに値を割り当てると、新しい Transform オブジェクトが表示オブジェクトに対して作成されます。DisplayObject.rotationX または DisplayObject.rotationY プロパティを設定することでも、新しい Transform オブジェクトが作成されます。Transform オブジェクトには、3D スペースでの表示オブジェクトの表現方法を管理する Matrix3D プロパティが含まれます。

次のコードでは、「leaf」という表示オブジェクトの座標を設定します。

leaf.x = 100; leaf.y = 50; leaf.z = -30;

これらの値と、これらの値から派生するプロパティは、リーフの Transform オブジェクトの matrix3D プロパティで参照することができます。

var leafMatrix:Matrix3D  = leaf.transform.matrix3D; 
 
trace(leafMatrix.position.x); 
trace(leafMatrix.position.y); 
trace(leafMatrix.position.z); 
trace(leafMatrix.position.length); 
trace(leafMatrix.position.lengthSquared);

Transform オブジェクトのプロパティについては、Transform クラスを参照してください。Matrix3D オブジェクトのプロパティについては、Matrix3D クラスを参照してください。

3D 空間でのオブジェクトの移動

x、y または z プロパティの値を変更することにより、3D 空間でオブジェクトを移動することができます。z プロパティの値を変更すると、オブジェクトがユーザーに近付いたりユーザーから遠ざかったりするように見えます。

次のコードでは、イベントに応答して z プロパティの値を変更することにより、z 軸に沿って 2 つの楕円を前後に移動します。ellipse2ellipse1 よりも高速に移動します。その z プロパティは各 Frame イベントで 20 の倍数で増加しますが、ellipse1z プロパティは 10 の倍数で増加します。

var depth:int = 1000; 
 
function ellipse1FrameHandler(e:Event):void 
{ 
    ellipse1Back = setDepth(e, ellipse1Back); 
    e.currentTarget.z += ellipse1Back * 10; 
} 
function ellipse2FrameHandler(e:Event):void 
{ 
    ellipse2Back = setDepth(e, ellipse1Back); 
    e.currentTarget.z += ellipse1Back * 20; 
} 
function setDepth(e:Event, d:int):int 
{ 
    if(e.currentTarget.z > depth) 
    { 
        e.currentTarget.z = depth; 
        d = -1; 
    } 
    else if (e.currentTarget.z <  0) 
    { 
        e.currentTarget.z = 0; 
        d = 1; 
    } 
}

3D 空間でのオブジェクトの回転

オブジェクトは、rotationXrotationY および rotationZ という回転プロパティの設定に応じて、3 通りの方法で回転することができます。

次の図に、回転されていない 2 つの正方形を示します。

次の図に、正方形のコンテナの rotationY プロパティをインクリメントして y 軸上で回転した場合の 2 つの正方形を示します。2 つの正方形のコンテナ、つまり親表示オブジェクトを回転すると、両方の正方形が回転します。

container.rotationY += 10;

次の図に、正方形のコンテナの rotationX プロパティを設定するとどうなるかを示します。これにより、正方形が x 軸上で回転します。

次の図に、正方形のコンテナの rotationZ プロパティをインクリメントするとどうなるかを示します。これにより、正方形が z 軸上で回転します。

表示オブジェクトは、3D 空間で移動と回転を同時に行うことができます。