Estoy trabajando sobre un ejemplo en el que un cubo rota en 3D por medio de los movimientos del ratón, de momento he conseguido modificarlo como necesitaba e implementarle algunas cosillas, pero el ejemplo ya hacia la perspectiva mal (digamos que la hace al revés, el fondo es mas grande que lo que está en primer plano) y no consigo descifrarlo para poder arreglarlo, os dejo el código a ver si me podeis hechar un cable, estoy super atrancado

Código ActionScript :
Stage.scaleMode = 'noScale'; var rotations = {x:0, y:0, z:0}; var boxPoints = [ {x:-90, y:-90, z:-90}, {x:90, y:90, z:-90}, {x:-90, y:90, z:-90}, {x:-90, y:-90, z:90}, {x:90, y:-90, z:90}, {x:90, y:90, z:90} ]; this.createEmptyMovieClip("theScene", 1); theScene._x = theScene._y = 150; createImages(); theScene.onEnterFrame = function(){ rotations.x -= this._ymouse/2000; rotations.y += this._xmouse/2000; var points2d = pointsTransform(boxPoints, rotations); movieClip3PointTransform(this.image0, points2d[2], points2d[0], points2d[3]); movieClip3PointTransform(this.image1, points2d[5], points2d[1], points2d[2]); movieClip3PointTransform(this.image2, points2d[0], points2d[2], points2d[1]); movieClip3PointTransform(this.image3, points2d[4], points2d[3], points2d[0]); movieClip3PointTransform(this.image4, points2d[3], points2d[4], points2d[5]); movieClip3PointTransform(this.image5, points2d[1], points2d[5], points2d[4]); } function createImages(){ var i = 6; while(i--){ theScene.createEmptyMovieClip("image"+i, i); theScene["image"+i].createEmptyMovieClip("contents", i); theScene["image"+i].contents.attachBitmap( flash.display.BitmapData.loadBitmap("image"+i), 1, false, true ); } } function pointsTransform(points, rotations){ var tpoints = new Array(); var sx = Math.sin(rotations.x); var cx = Math.cos(rotations.x); var sy = Math.sin(rotations.y); var cy = Math.cos(rotations.y); var sz = Math.sin(rotations.z); var cz = Math.cos(rotations.z); var x,y,z, xy,xz, yx,yz, zx,zy; var i = points.length; while (i--){ x = points[i].x; y = points[i].y; z = points[i].z; xy = cx*y - sx*z; xz = sx*y + cx*z; yz = cy*xz - sy*x; yx = sy*xz + cy*x; zx = cz*yx - sz*xy; zy = sz*yx + cz*xy; tpoints[i] = {x:zx, y:zy}; } return tpoints; } function movieClip3PointTransform(mc, a,b,c){ mc._visible = pointsIsVisible(a,b,c); if (!mc._visible) return; var m = mc.transform.matrix; m.tx = b.x; m.ty = b.y; m.a = (a.x - b.x)/mc.contents._width; m.b = (a.y - b.y)/mc.contents._width; m.c = (c.x - b.x)/mc.contents._height; m.d = (c.y - b.y)/mc.contents._height; mc.transform.matrix = m; } function pointsIsVisible(a,b,c){ var db = b.x - a.x; if (!db) return (a.y > b.y == c.x > a.x); var dc = c.x - a.x; if (!dc) return (a.y > c.y == b.x < a.x); return ((b.y-a.y)/db < (c.y-a.y)/dc) != (a.x < b.x == a.x > c.x); }
Saludos!
