November 2nd, 2006
import mx.transitions.Tween;import mx.transitions.easing.Regular;import com.robertpenner.geom.Vector3d;import com.robertpenner.display.Graphic3d;var sw:Number = Stage.width;var sh:Number = Stage.height;var c:Number = sw/1.5;//l'objet dont les coordonnées sont interpoléesvar pt:Vector3d = new Vector3d(Math.random()*c-c/2, Math.random()*c-c/2, Math.random()*c-c/2);var dx:Number = Math.random()*c-c/2-pt.x;var tx:Tween = new Tween(pt, "x", Regular.easeInOut, pt.x, pt.x+dx, Math.abs(dx)/5, false);var dy:Number = Math.random()*c-c/2-pt.y;var ty:Tween = new Tween(pt, "y", Regular.easeInOut, pt.y, pt.y+dy, Math.abs(dy)/5, false);var dz:Number = Math.random()*c-c/2-pt.z;var tz:Tween = new Tween(pt, "z", Regular.easeInOut, pt.z, pt.z+dz, Math.abs(dz)/5, false);//quand une tween est finie, on la relancetx.onMotionFinished = function() { var dx:Number = Math.random()*c-c/2-pt.x; this.continueTo(pt.x+dx, Math.abs(dx)/5);};ty.onMotionFinished = function() { var dy:Number = Math.random()*c-c/2-pt.y; this.continueTo(pt.y+dy, Math.abs(dy)/5);};tz.onMotionFinished = function() { var dz:Number = Math.random()*c-c/2-pt.z; this.continueTo(pt.z+dz, Math.abs(dz)/5);};//code pour la visualisation de l'exemple//ici les coordonnées du point sont copiées dans un tableau qui est actualisé dans le onChangedvar ref:MovieClip = this;var tab:Array = new Array();var l:Number = 100;for (var i:Number = 0; i < l; i++) { tab.push(pt.getClone());}tx.onMotionChanged = function() { ref.clear(); //on récupèreune projection sur l'écran des points 3d var current:Vector3d = tab[0].persProjectNew(); ref.moveTo(current.x+sw/2, current.y+sh/2); for (var i:Number = 1; i < l; i++) { current = tab[i].persProjectNew(); var pers = tab[i].getPerspective(); //l'épaisseur varie en fonction de la profondeur et de l'index du point ref.lineStyle(pers*50*i/l); ref.lineTo(current.x+sw/2, current.y+sh/2); } //gestion des touches if (Key.isDown(37)) { for (var i = 0; i < l; i++) { tab[i].rotateY(5); } } else if (Key.isDown(39)) { for (var i = 0; i < l; i++) { tab[i].rotateY(-5); } } if (Key.isDown(38)) { for (var i = 0; i < l; i++) { tab[i].rotateX(5); } } else if (Key.isDown(40)) { for (var i = 0; i < l; i++) { tab[i].rotateX(-5); } } tab.shift(); tab.push(pt.getClone());};
héhé ca donne vachement bien ^^
ça y est… le singe a bouffé un ver de l’espace ! beau travail
bravo, très sympa l’effet
J’ai une question concernant le code si joint, En premier temps bravo bon travail sa me plais.
Ma question est celle ci, si je fais un clip ou dois je le mettre dans le code présenté pour qu’il réagisse à l’effet?
Bien à vous
Name(required) :
Mail (will not be published) :
Website :
héhé ca donne vachement bien ^^
ça y est… le singe a bouffé un ver de l’espace !
beau travail
bravo,
très sympa l’effet
J’ai une question concernant le code si joint, En premier temps bravo bon travail sa me plais.
Ma question est celle ci, si je fais un clip ou dois je le mettre dans le code présenté pour qu’il réagisse à l’effet?
Bien à vous