IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Comment simplifier l'appel répétitif d'une fonction paramétrée ?


Sujet :

JavaScript

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2013
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 141
    Points : 98
    Points
    98
    Par défaut Comment simplifier l'appel répétitif d'une fonction paramétrée ?
    Bonjour,

    Actuellement j'ai créer une fonction paramétré suivante:
    draw(X,Y,L);

    Celle-ci est intégré dans une autre fonction avec des conditions if, après plusieurs test j'ai réussi à obtenir quelque ce que je voulais faire, seul soucis, mon code javascript qui en résulte est très "cochon" car très dense, pour vous donner un exemple en voici une partie:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    function diapo(){
    if(L>=1){
    var draw1=new draw(0,0,L1);
    L1++;
    }
     
    if(L>=15){
    var draw2=new draw(30,0,L2);
    var draw3=new draw(0,17,L2);
    L2++;
    }
     
    if(L==30){
    L1=1;
    var draw6=new draw(60,0,L1);
    var draw4=new draw(30,17,L1);
    var draw5=new draw(0,34,L1);
    L1++;
    }
    if(L>30){
     
    var draw6=new draw(60,0,L1);
    var draw4=new draw(30,17,L1);
    var draw5=new draw(0,34,L1);
    L1++
    }
     
     
    if(L==45){
    L2=1;
    draw1=new draw(90,0,L2);
    draw2=new draw(60,17,L2);
    draw3=new draw(30,34,L2);
    var draw7=new draw(0,41,L2);
    L2++;
    }
    if(L>45){
     
    draw1=new draw(90,0,L2);
    draw2=new draw(60,17,L2);
    draw3=new draw(30,34,L2);
    var draw7=new draw(0,41,L2);
    L2++
    }
    ...
    Comme vous le remarquerez ici la fonction draw() est appellée une fois de plus à chaqu'une des conditions, de plus:

    - l'attribut X: est incrémenté de 30 à chaque passage d'une nouvelle condition
    - l'attribut Y: est incrémenté de 17 à chaque passage d'une nouvelle condition
    et une relation existe entre les 2 puisque si X augmente de 30, Y diminue de 17 et vice-versa.

    Mon soucis est donc que à la fin de mon code je me retrouve avec une condition qui apeller plus de 10 fois ma fonction draw, ce qui nous donne, un truc de ce genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    if(L>320){
    var draw1=new draw(290,0,L2);
    var draw1=new draw(260,17,L2);
    var draw1=new draw(230,34,L2);
    var draw1=new draw(210,51,L2);
    var draw1=new draw(180,68,L2);
    var draw2=new draw(150,82,L2);
    var draw3=new draw(120,99,L2);
    var draw5=new draw(90,116,L2);
    var draw6=new draw(60,133,L2);
    var draw7=new draw(30,150,L2);
    var draw8=new draw(0,167,L2);
    L2++;
    }
    Sans compté qu'il s'agit d'une seul condition ici et que au dessus de celle-ci il y a d'autre condition avec aussi la fonction draw qui est appellé plusieurs.

    En bref, cela fait vraiment dense et "moche" comme code.

    Et donc je voulais savoir si quelqu'un avait une idée pour simplifier ce code à l'aide d'une fonction ou une boucle qui "incrémenterais" l'appelle à la fonction draw.

    D'avance merci.

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 669
    Points
    66 669
    Billets dans le blog
    1
    Par défaut
    avec des array et des boucles et un switch
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2013
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 141
    Points : 98
    Points
    98
    Par défaut
    L'insertion de la fonction draw() dans un array, ne fonctionne pas. En effet la fonction draw() à un lien avec un canvas "caché", hors lorsque j'essai de mettre la fonction dans l'array, mon navigateur (firefox) me fais apparaitre ce que j'ai dans le tableau .

  4. #4
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 669
    Points
    66 669
    Billets dans le blog
    1
    Par défaut
    l'idée n'était pas de mettre la fonction draw dans un array , mais les coordonnées ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 128
    Points : 210
    Points
    210
    Par défaut
    Une petite Factory me semble tout indiqué :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    if(L>320){
    var draw1=new draw(290,0,L2);
    var draw1=new draw(260,17,L2);
    var draw1=new draw(230,34,L2);
    var draw1=new draw(210,51,L2);
    var draw1=new draw(180,68,L2);
    var draw2=new draw(150,82,L2);
    var draw3=new draw(120,99,L2);
    var draw5=new draw(90,116,L2);
    var draw6=new draw(60,133,L2);
    var draw7=new draw(30,150,L2);
    var draw8=new draw(0,167,L2);
    L2++;
    }
    pourrait s'écrire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    drawFactory(upper, layer){
    	var draws = [], arg2 = 0;
    	while(upper > -1){
    		draws.push(new draw(upper, arg2, layer));
    		upper -= 30;
    		arg2 += 17;
    	}
    	layer++;
    	return draws;
    }
     
    if(L>320) var draws = drawFactory(290, L2);

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2013
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 141
    Points : 98
    Points
    98
    Par défaut
    Un grand merci à toi TheGuy pour m'avoir aiguié avec ton code, j'ai enfin réussi à faire ce que je voulais.

    Car après plusieurs semaines de test sans succès, ton code m'a permis de me débloqué, comme quoi un peu de code vaut mieux qu'un long blabla

    Ce sujet est résolu pour moi et encore merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 8
    Dernier message: 25/06/2012, 19h05
  2. Réponses: 28
    Dernier message: 29/07/2006, 16h04
  3. Réponses: 8
    Dernier message: 02/02/2006, 18h13
  4. Réponses: 1
    Dernier message: 18/11/2005, 11h38
  5. Réponses: 4
    Dernier message: 01/07/2004, 19h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo