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 つの楕円を前後に移動します。
ellipse2
は
ellipse1
よりも高速に移動します。その
z
プロパティは各 Frame イベントで 20 の倍数で増加しますが、
ellipse1
の
z
プロパティは 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 空間でのオブジェクトの回転
オブジェクトは、
rotationX
、
rotationY
および
rotationZ
という回転プロパティの設定に応じて、3 通りの方法で回転することができます。
次の図に、回転されていない 2 つの正方形を示します。
次の図に、正方形のコンテナの
rotationY
プロパティをインクリメントして y 軸上で回転した場合の 2 つの正方形を示します。2 つの正方形のコンテナ、つまり親表示オブジェクトを回転すると、両方の正方形が回転します。
container.rotationY += 10;
次の図に、正方形のコンテナの
rotationX
プロパティを設定するとどうなるかを示します。これにより、正方形が x 軸上で回転します。
次の図に、正方形のコンテナの
rotationZ
プロパティをインクリメントするとどうなるかを示します。これにより、正方形が z 軸上で回転します。
表示オブジェクトは、3D 空間で移動と回転を同時に行うことができます。
|
|
|