Un script lent dans le code source

cs_hamdouss Messages postés 23 Date d'inscription jeudi 6 novembre 2003 Statut Membre Dernière intervention 12 février 2005 - 9 févr. 2005 à 18:07
pegase31 Messages postés 6138 Date d'inscription dimanche 21 décembre 2003 Statut Modérateur Dernière intervention 4 septembre 2013 - 11 févr. 2005 à 18:04
Salut à tous,
Je suis en train de travailler sur un problème de recherche opérationnelle. Tout est presque fini et je partagerai la source bientôt.
L'algorithme que j'utilise nécessite un certain nombre d'itéraitions qui augmente si la taille du problème est importante. On sait que le Flash Player affiche un message d'erreur (aprés 15 secondes je crois) si on ne sort pas de la boucle pour se protégér d'une éventuelle boucle infinie. "un script de cette animation ralentit l'éxecution de Flash Player....Souhaitez-vouz abandonner l'exécution du script ?".
Je veux savoir s'il y a un truc ou une ligne que je peux ajouter pour empêcher l'affichage de ce message, autrement dit pour que le Flash Player 's'en foute' des scripts lents.
Merci d'avance

10 réponses

pegase31 Messages postés 6138 Date d'inscription dimanche 21 décembre 2003 Statut Modérateur Dernière intervention 4 septembre 2013 12
9 févr. 2005 à 18:17
alors pour précision, et après test, Flash considère une boucle comme infinie après 25000 instructions exécutées sans changement de Frame. De plus, ce message d'erreur fonctionne sous Flash, mais pas sous le player ... à toi de tester !

Peg'
0
shubenka Messages postés 759 Date d'inscription mercredi 11 décembre 2002 Statut Membre Dernière intervention 12 novembre 2008
9 févr. 2005 à 18:24
ca depend de la rapidité de la machine aussi
<hr>
http://www.c0rben.com
0
cs_hamdouss Messages postés 23 Date d'inscription jeudi 6 novembre 2003 Statut Membre Dernière intervention 12 février 2005
10 févr. 2005 à 18:27
Merci pour vos réponses,
Lorsque j'exécute mon .swf, le message s'affiche encore !!!
Ce que je veux c'est qu'il ne s'affiche plus, et qu'il attende la fin de la boucle.
0
shubenka Messages postés 759 Date d'inscription mercredi 11 décembre 2002 Statut Membre Dernière intervention 12 novembre 2008
10 févr. 2005 à 18:37
non il n'y a pas moyen decoupe ton algo
avec un set interval par exemple
ou un onEnterFrame
exemple
i=0;
nbrItération=1000; //par exemple
function onEnterFrame(){

for(var j=i;i<nbrItération;j++){
//ce que tu doit faire
.....
//
}
i+=nbrItération;
}
voila avec un truc dans ce style tu devrai t'en sortir


<HR>
http://www.c0rben.com
0

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

Posez votre question
shubenka Messages postés 759 Date d'inscription mercredi 11 décembre 2002 Statut Membre Dernière intervention 12 novembre 2008
10 févr. 2005 à 18:55
evidement il faut faire m'étre une condition pour que i n'augmente pas
indéfiniment et a la rigeur pour faire propre de détruire le
onEnterFrame puis d'autre truc auquel je ne pense pas forcement

<hr>
http://www.c0rben.com
0
cs_hamdouss Messages postés 23 Date d'inscription jeudi 6 novembre 2003 Statut Membre Dernière intervention 12 février 2005
11 févr. 2005 à 08:21
j'ai pas envie de couper mon algo, loin de là. Je veux que l'utilisateur ne soit pas obligé de cliquer sur 'non' (il ne souhaite pas interrompre le script) à chaque fois que ça apparaisse.
0
cs_hamdouss Messages postés 23 Date d'inscription jeudi 6 novembre 2003 Statut Membre Dernière intervention 12 février 2005
11 févr. 2005 à 08:22
je crois que je vais être obligé de découper mon script sur 2 frames (avec la deuxième qui renvoie sur la première) en mettant une condition d'arrêt sur la deuxième.
0
pegase31 Messages postés 6138 Date d'inscription dimanche 21 décembre 2003 Statut Modérateur Dernière intervention 4 septembre 2013 12
11 févr. 2005 à 11:25
C'est exactement le même effet et ça t'obliges de toutes façons à couper ton code en 2 ...
Shubenka t'as proposé une solution simple et surtout propre .. après, à toi de t'en servir .. ou pas !

Peg'
0
cs_hamdouss Messages postés 23 Date d'inscription jeudi 6 novembre 2003 Statut Membre Dernière intervention 12 février 2005
11 févr. 2005 à 15:54
J'avoue ne pas trop comprendre la solution de Shubenka. Pourquoi i doit être incrémenté de nbrIteration(et à l'extérieur de la boucle for en plus ). Je suppose que le i doit être incrémenté à l'intérieur de la boucle pour que celle-ci s'exécute nbrItération fois.Et si mon nombre d'itération dépasse le nombre max toléré par le player, celui-ci m'affiche encore le message.
En tout cas j'ai déjà déposé la source et j'ai découpé le code sur 2 images. L'inconvénient c'est que la vitesse de calcul diminue vu qu'entre la dernière instruction de l'image 1 et la première de l'image 2, il y a la cadence de l'animation qui est bornée par 120 image/sec.
0
pegase31 Messages postés 6138 Date d'inscription dimanche 21 décembre 2003 Statut Modérateur Dernière intervention 4 septembre 2013 12
11 févr. 2005 à 18:04
pour la cadence d'animation, tu aurais du lire un des dernier messages du Form, tu y aurais lu que peu de machines sont capable de tenir une cadence supèrieure à 30 img/sec ... et donc 120 c'est de l'utopie pure ...

Mais je pense trés sèrieusement que tu devrais voir pour un autre langage si tu veux éviter de faire une véritable usine à gaz .. Flash est un langage de programmation plutôt "Basique" car il est interprété et encapsulé dans un Active-X .. sans parler du fait qu'il ne se base essentiellement sur la puissance du CPU... Je ne sais pas ce que tu veux faire, mais Flash n'est apparement pas fait pour ça !

Peg'
0
Rejoignez-nous