Partage
  • Partager sur Facebook
  • Partager sur Twitter

Lag canvas

Sujet résolu
    17 février 2019 à 20:38:08

    Bonjour,

    J'essaie actuellement de créer une sorte de Space Invaders, jusque là tout allait bien.

    J'ai donc créé mes boucliers (12 sous forme d'objets), mais lorsque je veux les dessiner sur le canvas, il se met à lagger et c'est injouable. Je ne comprends pas pourquoi dessiner 12 rectangles sur un canvas fait tout lagger.

    Merci d'avance.

    • Partager sur Facebook
    • Partager sur Twitter
      18 février 2019 à 8:57:29

      vérifie qu'il ne les affiche bien que 1 fois et pas 432 fois par élément, et test avec un seul objet pour voir ce qu'il te dis aussi
      • Partager sur Facebook
      • Partager sur Twitter

      la connaissance est une chose qui ne nous appauvrit pas quand on la partage.

      Mon GitHub

        18 février 2019 à 10:37:19

        Bonjour,

        Sans pouvoir voir le code, on ne peut pas te répondre. :)

        • Partager sur Facebook
        • Partager sur Twitter
        /!\ Si je cesse de répondre c'est parce que vous êtes venus poster sans avoir suivi les cours de base sur le sujet. /!\
          18 février 2019 à 11:07:50

          Bonjour,

          D'abord merci pour vos réponses. Effectivement j'ai déjà testé avec un seul objet et il n'y a aucun problèmes.

          Pour ce qui est du code la fonction drawBouclier est appellé toutes les 5 ms, (comme pour tous les décors du canvas), la voilà :

          function drawBouclier(){
          	// Dessin des boucliers
          	ctx.rect(bouclier1.x, bouclier1.y, bouclierSize, bouclierSize);
          	ctx.rect(bouclier2.x, bouclier2.y, bouclierSize, bouclierSize);
          	ctx.rect(bouclier3.x, bouclier3.y, bouclierSize, bouclierSize);
          	ctx.rect(bouclier4.x, bouclier4.y, bouclierSize, bouclierSize);
          	
          	ctx.rect(bouclier5.x, bouclier5.y, bouclierSize, bouclierSize);
          	ctx.rect(bouclier6.x, bouclier6.y, bouclierSize, bouclierSize);
          	ctx.rect(bouclier7.x, bouclier7.y, bouclierSize, bouclierSize);
          	ctx.rect(bouclier8.x, bouclier8.y, bouclierSize, bouclierSize);
          	
          	ctx.rect(bouclier9.x, bouclier9.y, bouclierSize, bouclierSize);
          	ctx.rect(bouclier10.x, bouclier10.y, bouclierSize, bouclierSize);
          	ctx.rect(bouclier11.x, bouclier11.y, bouclierSize, bouclierSize);
          	ctx.rect(bouclier12.x, bouclier12.y, bouclierSize, bouclierSize);
          	ctx.stroke();
          }

          Je n'ai pas mis de boucle pour l'instant pour pouvoir tester chaque rectangle.

          Merci d'avance pour votre aide.

          -
          Edité par Rayles 18 février 2019 à 11:17:46

          • Partager sur Facebook
          • Partager sur Twitter
            18 février 2019 à 16:00:19

            En fait, ce qui nous aiderait, ça serait que tu nous fournisse un codepen par exemple. Ce petit extrait de code ne nous aidera pas beaucoup. :euh: 

            Au passage, j'espère que tu utilises requestAnimationFrame, sinon tu risques d'avoir des sursauts et un framerate pas forcément fluide ou constant, quoi que tu fasses. Ah et encore mieux, si tu veux de la performance utilise plutôt du WebGL (enfin une lib qui repose dessus) que juste l'API Canvas de base. Mais pour aussi peu, elle ne devrait quand même pas ramer.

            -
            Edité par Genroa 18 février 2019 à 16:02:41

            • Partager sur Facebook
            • Partager sur Twitter
            /!\ Si je cesse de répondre c'est parce que vous êtes venus poster sans avoir suivi les cours de base sur le sujet. /!\
              18 février 2019 à 19:43:35

              Merci pour ton aide Genroa,

              Je vais me renseigner sur le requestAnimationFrame pour le mettre en place.

              Voici le code demandé

              -
              Edité par Rayles 18 février 2019 à 19:53:59

              • Partager sur Facebook
              • Partager sur Twitter
                19 février 2019 à 10:26:14

                Je crois que ton codepen ne fonctionne pas, la console fournit une floppée d'erreurs. :o
                • Partager sur Facebook
                • Partager sur Twitter
                /!\ Si je cesse de répondre c'est parce que vous êtes venus poster sans avoir suivi les cours de base sur le sujet. /!\
                  19 février 2019 à 14:42:01

                  Je n'ai pourtant aucune erreur quand je vais dessus o_O

                  Cependant, j'ai trouvé une solution. Plutôt que de dessiner un rectangle noir j'ai pris une image noir et je l'affiche en rectangle. Je n'ai plus aucun problèmes avec cette astuce. Même  si je me demande toujours pourquoi le fait de dessiner dessus faisait lagger.

                  Merci à tout ceux qui m'ont aidé. :)

                  -
                  Edité par Rayles 19 février 2019 à 14:49:05

                  • Partager sur Facebook
                  • Partager sur Twitter

                  Lag canvas

                  × 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