mais je voudrais faire une camera en function de la souris et la suis un peu perdu, j'ai tenté avec PerspectiveProjection mais ca donne rien, voici le code je sais pas si c'est comme ca qu'il faut faire ou pas
Action Script
package {
import flash.display.*;
import flash.events.*;
import flash.geom.*;
import flash.filters.*;
[SWF(width="550", height="400", frameRate="60", backgroundColor="#000000")]
public class Sphere3D extends Sprite {
public var container:Sprite;
public var camera:;
public var verticles:Vector.<Vector3D> = new Vector.<Vector3D>();
public var matrix:Matrix3D = new Matrix3D();
public function Sphere3D():void {
container = new Sprite()
container.x = stage.stageWidth * 0.5;
container.y = stage.stageHeight * 0.5;
addChild(container);
container.filters = [new BlurFilter(), new GlowFilter(0x5555ff)];
camera = new PerspectiveProjection()
camera.focalLength = 200;
for(var i:int = 0; i < 256; i++){
var pixel:Bitmap = new Bitmap(new BitmapData(1,1,false,0xffffff));
container.addChild(pixel);
var a:Number = Math.random() * Math.PI - (Math.PI * 0.5);
var b:Number = (Math.random() * Math.PI - (Math.PI * 0.5)) * 2;
var px:Number = container.y * Math.cos(a) * Math.cos(b);
var py:Number = container.y * Math.cos(a) * Math.sin(b);
var pz:Number = container.y * Math.sin(a);
verticles.push(new Vector3D(px, py, pz));
}
addEventListener(Event.ENTER_FRAME, render);
}
public function render(event:Event):void {
matrix.appendRotation(1, Vector3D.Y_AXIS);
for(var i:int = 0; i < container.numChildren; i++){
var pixel:DisplayObject = container.getChildAt(i);
pixel.x = -container.x;
pixel.y = -container.y;
pixel.z = 0;
var vertex:Vector3D = verticles[i];
vertex = matrix.transformVector(vertex);
vertex = camera.toMatrix3D().transformVector(vertex);
var ps:Point = new Point(0,0);
ps = pixel.local3DToGlobal(vertex);
pixel.x = ps.x;
pixel.y = ps.y;
}
}
}
}