as3 comment lier un cube 3D à un site à 6 entrées ?

as3 comment lier un cube 3D à un site à 6 entrées ? - Divers - Programmation

Marsh Posté le 23-09-2009 à 17:28:30    

Je suis débutant en flash et en AS3, et j'ai construit un cube 3D d'une part, et un site à 6 entrées d'autre part, et je ne sais pas comment les lier, pour entrer sur la page 1 du site en cliquant sur la face 1 du cube etc... On m'a dit qu'il fallait utiliser une classe principale qui teste dans la fonction enterframe ce qu'on doit afficher, soit le cube (où je veux pouvoir revenir une fois sur le site), soit la page 1 du site, ou la page 2 etc.
Quelqu'un pourrait-il me donner le bout de code qui fasse le raccord entre les deux ? Je joins le script du cube et le script du site à 6 pages... Merci d'avance !
 
 
 
CUBE :  
 
stop();
// IMPORTATION des éléments \\
import org.papervision3d.scenes.*;
import org.papervision3d.cameras.*;
import org.papervision3d.objects.*;
import org.papervision3d.objects.primitives.*;
import org.papervision3d.materials.*;
import org.papervision3d.materials.special.*;
import org.papervision3d.materials.shaders.*;
import org.papervision3d.materials.utils.*;
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;
 
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 = 11;
camera.focus = 100;
 
var mm:MovieMaterial = new MovieMaterial(devis);
mm.interactive = true;
mm.animated = true;
mm.smooth = true;
 
var mm2:MovieMaterial = new MovieMaterial(identite);
mm2.interactive = true;
mm2.animated = true;
mm2.smooth = true;
 
var mm3:MovieMaterial = new MovieMaterial(prestations);
mm3.interactive = true;
mm3.animated = true;
mm3.smooth = true;
 
var mm4:MovieMaterial = new MovieMaterial(references);
mm4.interactive = true;
mm4.animated = true;
mm4.smooth = true;
 
var mm5:MovieMaterial = new MovieMaterial(idees);
mm5.interactive = true;
mm5.animated = true;
mm5.smooth = true;
 
var mm6:MovieMaterial = new MovieMaterial(cvdw);
mm6.interactive = true;
mm6.animated = true;
mm6.smooth = true;
 
var cube:Cube = new Cube(new MaterialsList({front:mm, left:mm2, right:mm3, top:mm4, bottom:mm5, back:mm6}),
                           300, 300, 300, 10, 10, 10)
// RENDU de la scène \\
scene.addChild(cube);
 
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;
 cube.rotationY += xDist * 0.01;
 cube.rotationX += yDist * 0.01;
 renderer.renderScene(scene, camera, viewport);
}
 
// LIEN vers les différentes pages à partir du cube (c'est là où je cale, car les liens ne me font entrer que par une seule page de mon site) \\
 
identite.addEventListener(MouseEvent.CLICK, identiteClick);
function identiteClick(e:MouseEvent):void
{
 var my_loader:Loader = new Loader();
my_loader.load(new URLRequest("identite.swf" ));
addChild(my_loader);
removeChild(viewport)
}
 
 
 
