Variables dynamiques: creation de 800 variables.

Résolu
aze555666 Messages postés 208 Date d'inscription mardi 13 avril 2004 Statut Membre Dernière intervention 26 janvier 2009 - 16 févr. 2005 à 12:23
aze555666 Messages postés 208 Date d'inscription mardi 13 avril 2004 Statut Membre Dernière intervention 26 janvier 2009 - 16 févr. 2005 à 21:06
slt

voila mon pb: je veux afficher 400 points: point0 à point 399, ayant pour coordonnées a0 à a399 et b0 à b399.
j'utilise une boucle for pour modifier des variables, puis afficher les points aux coordonnées ainsi calculées. j'ai essayé ça:

var nb_points = 400;
for(var i=0;i<nb_points;i++){
var "a"+i = cos(i*3.1415926536/200)
var "b"+i = sin(i*3.1415926536/200)
}

normalement, après affichage des points aux coordonnées a et b, l'ensemble devrait ressembler à un cercle.
j'espérait que cette sinthaxe créerait 400 variables a0,a1,a2,....,a399 et 400 variables b0,b1,b2,....,b399. mais évidemment, flash ne veut pas de mon "identifiant" "a"+i, ni du "b"+i.

comment faut-il faire pour creer mes 400 variables a et mes 400 variables b

merci d'avance

7 réponses

MrdJack Messages postés 146 Date d'inscription jeudi 22 avril 2004 Statut Membre Dernière intervention 8 mars 2008 2
16 févr. 2005 à 13:05
salut aze...



ya une solution, ton prob viens de la déclaration de tes variables.



il suffit de remplacer "a"+i par _root["a"+i] si tu est dans
_root ou alors tu met this["a"+1] si tu est dans un Mclip.



je pense que ca devrai marcher... tiens nous au courant.



ps: si tu ne multiplie pas ton cos et ton sin par le rayon du cercle, ton cercle seras d'un rayon 1...

il est alors inutile d'avoir autant de points pour un si petit cercle...



@++



Mrdjack
3
aze555666 Messages postés 208 Date d'inscription mardi 13 avril 2004 Statut Membre Dernière intervention 26 janvier 2009
16 févr. 2005 à 13:16
merci, je vais essayer avec _root. pour ce qui est du rayon du cercle, je suis au courant, en faire, a et b sont les coordonnées d'un vecteur pour déplacer le point, et je les redéplace plusieurs fois de suite (en fait, c'est pour simuler l'extension d'une nébuleuse planétaire).

au fait: c koi la différence entre _root et mclip?dsl, j'y connait rien...
0
MrdJack Messages postés 146 Date d'inscription jeudi 22 avril 2004 Statut Membre Dernière intervention 8 mars 2008 2
16 févr. 2005 à 13:23
_root c'est la scene principale, c'est la que tu peux déclarer toutes tes variables globales (c'est la "racine" de ton projet)



un Movie clip est un objet que tu peux réutiliser plusieurs fois...

donc dans un movieclip, tu peux utiliser this[] pour dire que la
variable que tu souhaite utiliser est dans cet objet ("this" signifie
"celui là")



tu peux donc récupérer la variable comme ceci : "this.variable" ou "_root.variable"

les crochets servent uniquement lorsque le nom de la variable est un composé de texte et d'une ou plusieures autres variables



après ya plusieurs autre endroits possibles mais vaut mieux en rester là pour ne pas t'embrouiller.




@++



Mrdjack
0
aze555666 Messages postés 208 Date d'inscription mardi 13 avril 2004 Statut Membre Dernière intervention 26 janvier 2009
16 févr. 2005 à 15:21
merci.
ça à l'air de fonctionner avec _root .
Au fait, pour le rayon du cercle, je suis au courant, mais en fait, a et b correspondent à des coordonnées de vecteurs pour déplacer les points, que je recalcule à chaque instant pour redéplacer un peu le point : au bout de quelques secondes, ça devrait ressembler à quelquechose. (en fait, je charche à simuler l'extension d'une nébuleuse planétaire, perturbée par la masse d'une étoile double)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
aze555666 Messages postés 208 Date d'inscription mardi 13 avril 2004 Statut Membre Dernière intervention 26 janvier 2009
16 févr. 2005 à 15:41
oups, dsl, mon pc voulait pas afficher la suite, alors g cru que le message était pas passé: j'ai reposté, ça fait moche.

sinon, j'ai fait avec _root, mais quand j'essaye de tester l'anim, l'écran reste noir! pas un seul point n'apparait.

voila le code complet:
var nb_points = 400;
var m1 = 1;
var m2 = 5;
var d = 100;


for(var i=0;i<nb_points;i++){
_root["a"+i] = cos(i*3.1415926536/200);
_root["b"+i] = sin(i*3.1415926536/200);
}


for(var i=0;i<nb_points;i++) {
_root.attachMovie("point", "point"+i, i); //on duplique le symbole. Les points crées auront comme nom point0, point1,...
}


for(var i=0;i<np_points;i++){
_root["point"+i]._x = 300; //position en x
_root["point"+i]._y = 300; //position en y
}

setInterval(reposition, 500); //appelle la fonction reposition toutes les secondes = 1000 millisecondes


function reposition() {
for(var i=0;i<nb_points;i++) {
_root["point"+i]._x = _root["point"+i]._x+_root["a"+i]; //position en x
_root["point"+i]._y = _root["point"+i]._y+_root["b"+i]; //position en y
}
for(var i=0;i<nb_points;i++) {
//là un calcul pour additionner des vecteurs utilisant les variables m1 m2 et d
//de sorte à changer les varibles a0....b399, pour déplacer les points de façon différnente
// la fois suivante.
}
}
0
pegase31 Messages postés 6138 Date d'inscription dimanche 21 décembre 2003 Statut Modérateur Dernière intervention 4 septembre 2013 11
16 févr. 2005 à 18:43
il y a des erreurs dans ton code :

_root["a"+i] = cos(i*3.1415926536/200);

Il existe des méthodes MAth qui sont bien plus utiles que ce que tu utilises :

- Math.cos : car "Cos" tout seul est du Flash 5 et n'est plus recommandé actuellement
- Math.PI : qui donne la valeur de PI, plutôt que d'utiliser un nombre plus ou moins exacte ...

Peg'
0
aze555666 Messages postés 208 Date d'inscription mardi 13 avril 2004 Statut Membre Dernière intervention 26 janvier 2009
16 févr. 2005 à 21:06
merci, j'ai fait les modifs, mais ça ne change rien, de plus, flash mx ne trouve aucune erreur dans le code.
0