Thierry92psg
Messages postés16Date d'inscriptionmercredi 17 mars 2004StatutMembreDernière intervention16 septembre 2005
-
22 août 2005 à 17:57
_benjy
Messages postés1575Date d'inscriptionvendredi 23 avril 2004StatutMembreDernière intervention21 février 2011
-
16 sept. 2005 à 17:35
Bonjour à tous,
Je débute sur Flash, et j'ai donc besoin de l'avis éclairé de plus expérimentés que moi...
Mon projet consiste à réaliser une animation de tennis à partir de données d'un fichier texte.
Ce txt comporte des variables telles que les positions successives des joueurs, de la balle (vitesse, hauteur, ...), et des coups joués.
Dans mon projet, chaque coup, tel un revers joué par le joueur de dos, correspond à un movie clip. J'ai donc autant de movie clips que de coups différents, multiplié par 2 (joueur de dos + joueur de face).
Je n'ai pas de problème pour charger les données du fichier texte. Le chargement se fait dans le calque supérieur, appelé "actions".
Comme je veux vérifier que les données sont chargées entièrement, je charge les données du txt dans l'image 1, je teste dans l'image 2. Si OK, je passe a la 3, sinon je reviens a la 1. Ca, ca marche bien.
Maintenant la question que je me pose, c'est où et comment controler mes différents clips, sachant que dans mon image 3, je constitue différents tableaux de variables, correspondant aux actions devant être réalisées par le joueur de face, le joueur de dos, et la balle.
Je ne sais pas où mettre mes instances de clips (sur 3 calques ? joueur_dos, joueur_face et balle ?) ni ou je dois controler ces clips. Une boucle de controle serait appropriée, du genre, tant que mon tableau a encore des données, joueur le clip correspondant, mais ce que je tente ne fonctionne pas.
Pourriez-vous m'éclairer s'il vous plait ?
Merci beaucoup.
Thierry92psg
Messages postés16Date d'inscriptionmercredi 17 mars 2004StatutMembreDernière intervention16 septembre 2005 31 août 2005 à 11:50
autant pour moi pour la boucle...
Je n'arrive toujours pas a encjainer les clips. Voici ce que j'ai fait :
Scene :
txt = new LoadVars();
txt.onLoad= function (pSuccess) {
if (pSuccess) {
charger_tableaux(); // fct pour charger le tableau mesActions
indexAction=0;
action_suivante(); // fct pour passer au clip suivant
}
}
txt.load("import.txt");
function action_suivante() {
_global.action = mesActions[indexAction]["action"];
_global.clipjoue=action;
trace("clipjoue = " + clipjoue);
_root.joueur1.executer(); // appel de la fct pour joueur le clip
}
function charger_tableaux() {
... // marche bien
}
// EXECUTER
function executer() {
fin_clip=false;
init_pos(); // initialiser les positions x et y du clip avec données recues
onEnterFrame = function() {
//trace(fin_clip);
deplacer();
if (fin_clip==true){
delete onEnterFrame;
this[clipjoue].stop();
}
}
}
function init_pos(){
... // marche bien
}
// fonction pour déplacer le clip de course du joueur
function deplacer() {
... // marche bien
// fin_clip=true lorsque le déplacement est fini
}
}
******************************
Lorsque je rappelle action_suivante() après le stop() de l'image1 de joueur1, il n'y passe pas (et pour cause)... Le clip suivant est dans l'image 2 du clip joueur1
Donc je ne vois pas où il faut faire cet appel.
J'ai une deuxième question sur l'interface de Flash cette fois-ci. J'ai positionné un clip sur la scene. Quand je clique sur l'instance de MC, il y a un petit rond et une petite croix, qui semblent représenter la position relative du MC. Du coup quand je déplace le MC, je déplace en meme temps ce petit rond, et ca me fout la grouille dans mes coordonnées. A quoi sert ce rond ?
Thierry92psg
Messages postés16Date d'inscriptionmercredi 17 mars 2004StatutMembreDernière intervention16 septembre 2005 31 août 2005 à 17:16
Merci pour ta réponse Benjy
j'avais bien fait les essais en mettant le rappel de action_suivante en dessous de this[clipjoue].stop(); par contre, j'avais mis _root et non _parent (ce qui doit revenir au même puisqu'on vise le même niveau).
En tous cas ca ne marche toujours pas, meme avec parent.
La deuxième fois que je passe dans action_suivante, clipjoue contient bien "D_avant_service_gauche" qui est le 2eme clip à lire.
Mais dans les fonctions executer(), init_pos() et deplacer(), this[clipjoue] est undefined la 2eme fois.
Est-ce que cela vient du fait que le 2eme clip que j'appelle se trouve sur l'image 2 du clip joueur1 (alors que mon 1er clip se trouve sur l'image 1) ? Pour info, j'ai mis un stop() sur l'image 1 et l'image 2 de joueur1.
Thierry
Thierry92psg
Messages postés16Date d'inscriptionmercredi 17 mars 2004StatutMembreDernière intervention16 septembre 2005 1 sept. 2005 à 16:41
Merci Benjy, ca marche mieux comme ca. Maintenant j'arrive à enchainer les clips, sauf que même en mémorisant les positions d'arrivée du clip N, et en les reprenant pour les positions de départ du clip N+1, il y a un décalage !
Pourtant en traçant les valeurs, mes positions sont exactes, donc le clip N+1 devrait repartir de là où est arrivé le clip N.
Est ce que cela peut venir de l'interface flash (petite croix et petit rond notamment) ?
Thierry92psg
Messages postés16Date d'inscriptionmercredi 17 mars 2004StatutMembreDernière intervention16 septembre 2005 16 sept. 2005 à 11:33
Salut Benjy,
de retour de vacances, et donc avec les idées claires, j'ai toujours ce décalage sur l'axe Y. J'utilise la méthode d'affectation directe, en fin de fonction de déplacement : departX1=this[clipjoue]._x et departY1=this[clipjoue]._y puis this[clipjoue]._x=departX1 et this[clipjoue]._y=departY1 dans l'initialisation du prochain déplacement. En traçant toutes ces infos, j'ai bien les nombres voulus. Donc je ne vois pas pourquoi ca ne marche pas. Le deuxième clip redémarre au bon x, mais pas au bon y (qui est même en dehors de la scène, alors que je suis en Y=160).
D'autre part, je voulais savoir qu'elle était la meilleure méthode à utiliser pour que, une fois que tous les clips ont été joués, l'animation s'arrête proprement (dernier clip joué rendu statique).
Merci
Thierry
Vous n’avez pas trouvé la réponse que vous recherchez ?
Thierry92psg
Messages postés16Date d'inscriptionmercredi 17 mars 2004StatutMembreDernière intervention16 septembre 2005 16 sept. 2005 à 17:29
Non, ca ne marche toujours pas, j'ai toujours ce décalage entre mes clips, alors que j'ai 0 dans X et 0 dans Y (selon ta procédure). Le premier décalage, entre le clip 1 et 2 est vers le bas, le second, entre le clip 2 et 3, est vers le haut. Le X a l'air d'être bien sauvegardé, mais pas le Y...