Quelques conseils pour simplifier1 ou deux fonctions

Résolu
cs_fanfouer Messages postés 209 Date d'inscription mercredi 26 mai 2004 Statut Membre Dernière intervention 27 janvier 2008 - 27 janv. 2006 à 22:32
cs_fanfouer Messages postés 209 Date d'inscription mercredi 26 mai 2004 Statut Membre Dernière intervention 27 janvier 2008 - 27 janv. 2006 à 23:50
Bonsoir,
Je continue a developper mon sujet et je me rend conte que mon code prend beaucoup de lignes pour ce qu'il permet de faire...
C'est pourquoi je laisse deux ou trois fonctions en dessous pour que si quelqu'un a le temps, me dise si il y a pas une maniere plus simple d'ecrire ces dernieres. Bonne lecture!


/*FONCTION "gestionCorePoste">input : Poste : Le nom du poste surlequel la manoeuvre doit etre effectuée ; core : Niveau du core a verfier


=>fonction : A chaque execution de la fonction, on creer les liste des circuit rataché a tel ou tel core du poste et on affecte l'affichage du poste en conséquence (si aucun circuit sur un core, on desactive celui-ci)


=>output : none


*/


function gestionCorePoste (Poste){


PosteCircuit_Array_core2 = _root.DefineLinks(Poste, 2, undefined);//array avec les circuits du core2


PosteCircuit_Array_core3 = _root.DefineLinks(Poste, 3, undefined);//array avec les circuits du core3


//On verifie qu'il reste au moin 1 circuit sur chaque core sinon on les efface


if (PosteCircuit_Array_core2.length == 0){


eval("_root.carte."+Poste).Niv2_core._visible = false;


eval("_root.carte."+Poste).coreCharge[2] = 0;


}else{


eval("_root.carte."+Poste).Niv2_core._visible = true;


}


if (PosteCircuit_Array_core3.length == 0){


eval("_root.carte."+Poste).Niv3_core._visible = false;


eval("_root.carte."+Poste).coreCharge[3] = 0;


}else{


eval("_root.carte."+Poste).Niv3_core._visible = true;


}


}




Celle la, il y a un petit probleme, lorsque la derniere condition est vraie (chargeCircuit > limiteChargeCircuit), et ben il m’arrete la boucle dès le premier passage ! je ne comprend pas pourquoi ca fait ca… a vous de toruvé si vous y arrivez


/*FONCTION "Aleas_reportCharge",>input : Circuit_Array : L'array du circuit


=>fonction : Cette fonction applique un report de charge : lorsqu'un circuit déclenche, la charge qu'il fesait trnasiter est équitablement répartie entre tous les circuits restant raccordé au poste amont


=>output : none


*/


function Aleas_reportCharge (Circuit_Array){


PosteCircuit_Array = _root.DefineLinks (Circuit_Array[0].posteArrivee, Circuit_Array[0].coreArrivee, "arrivee");


//Premiere partie : definition d'un listing provisoire des circuits touchés par le report de charge


PosteCircuit_Array_length = PosteCircuit_Array.length;


AjoutCharge = Math.round(eval("_root.carte."+Circuit_Array[0].nom+"_ligne1").charge/(PosteCircuit_Array_length -1))


for(i=0;i


if (PosteCircuit_Array[i].nom != Circuit_Array[0].nom){


eval("_root.carte."+PosteCircuit_Array[i].nom+"_ligne1").charge += AjoutCharge


chargeCircuit = eval("_root.carte."+PosteCircuit_Array[i].nom+"_ligne1").charge;


limiteChargeCircuit = eval("_root.carte."+PosteCircuit_Array[i].nom+"_ligne1").limiteCharge


if (chargeCircuit > limiteChargeCircuit){


Circuit_Array_surcharge = _root.defineCircuitName (PosteCircuit_Array[i].posteDepart, PosteCircuit_Array[i].posteArrivee, PosteCircuit_Array[i].numCircuit);


_root.Aleas_surcharge (Circuit_Array_surcharge, "20");


}


}


}


}



Ce n'est que deux fonction de mon code, les deux qui me paraissait les moin bine optimisée en fait donc si vous pouviez y faire quelque chose, ce serait simpas... merci!!

3 réponses

SuperDevy Messages postés 842 Date d'inscription dimanche 24 novembre 2002 Statut Membre Dernière intervention 2 juillet 2007
27 janv. 2006 à 23:16
Quelques petits conseils :
<ol><li>Remplace les eval("_root.carte."+Poste) par _root.carte[Poste], c'est sémantiquement meilleur, et plus facile à comprendre et à interpréter pour FlashPlayer.</li><li>Utilise des noms de variables plus courts : proscrit les _.
Tu peux par exemple remplacer PosteCircuit_Array_core3 par pcCore3.</li><li>Lit ça : Pourquoi ne pas utiliser _root ?</li><li>Dans tex expressions logiques, remplace and par && et or par ||</li></ol>Voila, c'est déjà pas mal... Bon courage :)

SuperDevy, c la !
3
cs_fanfouer Messages postés 209 Date d'inscription mercredi 26 mai 2004 Statut Membre Dernière intervention 27 janvier 2008
27 janv. 2006 à 22:54
Autre exemple encore plus bete : j'ai fait deux fois la meme chose et j'aimerai rassembler tout ça :

PosteCircuit_Array_core2 = _root.DefineLinks(Poste, 2, undefined);//array avec les circuits du core2
PosteCircuit_Array_core3 = _root.DefineLinks(Poste, 3, undefined);//array avec les circuits du core3
if (PosteCircuit_Array_core2.length == 0){
eval("_root.carte."+Poste).Niv2_core._visible = false;
eval("_root.carte."+Poste).coreCharge[2] = 0; }else if (PosteCircuit_Array_core2.length 1 and coreLevel 2){
_root.Aleas_declenchement(Circuit_Array);
}else{
eval("_root.carte."+Poste).Niv2_core._visible = true;
}
if (PosteCircuit_Array_core3.length == 0){
eval("_root.carte."+Poste).Niv3_core._visible = false;
eval("_root.carte."+Poste).coreCharge[3] = 0; }else if (PosteCircuit_Array_core3.length 1 and coreLevel 3){
_root.Aleas_declenchement(Circuit_Array);
}else{
eval("_root.carte."+Poste).Niv3_core._visible = true;
}
0
cs_fanfouer Messages postés 209 Date d'inscription mercredi 26 mai 2004 Statut Membre Dernière intervention 27 janvier 2008
27 janv. 2006 à 23:50
Merci pour tous ces conseils et je trouve pas mal le truc du _root.carte[poste], ca raccourci pas mal.
Pour ce qui est de "_root", deja je ne connaissait pas le site et celui la je le garde en favoris mais je ne peut ma passer de ca car tous le code est dans une fonction, et est par conséquent executé dans divers points du programme, a des niveaux differants avec des clip parents differants. Je ne peut donc pas mettre de chemin relatifs dans un code qui n'est pas executé dans le meme clip tout le temps.
En ce qui concerne le nommage de mes variables, il est un peu long c'est vrai et je pensait donner a mes variables une identité facile a reconaitre si je donnait un nom assé detaillé. Par exemple, le suffixe _Array me sert a identifier les Array dans la code.
Ainsi, le Circuit_Array récurent tout au long du scritp veu tout de suite dire quelque chose pour moi.

Encore merci en tout cas
0