Le site www.fousdanim.org n’est plus mis à jour depuis le 10 juillet 2015. Les outils de recherche sont toujours actifs mais nous vous invitons à aller ailleurs pour trouver des lieux plus vivants dédiés au cinéma d’animation.

passer un paramètre tableau à une fonction

Discussions, questions, astuces relatives a l'animation Flash et assimile (ToonBoom, etc)

passer un paramètre tableau à une fonction

Messagepar guyton » Mer Jan 19, 2005 12:20 pm

Bonjour,
j'utilise la fonction suivante(récupérée sur le net) :elle retourne un tableau de points formant une ellipse servant de trajectoire pour un jeu de balles
function creTablePoints (cx, cy, xRad, yRad, max) {
points = new Array();
var space = 360/max;
for (var i = 0; i<max; i++) {
var theta = space*i;
theta %= 360;
var radians = (theta/180)*Math.PI;
this.x = cx+Math.cos(radians)*xRad;
this.y = cy+Math.sin(radians)*yRad;
this.points[i] = new Array();
points[i]["x"] = x;
points[i]["y"] = y;
}

return points;
}
la ligne suivante permet de récupérer ce tableau,
pts1 = this.creTablePoints(450, 250, 300, 300, 80);//80 pts pour la bal 1
pts2 = this.creTablePoints(450, 250, 200, 200, 60);//60 pts pour la bal 2
et ainsi de suite pour ttes les balles qu'on veut. Pour animer la balle, je fais appel à la fonction suivante :
cpt=0;
function deplaceBalle1(): Void {
this._x = pts1[cpt%80]["x"];// modulo 80 pour 8O pts
this._y = pts1[cpt%80]["y"];
cpt++;
if(cpt>600) {
delete this.onEnterFrame;
}
}
puis cette fonction est appelé avec onEnterFrame : balle1.onEnterFrame=deplaceBalle1;
Mon problème est que je n'arrive pas à réutiliser cette fonction plusieurs fois (j'ai essayé en passant le paramètre tableau en créant la fonction suivante
function deplaceBalle(pts:Array): Void {
this._x = pts[cpt%80]["x"];
this._y = pts[cpt%80]["y"];
cpt++;
if(cpt>600) {
delete this.onEnterFrame;
}
}
et cré chaque trajectoire en passant les tableaux : pts1, pts2,pts3, etc...
balle1.onEnterFrame=deplaceBalle(pts1);
balle2.onEnterFrame=deplaceBalle(pts2);
ça ne marche pas....
mais pour que ça marche (avec 2 balles) je suis obligé d'écrire une fonction par balle, ex pour la balle 2 :
function deplaceBalle2(): Void {
this._x = pts2[cpt%80]["x"];
this._y = pts2[cpt%80]["y"];
cpt++;
if(cpt>600) {
delete this.onEnterFrame;
}
}
balle2.onEnterFrame=deplaceBalle2;
et ainsi de suite pour chaque balle.

les balles sont des clips simples (cercle convertit en clip) positonnés sur la scène. je dois mal m'y prendre, c'est un peu confus, j'aurais bien joint le fichier .fla en pièce joint mais je ne sais pas si on peut...

Merci de m'éclairer, ... :?:
guyton
 
Messages: 3
Inscription: Mer Jan 19, 2005 11:21 am
Localisation: Nantes

Messagepar Yagan » Jeu Jan 20, 2005 9:44 pm

je laisse la parole aux specialistes ;) ...

... et je te souhaite juste la bienvenue chez les Fous guyton !
Read U Soon
YAGAN

"How do you prove that you exist ... ? Maybe we don't exist ... "
Avatar de l’utilisateur
Yagan
Aide soignant
 
Messages: 1010
Inscription: Ven Fév 21, 2003 8:59 pm
Localisation: Lille-F
Film d'animation culte: L'Etrange Noel de Monsieur Jack

Messagepar guyton » Sam Jan 22, 2005 12:15 pm

