Probleme classe 3D de Tom

doohee Messages postés 2 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 14 mai 2005 - 14 mai 2005 à 17:47
doohee Messages postés 2 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 14 mai 2005 - 14 mai 2005 à 19:56
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

cs_tom Messages postés 1511 Date d'inscription samedi 8 décembre 2001 Statut Modérateur Dernière intervention 11 juin 2009
14 mai 2005 à 18:31
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)
0
doohee Messages postés 2 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 14 mai 2005
14 mai 2005 à 19:56
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 :)
0
Rejoignez-nous