Scour Design. Tutoriales de Flash, ActionScript, CSS, Photoshop, ImageReady...

\n"; } } } lecturas();

          


Dibujo 3D en Flash con ActionScript

      

Autor: kirupa.com

Resultado

No tiene instalado el plugin de Flash necesario, haga click aquí para descargarlo gratuitamente.

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.

Scour Design ™ Todos los Derechos Reservados © Carlos Carmona Xhtml 1.1 Strict Válido!CSS Nivel 2 Válido! Nivel Triple-A de Conformidad con las Directrices de Accesibilidad Web (WAI)