Tworzenie obiektów 3D i poruszanie nimiFlash Player 10 i nowsze wersje, Adobe AIR 1.5 i nowsze wersje Aby przekształcić obiekt wyświetlany 2D w obiekt wyświetlany 3D, można jawnie przypisać jego właściwości z wartość liczbową. Po przypisaniu wartości właściwości z dla obiektu wyświetlanego tworzony jest nowy obiekt Transform. Przypisanie wartości właściwościom DisplayObject.rotationX lub DisplayObject.rotationY również tworzy nowy obiekt Transform. Obiekt Transform zawiera właściwość Matrix3D, która steruje reprezentacją obiektu wyświetlanego w przestrzeni trójwymiarowej. Poniższy kod ustawia współrzędne obiektu wyświetlanego o nazwie „leaf”: leaf.x = 100; leaf.y = 50; leaf.z = -30; Wartości te, jak również właściwości uzyskane na ich podstawie, są widoczne we właściwości matrix3D obiektu Transform obiektu leaf: 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); Informacje o właściwościach obiektu Transform zawiera opis klasy Transform. Informacje o właściwościach obiektu Matrix3D zawiera opis klasy Matrix3D. Przemieszczanie obiektu w przestrzeni 3D.Możliwe jest przemieszczanie obiektu w przestrzeni 3D poprzez modyfikowanie wartości jego właściwości x, y lub z. Gdy zmienimy wartość właściwości z obiektu, obiekt pozornie przybliża się lub oddala od obserwatora. Poniższy kod przemieszcza dwie elipsy w tę i z powrotem wzdłuż osi z, zmieniając wartości ich właściwości z w odpowiedzi na zdarzenie. Obiekt ellipse2 porusza się szybciej niż obiekt ellipse1: jego właściwośćz jest zwiększana o wielokrotność 20 po każdym zdarzeniu Frame, natomiast właściwość z obiektu ellipse1 jest zwiększana o wielokrotność 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;
}
}
Obracanie obiektu w przestrzeni 3D.Obiekt można obracać na trzy różne sposoby, odpowiednio ustawiając jego właściwości obrotu: rotationX, rotationY i rotationZ. Na poniższej ilustracji przedstawiono dwa kwadraty, które nie są obrócone: ![]() Na następnej ilustracji przedstawiono te same dwa kwadraty po inkrementacji właściwości rotationY kontenera zawierającego kwadraty w celu obrócenia ich wokół osi y. Obrócenie kontenera kwadratów, czyli ich nadrzędnego obiektu wyświetlanego, powoduje obrócenie obu kwadratów: container.rotationY += 10; ![]() Na następnej ilustracji przedstawiono skutek przypisania wartości właściwości rotationX kontenera kwadratów. Kwadraty są obracane wokół osi x. ![]() Na następnej ilustracji pokazano, co się stanie po inkrementacji właściwości rotationZ kontenera zawierającego kwadraty. Kwadraty zostaną obrócone wokół osi z. ![]() Obiekt wyświetlany może być jednocześnie przemieszczany i obracany w przestrzeni trójwymiarowej. |
|