Resultado
Con el siguiente código sacado de kirupa.com vamos a ver como utilizar el potencial de ActionScript para producir un efecto tridimensional 3D. No hay más que copiar y pegar el código:
Convert3DPointTo2DPoint = function (points, angles, perspective) { var TransformedPointsArray = []; var sx = Math.sin(angles.x); var cx = Math.cos(angles.x); var sy = Math.sin(angles.y); var cy = Math.cos(angles.y); var sz = Math.sin(angles.z); var cz = Math.cos(angles.z); var xy; var xz; var yx; var yz; var scaleFactor; var i = points.length; while (i--) { xy = points[i].y * cx - points[i].z * sx; xz = points[i].y * sx + points[i].z * cx; yx = points[i].x * cy + xz * sy; yz = xz * cy - points[i].x * sy; scaleFactor = perspective / (perspective + yz); TransformedPointsArray[i]={x:(yx*cz-xy*sz)*scaleFactor,y:(yx*sz+xy*cz)*scaleFactor}; } return(TransformedPointsArray); }; points=[{x:50,y:50,z:0},{x:-50,y:50,z:0},{x:0,y:0,z:0}, {x:0,y:100,z:0},{x:0,y:50,z:50},{x:0,y:50,z:-50}]; perspective = 300; this.createEmptyMovieClip("scene3D", 1); scene3D._x = 85; scene3D._y = 40; for (i = 0; i < points.length; i++) { dot = scene3D.createEmptyMovieClip("dot" + i, i); dot.lineStyle(4, 0, 100); dot.lineTo(0.150000, 0.450000); } scene3D.createTextField("xaxis", 200, 0, 0, 50, 50); scene3D.xaxis.text = "X"; scene3D.createTextField("yaxis", 201, 0, 0, 50, 50); scene3D.yaxis.text = "Y"; scene3D.createTextField("zaxis", 202, 0, 0, 50, 50); scene3D.zaxis.text = "Z"; scene3D.xaxis.selectable = scene3D.yaxis.selectable = scene3D.zaxis.selectable = false; scene3D.angles = {x: 0, y: 0, z: 0}; scene3D.onEnterFrame = function () { this.angles = {x: 0, y: y = y + 0.050000, z: 0}; this.clear(); this.lineStyle(1, 0, 100); ScreenPositions = Convert3DPointTo2DPoint(points, this.angles, perspective); for (i = 0; i < points.length; i++) { this["dot" + i]._x = ScreenPositions[i].x; this["dot" + i]._y = ScreenPositions[i].y; if (i < 6) { if (i % 2) { this.lineTo(ScreenPositions[i].x, ScreenPositions[i].y); continue; } this.moveTo(ScreenPositions[i].x, ScreenPositions[i].y); } } this.xaxis._x = this.dot1._x + 10; this.xaxis._y = this.dot1._y - 20; this.yaxis._x = this.dot2._x + 10; this.yaxis._y = this.dot2._y - 20; this.zaxis._x = this.dot4._x + 10; this.zaxis._y = this.dot4._y - 20; };
Si lo deseas, puedes descargarte el archivo del ejemplo aquí.
Un saludo.