Quelques conseils pour simplifier1 ou deux fonctions

Résolu
Signaler
Messages postés
209
Date d'inscription
mercredi 26 mai 2004
Statut
Membre
Dernière intervention
27 janvier 2008
-
Messages postés
209
Date d'inscription
mercredi 26 mai 2004
Statut
Membre
Dernière intervention
27 janvier 2008
-
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

Messages postés
842
Date d'inscription
dimanche 24 novembre 2002
Statut
Membre
Dernière intervention
2 juillet 2007

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 !
Messages postés
209
Date d'inscription
mercredi 26 mai 2004
Statut
Membre
Dernière intervention
27 janvier 2008

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;
}
Messages postés
209
Date d'inscription
mercredi 26 mai 2004
Statut
Membre
Dernière intervention
27 janvier 2008

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