SITE à 5 entrées (la face du cube qui contient le logo n'est pas clickable)
 
stop();
import fl.transitions.Tween;
import fl.transitions.easing.*;
 
flash.media.SoundMixer.stopAll();
 
// IMPORTATION de la page1\\
var currentPage:MovieClip = identite_mc;
 
var devisPage:pageDevis = new pageDevis();
var prestationsPage:pagePrestations = new pagePrestations();
var referencesPage:pageReferences = new pageReferences();
var ideesPage:pageIdees = new pageIdees();
var identitePage:pageIdentite = new pageIdentite();
 
identite_mc.targetMC = identitePage;
prestations_mc.targetMC = prestationsPage;
references_mc.targetMC = referencesPage;
idees_mc.targetMC = ideesPage;
devis_mc.targetMC = devisPage;
 
 
// DEFINITION des places des 5 pages dans le loader \\
devisPage.x = 490.2;
devisPage.y = 415.3;
ideesPage.x = 498;
ideesPage.y = 415.3;
referencesPage.x = 505.8;
referencesPage.y = 414.1;
prestationsPage.x = 525.8;
prestationsPage.y = 447;
identitePage.x = 165.4;
identitePage.y = 358.6;
 
// charger la page 1 \\
addChild(identitePage);
 
// bouton qui s'illumine en fonction de la page cliquée \\
highlight_mc.x = identite_mc.x;
underline_mc.x = identite_mc.x;
 
identite_mc.buttonMode = true;
prestations_mc.buttonMode = true;
references_mc.buttonMode = true;
idees_mc.buttonMode = true;
devis_mc.buttonMode = true;
 
identite_mc.addEventListener(MouseEvent.ROLL_OVER,moveUnderline);
prestations_mc.addEventListener(MouseEvent.ROLL_OVER,moveUnderline);
references_mc.addEventListener(MouseEvent.ROLL_OVER,moveUnderline);
idees_mc.addEventListener(MouseEvent.ROLL_OVER,moveUnderline);
devis_mc.addEventListener(MouseEvent.ROLL_OVER,moveUnderline);
 
identite_mc.addEventListener(MouseEvent.ROLL_OUT,mU);
prestations_mc.addEventListener(MouseEvent.ROLL_OUT,mU);
references_mc.addEventListener(MouseEvent.ROLL_OUT,mU);
idees_mc.addEventListener(MouseEvent.ROLL_OUT,mU);
devis_mc.addEventListener(MouseEvent.ROLL_OUT,mU);
 
function moveUnderline(e:MouseEvent):void
{
 new Tween(underline_mc,"x",Strong.easeOut,underline_mc.x,e.currentTarget.x,24,false);
}
 
function mU(e:MouseEvent):void
{
 new Tween(underline_mc,"x",Strong.easeOut,e.currentTarget.x,currentPage.x,24,false);
}
 
identite_mc.addEventListener(MouseEvent.CLICK,newPage);
prestations_mc.addEventListener(MouseEvent.CLICK,newPage);
references_mc.addEventListener(MouseEvent.CLICK,newPage);
idees_mc.addEventListener(MouseEvent.CLICK,newPage);
devis_mc.addEventListener(MouseEvent.CLICK,newPage);
 
 
function newPage(e:MouseEvent):void
{
 new Tween(highlight_mc,"x",Strong.easeOut,highlight_mc.x,e.currentTarget.x,24,false);
 removeChild(currentPage.targetMC);
 currentPage = MovieClip(e.currentTarget);  
 addChild(currentPage.targetMC);
 currentPage.targetMC.gotoAndPlay(1);
}
 
 
// bouton pour retourner au cube initial \\
logo_btn.addEventListener(MouseEvent.CLICK, logo_btnClick);
function logo_btnClick(e:MouseEvent):void
{
 var loader:Loader = new Loader();
loader.load(new URLRequest("cube.swf" ));
removeChild(currentPage.targetMC)
addChild(loader);
}
 
 
merci !
 

Reply

Marsh Posté le 23-09-2009 à 17:28:30   

Reply

Marsh Posté le 25-09-2009 à 08:46:53    

Il y a une sous catégorie "ActionScript"... et des balise de code [ code=actionscript] [ /code] (sans les espaces)
Sinon, le principe est "d'enfermer" ton site dans une class associer MovieClip plutôt que de le compiler en SWF...

 

Perso, j'utilise un DispatchEvent sur le clip de la texture, que j'écoute depuis ma scene 3D...
cf ce test : http://urfman.free.fr/fhw/ilotAbai [...] pping.html (pour les essai de mon futur site que j'ai en signature)

 

Après, je ne suis pas sure que ce soit comparable...

 

Tu as un cube, texturé de tes 5 pages du site ( et la 6eme face, un logo).
Quand on clique dessus, ça "zoom" dessus et ça débloque l'interactivité propre à la page ?
Ou tu a juste des image interactive sur un cube, mais indépendante de ton site (qui te permettent juste de capturer l'evenement CLICK), et ton site qui s'affiche en dehors de ton viewport (par dessus...) ?

Message cité 1 fois
Message édité par abais le 25-09-2009 à 08:47:51

---------------
Le membre ci-contre n'est pas responsable du message ci-dessus.
Reply

Marsh Posté le 25-09-2009 à 18:26:15    

merci de ta réponse !
ton site est très réussi !
et ton explication a l'air d'être la bonne. Le problème, c'est que je suis si débutant que je ne vois pas exactement comment l'utiliser... Je t'envoie un lien pour télécharger les 2 pages que j'essaye désespérement de lier ensemble (ou d'intégrer comme tu le propose à un seul fichier via un movieclip)... Dis-moi si tu peux me donner le bout de code qui résout tous mes problèmes... merci d'avance !!!
 
http://files.me.com/parisvdw/ed3dfi
 
 
 
 
 
 
 

abais a écrit :

Il y a une sous catégorie "ActionScript"... et des balise de code [ code=actionscript] [ /code] (sans les espaces)
Sinon, le principe est "d'enfermer" ton site dans une class associer MovieClip plutôt que de le compiler en SWF...
 
Perso, j'utilise un DispatchEvent sur le clip de la texture, que j'écoute depuis ma scene 3D...
cf ce test : http://urfman.free.fr/fhw/ilotAbai [...] pping.html (pour les essai de mon futur site que j'ai en signature)
 
Après, je ne suis pas sure que ce soit comparable...
 
Tu as un cube, texturé de tes 5 pages du site ( et la 6eme face, un logo).
Quand on clique dessus, ça "zoom" dessus et ça débloque l'interactivité propre à la page ?
Ou tu a juste des image interactive sur un cube, mais indépendante de ton site (qui te permettent juste de capturer l'evenement CLICK), et ton site qui s'affiche en dehors de ton viewport (par dessus...) ?


Reply

Marsh Posté le 25-09-2009 à 20:35:47    

C'est plus une question qu'une explication... Sinon NON, je ne peux pas regarder ta source je n'ai pas Flash, je développe sur FlashDevelop et FlexSDK.
Je ne peux pas non plus faire de l'aide sur mesure ! surtout si tu es débutant... ça dépend de la finalité que tu souhaites


---------------
Le membre ci-contre n'est pas responsable du message ci-dessus.
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed