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 :

Grille clickable avec fabric.js


Sujet :

JavaScript

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 37
    Points : 62
    Points
    62
    Par défaut Grille clickable avec fabric.js
    Bonjour, je cherche à créer un quadrillage sur un canvas ayant une image de fond.

    Les cases font 25x20 et je veux que lorsque je clique sur une case, un texte avec les coordonnees de la case s'affiche au dessus de cette dernière.

    A terme les cases ne doivent pas être visible mais pour l'exemple j'en dessine les contours.

    Voici mon code:
    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
    var canvas = new fabric.Canvas('carte');
        canvas.selection = false;
        // taille du canvas 720x376
        var nbLigne = parseInt(376 / 20);
        var nbColonne = parseInt(720 / 25);
        console.log(nbLigne);
        console.log(nbColonne);
     
        for (ligne = 0; ligne < nbLigne-2; ligne++)
        {
            for (colonne = 0; colonne < nbColonne; colonne++)
            {
                var rect = new fabric.Rect({
                    left: 8+colonne*25,
                    top: 6+ligne*20,
                    width: 25,
                    height: 20,
                    selectable: false,
                    fill: 'rgba(0,0,0,0)',
                    stroke: 'green',
                    strokeWidth: 1
                });
                canvas.add(rect);
                rect.on('mouseup', function () {
     
                    var chaine=/*"coucou";*/ligne + "x" + colonne;
                    console.log(chaine);
                    var texte = new fabric.Text(
                            chaine,
                            {
                                left: rect.left,
                                top: rect.top - 10,
                                fontFamily: 'Comic Sans',
                                fontSize: 10,
                                backgroundColor: 'white',
                                color: 'black'
                            }
                    );
     
                    canvas.add(texte);
                });
            }
        }
    Les zones sont biens définies, mais le texte n'affiche toujours que les coordonnees de la derniere case au dessus de cette derniere, peut importe sur quelle case je clique, je texte des coordonnées de la derniere case s'affiche au dessus de la derniere case.

    Où est mon erreur?

    Merci d'avance pour vos réponses.

  2. #2
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 959
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 122
    Points
    44 122
    Par défaut
    Bonjour,
    au moment de l’exécution de la fonction placée sur l'écouteur rect.on('mouseup', function () c'est le dernier l'objet rect crée qui est utilisé.
    Tu aurais meilleur compte dans cette fonction d'utiliser le thisqui fait référence à l'objet appelant le gestionnaire d'événement.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    var obj_concerne = this;
    var texte = new fabric.Text(chaine, {
      left: obj_concerne.left,
      top: obj_concerne.top - 10,
      fontFamily: 'Comic Sans',
      fontSize: 10,
      backgroundColor: 'white',
      color: 'black'
    }

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 37
    Points : 62
    Points
    62
    Par défaut
    ok, c'est bon, merci pour l'aide.

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

Discussions similaires

  1. Problème avec fabrication de timestamp
    Par jaaf64 dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 31/10/2012, 17h29
  2. Problème grille dynamique avec SurfaceView
    Par VinceSSJ dans le forum Composants graphiques
    Réponses: 12
    Dernier message: 08/04/2012, 01h08
  3. Réponses: 3
    Dernier message: 12/06/2011, 20h08
  4. Widget perso : Une grille 2D avec 3 Scrollviews
    Par odissey dans le forum Android
    Réponses: 5
    Dernier message: 16/04/2011, 11h16
  5. Réponses: 4
    Dernier message: 01/03/2009, 13h07

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