Hello!

Newbie en AS3 et papervision, jusque là j'arrivais à quelques résultats en 3d avec ce bon vieux swift3d avec flash 8 pour les curieux: c'est là,
j'ai exploré quelques tutos, et voilà donc que je bloque sur un code que j'ai modifié depuis la source cube 3d pv3d 2.0 de gotoandlearn http://www.gotoandlearn.com/play?id=68.

J'ai transformé le cube en 6 planes intéractifs avec une fonction loop de camera pour tourner autour, et j'aimerais que la caméra s'arrête de tourner lorsqu'on survole un plane avec la souris...et que les planes arrêtent également de pivoter sur eux-même...c'est peut-être pas grand chose pour certains mais pour moi ce serait le début du bonheur. icon_cool.gif
idéalement, la loop reprendrait lorsqu'on mouse_out un plane..

Voici mon code pour l'instant ça a l'air long mais il y a 6 planes identiques:

Action Script

import org.papervision3d.scenes.*;
import org.papervision3d.cameras.*;
import org.papervision3d.objects.*;
import org.papervision3d.objects.special.*;
import org.papervision3d.objects.primitives.*;
import org.papervision3d.materials.*;
import org.papervision3d.lights.*;
import org.papervision3d.render.*;
import org.papervision3d.view.*;
import org.papervision3d.events.*;
import org.papervision3d.core.utils.*;
import org.papervision3d.core.utils.virtualmouse.VirtualMouse;

// ma scene 3d

var viewport:Viewport3D = new Viewport3D(0, 0, true, true);
addChild(viewport);
viewport.buttonMode = true;

var renderer:BasicRenderEngine = new BasicRenderEngine();

var scene:Scene3D = new Scene3D();

var camera:Camera3D = new Camera3D();
camera.zoom = 100;
camera.focus = 100;

//mes materials

var mam1:MovieMaterial = new MovieMaterial(face1);
mam1.interactive = true;
mam1.oneSide = false;

var mam2:MovieMaterial = new MovieMaterial(face2);
mam2.interactive = true;
mam2.oneSide = false;

var mam3:MovieMaterial = new MovieMaterial(face3);
mam3.interactive = true;
mam3.oneSide = false;

var mam4:MovieMaterial = new MovieMaterial(face4);
mam4.interactive = true;
mam4.oneSide = false;

var mam5:MovieMaterial = new MovieMaterial(face5);
mam5.interactive = true;
mam5.oneSide = false;

var mam6:MovieMaterial = new MovieMaterial(face6);
mam6.interactive = true;

mam6.oneSide = false;

//mon positionnement des planes

var plane1:Plane = new Plane(mam1, 200, 200, 3, 3);
scene.addChild(plane1);
plane1.x=Math.random() * 800 - 600;
plane1.y=Math.random() * 800 - 600;
plane1.z=Math.random() * 800 - 600;

//
var plane2:Plane = new Plane(mam2, 200, 200, 3, 3);
scene.addChild(plane2);
plane2.x=Math.random() * 800 - 600;
plane2.y=Math.random() * 800 - 600;
plane2.z=Math.random() * 800 - 600;

//
var plane3:Plane = new Plane(mam3, 200, 200, 3, 3);
scene.addChild(plane3);
plane3.x=Math.random() * 800 - 600;
plane3.y=Math.random() * 800 - 600;
plane3.z=Math.random() * 800 - 600;

//
var plane4:Plane = new Plane(mam4, 200, 200, 3, 3);
scene.addChild(plane4);
plane4.x=Math.random() * 800 - 600;
plane4.y=Math.random() * 800 - 600;
plane4.z=Math.random() * 800 - 600;

//
var plane5:Plane = new Plane(mam5, 200, 200, 3, 3);
scene.addChild(plane5);
plane5.x=Math.random() * 1000 - 800;
plane5.y=Math.random() * 1000 - 800;
plane5.z=Math.random() * 1000 - 800;

//
var plane6:Plane = new Plane(mam6, 200, 200, 3, 3);
scene.addChild(plane6);
plane6.x=Math.random() * 1000 - 800;
plane6.y=Math.random() * 1000 - 800;
plane6.z=Math.random() * 1000 - 800;

// ma fonction camera et rotation des planes
//
addEventListener(Event.ENTER_FRAME, loop);
function loop(e:Event):void {

var xDist:Number = mouseX - stage.stageWidth * 0.5;
var yDist:Number = mouseY - stage.stageHeight * 0.5;
plane1.rotationY += xDist * 0.04;
plane1.rotationX += -yDist * 0.04;
plane2.rotationY += xDist * 0.04;
plane2.rotationX += -yDist * 0.04;
plane3.rotationY += xDist * 0.04;
plane3.rotationX += -yDist * 0.04;
plane4.rotationY += xDist * 0.04;
plane4.rotationX += -yDist * 0.04;
plane5.rotationY += xDist * 0.04;
plane5.rotationX += -yDist * 0.04;
plane6.rotationY += xDist * 0.04;
plane6.rotationX += -yDist * 0.04;
camera.x += stage.mouseX - (stage.stageWidth*0.5);
camera.y += stage.mouseY - (stage.stageHeight*0.5);
camera.z += stage.mouseY - (stage.stageHeight*0.5);


renderer.renderScene(scene, camera, viewport);
}


/* ma fonction pour arrêter le mouvement de camera et la rotation des planes ?

addEventListener(MouseEvent.MOUSE_OVER, stopbouj);
function stopbouj(e:MouseEvent):void {




}
*/

// les clics sur les planes

face1.addEventListener(MouseEvent.CLICK, faceClick);

function faceClick(e:MouseEvent):void {
navigateToURL(new URLRequest("http://www.yahoo.com"));
}

face2.addEventListener(MouseEvent.CLICK, face2Click);

function face2Click(e:MouseEvent):void {
navigateToURL(new URLRequest("http://www.google.com"));
}


face3.addEventListener(MouseEvent.CLICK, face3Click);

function face3Click(e:MouseEvent):void {
navigateToURL(new URLRequest("http://www.flickr.com"));
}

face4.addEventListener(MouseEvent.CLICK, face4Click);

function face4Click(e:MouseEvent):void {
navigateToURL(new URLRequest("http://www.youtube.com"));
}

face5.addEventListener(MouseEvent.CLICK, face5Click);

function face5Click(e:MouseEvent):void {
navigateToURL(new URLRequest("http://www.facebook.com"));
}

face6.addEventListener(MouseEvent.CLICK, face6Click);

function face6Click(e:MouseEvent):void {
navigateToURL(new URLRequest("http://www.adobe.com"));
}


Voilou, je n'arrive pas non plus à "vérouiller" la caméra pour qu'elle ne s'éloigne pas trop de mes planes et que ceux-ci ne se perdent pas dans l'infini... icon_rolleyes.gif

je remercie par avance tout ceux qui voudront bien se pencher sur mon code, c'est pas évident de se lancer en même temps sur As3 et papervision mais je continue à lire sur As3 et me documenter sur pv3d..



Toute aide sera la bienvenue gourou.gif