Merci pour ton accueil...

à bientôt

Guyton :roll:
guyton
 
Messages: 3
Inscription: Mer Jan 19, 2005 11:21 am
Localisation: Nantes

euh...

Messagepar stiv » Jeu Jan 27, 2005 1:39 pm

Question stupide : tu changes les parametres de courbe pour chaque balle ?
Avatar de l’utilisateur
stiv
 
Messages: 9
Inscription: Mar Sep 07, 2004 8:15 am
Localisation: Paris / puteaux / Arcueil
Film d'animation culte: Totoro VS Predator

voila c repare

Messagepar stiv » Jeu Jan 27, 2005 2:07 pm

function creTablePoints (cx, cy, xRad, yRad, max) {
points = new Array();
var space = 360/max;
this.points[0] = max;
for (var i = 1; i<=max; i++) {
var theta = space*i;
theta %= 360;
var radians = (theta/180)*Math.PI;
var x = cx+Math.cos(radians)*xRad;
var y = cy+Math.sin(radians)*yRad;
trace(x);
trace(y);
this.points[i] = new Object();
points[i].x = x;
points[i].y = y;
}
return points;
}

pts1 = new Array()
pts1 = this.creTablePoints(50, 50, 300, 300, 80);//80 pts pour la bal 1
pts2 = new Array();
pts2 = this.creTablePoints(60, 80, 200, 200, 60);//60 pts pour la bal 2

function deplaceBalle(){
trace("ok");
var tab = _root["pts"+this.n];
trace(this.cpt)
trace(tab[this.cpt].x)
this._x = tab[this.cpt].x;
this._y = tab[this.cpt].y;
this.cpt++;
if(this.cpt>tab[0]){
this.cpt = 1;
}
}

function prepareBalle(mc,num){
mc.n = num;
mc.cpt = 1;
mc.onEnterFrame=deplaceBalle;
}

prepareBalle(balle1,1)
prepareBalle(balle2,2)
Avatar de l’utilisateur
stiv
 
Messages: 9
Inscription: Mar Sep 07, 2004 8:15 am
Localisation: Paris / puteaux / Arcueil
Film d'animation culte: Totoro VS Predator

Messagepar stiv » Jeu Jan 27, 2005 2:14 pm

prepareballe sert a passer les valeurs a ton clip balle, comme ca pas besoin de faire 2 fonctions !

maintenant dans ton tableau, la case 0 correspond au nombre d'image necessaire pour un tour (la vitesse), je l'ai fait cycler aussi mais ca devait marcher aussi avant

et surtout j'ai modifié ton code de facon a simplifier en enlevant les termes un peu esoterique...

mais par contre ca fait juste des balles qui tournent...J'en ris aux éclats !

A+

stiv
Avatar de l’utilisateur
stiv
 
Messages: 9
Inscription: Mar Sep 07, 2004 8:15 am
Localisation: Paris / puteaux / Arcueil
Film d'animation culte: Totoro VS Predator

Messagepar guyton » Sam Jan 29, 2005 1:04 pm

Merci Stiv,

La question était sans doute stupide mais la réponse en vaut la peine. ça marche super bien.

A +

Guyton

:)
guyton
 
Messages: 3
Inscription: Mer Jan 19, 2005 11:21 am
Localisation: Nantes

Messagepar » Sam Jan 29, 2005 2:17 pm

Bon sang j'y comprends rien... mais ça fait plaisir de savoir qu'il y a des spécialistes ici...
:roll:
:x

+
c
"Quand la raie manta, son nez s'allongit."

Les fourmis n'aiment pas le Flamenco, Auguste Derrière, Ed. Le Castor Astral
Avatar de l’utilisateur
Aide soignant
 
Messages: 4747
Inscription: Mar Fév 18, 2003 1:43 pm
Localisation: Lille-F
Film d'animation culte: Chicken Scratch


Retourner vers Section Flash et Vectoriel

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 4 invités