1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102
| --------
Stage.scaleMode = 'noScale';
var rotations = {x:0, y:0, z:0};
var boxPoints = [
{x:-30, y:-30, z:-30},
{x:30, y:30, z:-30},
{x:-30, y:30, z:-30},
{x:-30, y:-30, z:30},
{x:30, y:-30, z:30},
{x:30, y:30, z:30}
];
this.createEmptyMovieClip("theScene", 1);
theScene._x = theScene._y = 130;
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);
}
----------- |
Partager