Probleme classe 3D de Tom

Signaler
Messages postés
2
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
14 mai 2005
-
Messages postés
2
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
14 mai 2005
-
Bonjour à tous



j'experimente flash (particulièrement l'actionscript) et je cherche à mettre en oeuvre la classe 3D de tom, ici meme.

J'ai créé un cube, que je fais tourner sur lui même, et que je déplace.
J'essaye, lorsque ce cube a une certaine position, de passer à la suite
de l'animation. Le problème c'est qu'effectivement ca change d'image,
mais ca reste bloqué sur cette image. Meme en testant l'animation et en
essayant de passer à l'mage suivante, ca reste bloqué :/ Si quelqu'un
peut m'aider



voilà le code :



stop();

var monmodele;

var e = this.moteur;

e._x = 200;

e._y = 150;

// ------------------------------------------------------------------

e.configScene = function(s)

{

this.reset();

this.scenes[s](this);

}



// ------------------------------------------------------------------





e.scenes = [

// Scene 0

function(e){



// Creation de la camera

var c = e.configCamera(new S3D.Camera());

c.changerCoordonnees(0,-200,30);

c.changerRotation(-Math.PI/2,0);

e.vuedecote = new Interpolation(c,{x:150,y:0,z:30,xRot:0,yRot:-Math.PI/2});

e.retourVueGlobale = new Interpolation(c,{x:0,y:-200,z:30,xRot:-Math.PI/2,yRot:0});





var m = e.ajouterModele(new S3D.Cube(20,true,true));

monmodele = m._id;

m.changerAlpha(90);

m.deformerModele(2,2,2);

m.changerCoordonnees(0,10,0);

m.changerCouleur(128,55,12);





m.onEnterFrame= function()

{

var coord_cube = m.recupererCoordonnees();

if(coord_cube.x < 400)

{

this.tournerDe(0.02,0.02);

this.changerCoordonnees(coord_cube.x + 2,coord_cube.y + 2,0);

}

else

{



this.onRemove;

gotoAndPlay(4);





}

};

MovieClip.addListener(m);



}];







e.configScene(0);



Je suppose que le probleme se situe au niveau du addlistener ou un truc comme ca, mais je calle /

Merci d'avance si vous avez le courage de vous pencher sur mon problème :)

2 réponses

Messages postés
1511
Date d'inscription
samedi 8 décembre 2001
Statut
Modérateur
Dernière intervention
11 juin 2009

Salut,

Si tu veux faire tourner une animation à la suite, il faut 'tuer' le
moteur (e) d'abord (je ne me souviens plus de la fonction, mais ce
n'est pas trés compliqué).Cette classe fonctionne mieux avec des
insertions de clips commandés par AS, plutot que commander la scene
elle meme.



Et aprés le but est d'ecrire les differentes scenes à la suite (si tu
as vu, e.scenes est un tableau de fonctions, et toutes les scenes sont
programmées les unes à la suite des autres).



En tout cas, bon courage, c'est une classe ecrite avec amour, mais
jamais terminée... (il manque les clips simples, et quelques petites
autres choses)
Messages postés
2
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
14 mai 2005

arg je pete un plomb, je tourne en rond.

La fonction pour tuer le moteur est...reset :D

Mais ca résoud un problème et en amène un autre:

Mon animation est destinée à etre jouée en boucle. Apres avoir fait un
e.reset, puis play dans la foulée, l'animation continue effectivement à
jouer. Mais au second passage, le moteur ne fait plus ren, comme s'il y
avait des vars non initialisées.



Voici ce que contient la fonction reset:

p.reset = function()

{

for(var i in this.modeles)this.modeles[i].onRemove();

delete this.modeles;

this.modeles = new Object();

this.camera = undefined;

this.cameras = new Object();

this.onRender = undefined;

};



et mon code:



// Déclaration du moteur: -------------------------------------------

stop();



var e = this.moteur;

e._x = 200;

e._y = 200;

// ------------------------------------------------------------------

e.configScene = function(s)

{

this.reset();

this.scenes[s](this);

}



// Ici, je n'ai déclaré qu'une scene:

e.scenes = [

// Scene 0

function(e){



// Creation de la camera

var c = e.configCamera(new S3D.Camera());

c.changerCoordonnees(0,-200,30);

c.changerRotation(-Math.PI/2,0);







var m = e.ajouterModele(new S3D.Cube(20,true,true));

monmodele = m._id;

m.changerAlpha(90);

m.deformerModele(2,2,2);

m.changerCoordonnees(0,100,0);

m.changerCouleur(128,55,12);





m.onEnterFrame= function()

{



var coord_cube = m.recupererCoordonnees();

if(coord_cube.x < 400)

{

this.tournerDe(0.02,0.02);

this.changerCoordonnees(coord_cube.x + 10,coord_cube.y + 10,0);

}

else

{

////RHAAAAAAA/////



play();





}

}

MovieClip.addListener(m);





}];







e.configScene(0);



j'ai meme tenté de passer les variables à undefined sur l'image une et
l'image 3 (la clase fait son boulot image 2) mais rien n'y fait. Il y a
une ébauche de cube, mais qui ne passe pas plus loin. Comme si une des
variables ne se reinitiliasait pas :/

La ou j'ai mis RHAAAA dans le script, c'est la ou je ne sais plus quoi
mettre pour que ca marche. J'ai essayé tous les reset possibles, de
mmettre toutes les vars à undefined les unes après les autres, je ne
sais pas ce qui coince.

Voila le résultat actuel:



http://sites.estvideo.net/floo/test.swf



Merci d'avance si vous avez le courage de vous re-pencher sur mon problème :)