Код:
stop();
// создание 3 масивов с координатами х у z
x = [-50, 50, 50, -50, -50, 50, 50, -50];
y = [50, 50, -50, -50, 50, 50, -50, -50];
z = [-50, -50, -50, -50, 50, 50, 50, 50];
//смещаем главный слой для того чтобы куб был в центре
_root._x = 150;
_root._y = 150;
// глубина ну дает искожение эфект горизонта
s = 200;
// углы поворота
pX = 0.1;
pY = -0.2;
_root.onEnterFrame = function() {
pX = -(0-_ymouse)/50;
pY = (0-_xmouse)/50;
// чистим главный уровень
_root.clear();
//запускаем цикл для обновление координат прошета их новых положений
for (i=0; i<8; i++) {
r = Math.PI/180;
// поворот вокруг оу
ky = y[i]*Math.cos(pX*r)-z[i]*Math.sin(pX*r);
//поворот вокруг ох
kx = x[i]*Math.cos(pY*r)+(y[i]*Math.sin(pX*r)+z[i]*Math.cos(pX*r))*Math.sin(pY*r);
//поворот вокруг oz
kz = -x[i]*Math.sin(pY*r)+(y[i]*Math.sin(pX*r)+z[i]*Math.cos(pX*r))*Math.cos(pY*r);
//сохроняем переменные в масив
x[i] = kx;
z[i] = kz;
y[i] = ky;
}
//стиль линий :)
lineStyle(0, 0xff0000, 100);
//дальше идет рисование сторон куба
//так как их 6 рисуем шесть квадратов
//с помощю точек из масива
// 1
moveTo(x[0]*(s/(s+z[0])), y[0]*(s/(s+z[0])));
lineTo(x[1]*(s/(s+z[1])), y[1]*(s/(s+z[1])));
lineTo(x[2]*(s/(s+z[2])), y[2]*(s/(s+z[2])));
lineTo(x[3]*(s/(s+z[3])), y[3]*(s/(s+z[3])));
lineTo(x[0]*(s/(s+z[0])), y[0]*(s/(s+z[0])));
//2
moveTo(x[4]*(s/(s+z[4])), y[4]*(s/(s+z[4])));
lineTo(x[5]*(s/(s+z[5])), y[5]*(s/(s+z[5])));
lineTo(x[6]*(s/(s+z[6])), y[6]*(s/(s+z[6])));
lineTo(x[7]*(s/(s+z[7])), y[7]*(s/(s+z[7])));
lineTo(x[4]*(s/(s+z[4])), y[4]*(s/(s+z[4])));
//3
moveTo(x[0]*(s/(s+z[0])), y[0]*(s/(s+z[0])));
lineTo(x[4]*(s/(s+z[4])), y[4]*(s/(s+z[4])));
lineTo(x[5]*(s/(s+z[5])), y[5]*(s/(s+z[5])));
lineTo(x[1]*(s/(s+z[1])), y[1]*(s/(s+z[1])));
lineTo(x[0]*(s/(s+z[0])), y[0]*(s/(s+z[0])));
//4
moveTo(x[2]*(s/(s+z[2])), y[2]*(s/(s+z[2])));
lineTo(x[6]*(s/(s+z[6])), y[6]*(s/(s+z[6])));
lineTo(x[7]*(s/(s+z[7])), y[7]*(s/(s+z[7])));
lineTo(x[3]*(s/(s+z[3])), y[3]*(s/(s+z[3])));
lineTo(x[2]*(s/(s+z[2])), y[2]*(s/(s+z[2])));
//5
moveTo(x[0]*(s/(s+z[0])), y[0]*(s/(s+z[0])));
lineTo(x[3]*(s/(s+z[3])), y[3]*(s/(s+z[3])));
lineTo(x[7]*(s/(s+z[7])), y[7]*(s/(s+z[7])));
lineTo(x[4]*(s/(s+z[4])), y[4]*(s/(s+z[4])));
lineTo(x[0]*(s/(s+z[0])), y[0]*(s/(s+z[0])));
//6
moveTo(x[1]*(s/(s+z[1])), y[1]*(s/(s+z[1])));
lineTo(x[2]*(s/(s+z[2])), y[2]*(s/(s+z[2])));
lineTo(x[6]*(s/(s+z[6])), y[6]*(s/(s+z[6])));
lineTo(x[5]*(s/(s+z[5])), y[5]*(s/(s+z[5])));
lineTo(x[1]*(s/(s+z[1])), y[1]*(s/(s+z[1])));
};
вот те кубик смотри
|