Cube 3D Yukulele forked:1favorite:1lines:93license : All rights reserved modified : 2009-03-11 08:34:52 Embed Tweet package { import flash.display.Shape; import flash.display.Sprite; import flash.events.Event; import flash.events.MouseEvent; import flash.events.TimerEvent; import flash.geom.Matrix3D; import flash.geom.Point; import flash.geom.Vector3D; import flash.utils.Timer; public class Main extends Sprite { private var carres:Vector.<Shape> = new Vector.<Shape>; private static const VITESSE:Number = 4; private var cercle:Shape = new Shape(); public function Main():void { transform.matrix3D = new Matrix3D(); var mat:Matrix3D = new Matrix3D(); var timer :Timer = new Timer(1000); timer.addEventListener(TimerEvent.TIMER, function(e:TimerEvent):void { mat = new Matrix3D(); mat.appendRotation((Math.random()-.5)*VITESSE, Vector3D.X_AXIS); mat.appendRotation((Math.random()-.5)*VITESSE, Vector3D.Y_AXIS); mat.appendRotation((Math.random() - .5) * VITESSE, Vector3D.Z_AXIS); }); timer.start(); stage.addEventListener(MouseEvent.MOUSE_MOVE,zoomer); stage.addEventListener(Event.ENTER_FRAME, function(e:Event):void { for (var ind:int = 0; ind < carres.length; ind++) { carres[ind].transform.matrix3D.append(mat); } ReorderChildren(); }); cercle.graphics.beginFill(0xff0000); cercle.graphics.drawCircle( 0,0, 10); carres.push(new Carre(0,0,1,Vector3D.Z_AXIS)); carres.push(new Carre(0,0,-1,Vector3D.Z_AXIS)); carres.push(new Carre(1, 0, 0, Vector3D.Y_AXIS)); carres.push(cercle); carres.push(new Carre(-1,0,0,Vector3D.Y_AXIS)); carres.push(new Carre(0,1,0,Vector3D.X_AXIS)); carres.push(new Carre(0, -1, 0,Vector3D.X_AXIS)); for (var i:int = 0; i < carres.length; i++) { addChild(carres[i]); } x = stage.stageWidth / 2; y = stage.stageHeight / 2; } public function ReorderChildren():void { carres.sort(tri); for (var ind:int = 0; ind < carres.length; ind++) { this.setChildIndex(carres[ind],ind); } } private function tri(a:Shape,b:Shape):Number { return (b.z - a.z); } private function zoomer(e:MouseEvent):void { transform.perspectiveProjection.fieldOfView =Math.min(179,Math.max(1,e.stageX*180/stage.stageWidth)); } } } import flash.display.Shape; import flash.geom.Matrix3D; import flash.geom.PerspectiveProjection; import flash.geom.Vector3D; class Carre extends Shape { private static const TAILLE:Number = 150; private static const DISTANCE:Number = 0; public var zz:Number; public function Carre(x:Number=0,y:Number=0,z:Number=0,axe:Vector3D=Vector3D.X_AXIS) { graphics.beginFill(0xffffff*Math.random()); graphics.lineStyle(1, 0); graphics.drawRect( -TAILLE / 2, -TAILLE / 2, TAILLE, TAILLE); var mat:Matrix3D = new Matrix3D(); mat.appendRotation( 90, axe); this.transform.matrix3D = mat; this.x = x * (TAILLE / 2 + DISTANCE); this.y = y * (TAILLE / 2 + DISTANCE); this.z = z * (TAILLE / 2 + DISTANCE); alpha = .8; } } Code Fullscreen Preview Fullscreen szusz : 3dcubefp10 3D FP10 cube Vector3D.X_AXIS Vector3D.Z_AXIS Vector3D.Y_AXIS Shape push addEventListener alpha TimerEvent.ENTER_FRAME sort start TimerEvent Math.max Math.min length TimerEvent.TIMER Vector3D Math.random Vector Timer int sort new page view favorite forked pv423 forked from: Cube 3D fukt forked:1 favorite:1lines:92 (diff:79) tag: 3D