Hola!
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 :oops:

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! :wink: