titi82
Nombre de messages : 96 Age : 47 Niveau graphique : aprentie +1 Date d'inscription : 24/10/2008
| Sujet: créer un cube qui pivote Mer 19 Nov - 16:01 | |
| code à insérer : - Code:
-
Stage.scaleMode = 'noScale';
var rotations = {x:0, y:0, z:0};
var boxPoints = [
{x:-50, y:-50, z:-50},
{x:50, y:50, z:-50},
{x:-50, y:50, z:-50},
{x:-50, y:-50, z:50},
{x:50, y:-50, z:50},
{x:50, y:50, z:50}
];
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);
} | |
|