Partage
  • Partager sur Facebook
  • Partager sur Twitter

Enlevé

Sujet résolu
Anonyme
    22 mars 2011 à 19:07:47

    enlevé

    -
    Edité par Anonyme 22 février 2023 à 19:24:47

    • Partager sur Facebook
    • Partager sur Twitter
      22 mars 2011 à 19:59:10

      Es-tu en local ou en ligne ?
      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        22 mars 2011 à 20:22:36

        deleted

        -
        Edité par Anonyme 22 février 2023 à 19:25:02

        • Partager sur Facebook
        • Partager sur Twitter
          22 mars 2011 à 21:11:32

          Je sais bien, mais avec les canvas, j'ai parfois constaté des problèmes de sécurité lorsque tu es en local. (Et qui disparaissent dès que tu arrives sur un serveur (même un serveur local comme localhost))

          C'est pour ça que je posais la question.
          Je vais jeter un oeil de plus près à ton problème.

          EDIT : Essaye de déplacer tes lignes 9 à 34 entre les lignes 6 et 7.
          • Partager sur Facebook
          • Partager sur Twitter
          Anonyme
            22 mars 2011 à 21:19:55

            deleted

            -
            Edité par Anonyme 22 février 2023 à 19:25:09

            • Partager sur Facebook
            • Partager sur Twitter
              22 mars 2011 à 21:23:40

              En fait, tu ne dessines l'image sur le canvas, qu'une fois l'image entièrement chargée (et tu as raison).

              Par contre, tu dessines le canvas sur les tiles sans attendre le chargement.

              En clair, tes lignes 9 à 34 sont exécutées avant ta ligne 6.

              Résultat, tu ne fais que dessiner des morceaux d'un canvas qui est vide (puisque l'image n'a pas encore été dessinée dessus). Tu me suis ? :euh:

              Pense à mettre ton sujet en résolu à l'aide du bouton approprié ;)
              • Partager sur Facebook
              • Partager sur Twitter
              Anonyme
                22 mars 2011 à 21:25:39

                deleted

                -
                Edité par Anonyme 22 février 2023 à 19:25:24

                • Partager sur Facebook
                • Partager sur Twitter
                  22 mars 2011 à 21:30:14

                  Ce chargement infini est dû à la magnifique fonction qu'est document.write().

                  Son comportement diffère selon le moment où elle est utilisée...
                  C'est pourquoi il est généralement conseillé de se passer de cette fonction (Cf Bonnes pratiques JavaScript).

                  Si vraiment tu y tiens, ajoutes un document.close() une fois que tu as fini de l'utiliser. (Mais je te conseille plutôt de créer tes canvas avec le DOM.)
                  • Partager sur Facebook
                  • Partager sur Twitter
                  Anonyme
                    22 mars 2011 à 21:46:10

                    deleted

                    -
                    Edité par Anonyme 22 février 2023 à 19:25:30

                    • Partager sur Facebook
                    • Partager sur Twitter
                      22 mars 2011 à 21:53:36

                      Non. Avec innerHTML, le code inséré est parsé immédiatement, donc si les paires de balises ne s'ouvrent/ferment pas correctement, le parseur agit comme à son habitude (comme si tu les avais écrites ainsi dans ton code source).

                      Pour ton canvas, plus clair et aussi simple qu'innerHTML selon moi, tu devrais utiliser le DOM :

                      ligne = ligne + 1;
                      tile = document.createElement('canvas');
                      tile.id = 'tile' + col + '-' + ligne;
                      (function(col, ligne) {
                      	tile.onclick = function() {
                      		chooseTile(col, ligne);
                      	};
                      }(col, ligne));
                      tile.width = tilesWidth;
                      tile.height = tilesHeight;
                      // Insertion de l'élément à la fin du body
                      // (ou ailleurs si tu le souhaites)
                      document.body.appendChild(tile);
                      
                      // tile.style...
                      


                      La seule difficulté étant la closure utilisée autour du onclick pour préserver les valeurs des variables col et ligne à l'intérieur de la fonction... (je rentre pas dans les détails, c't'un peu complexe).
                      • Partager sur Facebook
                      • Partager sur Twitter
                      Anonyme
                        22 mars 2011 à 22:02:24

                        deleted

                        -
                        Edité par Anonyme 22 février 2023 à 19:25:35

                        • Partager sur Facebook
                        • Partager sur Twitter

                        Enlevé

                        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                        • Editeur
                        • Markdown