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 éviter le surplus de variables ?


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2013
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 141
    Par défaut Comment éviter le surplus de variables ?
    Bonjour,

    Actuellement j'ai créer un fonction draw(); qui permet de "dessinner" de facon sucessives des rectangles qui s'allongent en fonction du temps, pour ce faire, j'ai procéder comme ceci:

    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
    function draw(){
    	if(times>=0) {
    	var drw= new draw(0, Y1,20,168);
    	Y1--;	
    	}
    	if(times>=4) {
    	drw= new draw(20,Y2,20,168);	
    	Y2--;	
    	}
    	if(times>=8) {
    	drw= new draw(40,Y3,20,168);	
    	Y3--;	
    	}
    	if(times>=12) {
    	drw= new draw(60,Y4,20,168);	
    	Y4--;	
    	}
    	[...]
    }
    Comme vous pouvez le constatez je fais appelle à des variables Y1, Y2, Y3, Y4,.......
    Car il faut que durant le temps qui passe bon premier rectangle continu à "grandir" et que au bout d'un certain temps un nouveau rectangle apparait et "grandit" à son tour.

    De ce fait, je ne peut réutiliser la variable Y, d'ou l'obligation de d'appeller une nouvelle variable.

    Tout fonctionne très bien, seul peti tbémol, je me retrouve avec des variables allant de Y1 à Y25. Et donc je trouve ça "cochon" d'avoir 25 variables quasi identiques.

    Donc existe t'il un moyen de réduire le nombre de variable ?

    Si oui lequel ?

    d'avance merci.

  2. #2
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Par défaut
    Comme toujours, si tu es amené à copier-coller du code c'est qu'il peut être regroupé au sein d'une fonction ou d'un objet.

    Par contre il semble y avoir de gros soucis dans ton code, qu'est-ce que new draw alors que la fonction appelante porte ce nom ? D'où sortent toutes ces variables Y1, Y2 ? Et pourquoi réaffecter en permanence la variable drw que tu sembles ne jamais utiliser ?

    On utilise new pour instancier un nouvel objet à partir d'un prototype, là tu sembles appeler une fonction.

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

    Informations forums :
    Inscription : Janvier 2013
    Messages : 141
    Par défaut
    Citation Envoyé par SylvainPV Voir le message
    Comme toujours, si tu es amené à copier-coller du code c'est qu'il peut être regroupé au sein d'une fonction ou d'un objet.
    Citation Envoyé par SylvainPV Voir le message
    Et pourquoi réaffecter en permanence la variable drw que tu sembles ne jamais utiliser ?
    C'est ce que fait ma fonction draw(); il s'agit d'une fonction paramétré avec comme paramètre X,Y,L,T qui sont ensuite remplacé par des nombres en fonction de ce que je souhaite faire d'ou l'utilisation du new draw() car à chaque fois je veut "recréer" un dessin avec des paramètre changés. ici donc mon cas quand le temps passe le X se décale de 20 toutes les 4 secondes par exemple

    Citation Envoyé par SylvainPV Voir le message
    Par contre il semble y avoir de gros soucis dans ton code, qu'est-ce que new draw alors que la fonction appelante porte ce nom ?
    Non il y a pas de soucis, j'ai juste mal copiez mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    function colonne(){
    	if(times>=0) {
    	var drw= new draw(0, Y1,20,168);
    	Y1--;	
    	}
    [...]
    C'est mieux ainsi non

    Citation Envoyé par SylvainPV Voir le message
    D'où sortent toutes ces variables Y1, Y2 ?
    C'est là ou est tout mon problème d'ou ma question:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    var Y1,Y2,Y3,Y4,Y5,Y6,Y7 [...]
    Y1=Y2=Y3=[...]=168;
    Et oui mes variables Y sont des variables global instancier à 168, et donc la j'ai dù en créer autant que j'ai fait de if dans mon code car il s'agit de rectangle qui s'allonge en hauteur et donc je ne peut utiliser la même variable pour deux raisons:
    - la première est que le rectangle 2 qui apparaitra après le rectangle 1 va se retrouver avec une largeur initial égal à la largeur du rectangle 1 hors je souhaite que la largeur du rectangle 2 démarre à 0

    -Si à l'arriver du deuxième rectangle j'initialise le Y ben ces l'effet inverse qui se produit le rectangle 1 qui s'agrandit en fonction du temps va se retrouver à 0 dès que le rectangle 2 arrive;

    d'ou mon problème d'utiliser plusieur variable, et donc je cherche à éviter de faire "15 000" variables donc y aurait t'il un moyen decontrez cela ?

  4. #4
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Par défaut
    Il y a toujours une variable drw qui ne semble servir à rien et le new draw qui ne semble pas correspondre à un constructeur.

    Le mieux serait que tu nous donnes l'intégralité de ton code, en particulier le code de la fonction draw.

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

    Informations forums :
    Inscription : Janvier 2013
    Messages : 141
    Par défaut
    La n'est pas la question, même si syntaxiquement parlant ma variable drw et de faire new draw() ne sert à rien, mon sujet ici est que l'on m'aide à minimiser les variables Y et non à bien écrire mon code javascript.

    D'ou je reviens à cette question en prenant l'exemple suivant:

    Imaginons que l'on veut dessinner plusieurs rectangle les un a coté des autres en faisant varier leurs hauteurs en fonction du temps (cette haueur partant de 0 pour tous et augmente durant le temps qui passe), seul contrainte c'est que le "dessin" de ces rectangles doit donner une impression de marche d'escalier et donc:

    Au temps T=1:
    le rectangle n°1 à sa hauteur à 1
    le rectangle n°2 à sa hauteur à 0.

    Puis arrivent le temps T=2:
    le rectangle n°1 à sa hauteur à 2
    le rectangle n°2 à sa hauteur à 1
    le rectangle n°3 à sa hauteur à 0

    Et ainsi de suite, pour dessinner ces rectangles j'utilisent donc une variable H que j'incrémete de 1, ce qui nous donne:
    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
     
    var tps=0;
    var H=0;
    var H1=0;
     
    function temps(){
    //fionction qui incrémente var variable tps
    }
     
    if(tps>=0){
    H++;
    /*fonction dessine le rectangle n°1 en prenant la variable H comme hauteur*/
    }
    if(tps>=1){
    H1++;
    /*fonction dessine le rectangle n°2 en prenant la variable H1 comme hauteur*/
    }
    [...]
    En faisant cela mon rectangle grandis seul soucis c'est ci je rajoute une deuxième rectangle, la si je souhaite le faire démarrer plus tard à tps=1 par exemple, je ne peut prendre la variable H car elle aura deja avancer dans le temps d'ou l'obligation de recréer une variable H1 par exemple. Ainsi en faisant cela, pour 20 rectangle créés je me retrouve avec 20 variables H, donc c'est pas terrible d'ou ma question y a t'il un moyen de simplifier cette variable H pour éviant d'en faire 20 ?

  6. #6
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Par défaut
    Oui il y a un moyen très simple, c'est de manipuler la coordonnée interne à ton objet renvoyé par le constructeur draw. Seulement pour ça il faudrait qu'on sache ce qui se cache derrière

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 27/03/2011, 22h34
  2. Réponses: 2
    Dernier message: 17/04/2010, 14h22
  3. [Conception] Comment éviter les redondances d’une variable
    Par bilane dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 14/09/2006, 10h54
  4. Réponses: 4
    Dernier message: 28/07/2004, 10h42
  5. [eclipse 2.1][compilation] Comment éviter...
    Par ftrifiro dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 29/06/2004, 16h16

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