HTML 5 Canvas



  • Hallo,

    Ich versuche gerade mit HTML 5 Canvas ein Schachbrett auszugeben. Leider funktioniert das nicht wie gewollt, es erscheint bloss ein einziges Feld oben links (braun).

    Hat vielleicht irgend jemand eine Idee?

    Vielen Dank im vorraus!

    <html>
     <head>
      <script type="text/javascript">
        // This function draws a 8 x 8 chess board using canvas that were defined in the body tag
        function drawChessBoard(startPosX, startPosY, width, height) {
          var colors = new Array("rgb(255, 255, 200)", "rgb(160, 82, 45)");
          var currentColor = 0;
    
          for (var i = 0; i < 8; i++) {
            for (var j = 0; j < 8; j++) {
              var currentField = document.getElementById(i + '' + j);
              var currentFieldCanvas = currentField.getContext('2d');
              currentFieldCanvas.fillStyle = colors[currentColor];
    		  currentFieldCanvas.fillRect(startPosX + width*i, startPosY + height*j, 50, 50);
              currentColor = (currentColor==0?1:0);
            }
          }
    	  alert("That's it, yo");
        }
      </script>
     </head>
     <body onload="drawChessBoard(0, 0, 50, 50);">
      <?php
       for ($i = 0; $i < 8; $i++) {
         for ($j = 0; $j < 8; $j++) {
           echo '<canvas id="' . $i . $j . '" width="50" height="50"></canvas>';
    	   echo "ID: " . $i . $j;
    	 }
       }
      ?>
     </body>
    </html>
    


  • Liegt an deinem JavaScript. Wieso eig. das JavaScript?

    :schland:



  • PRIEST schrieb:

    Liegt an deinem JavaScript. Wieso eig. das JavaScript?

    :schland:

    Siehst du denn den Fehler?

    Gibt es denn sonst eine Variante, wie ich auf die Canvas zugreifen kann in einem Loop?



  • Ich verstehe halt gerade nicht wieso du zum zeichnen javascript benötigst?

    <?php
      $var = 1;
       for ($i = 0; $i < 8; $i++) {
       	echo '<br/>';
         for ($j = 0; $j < 8; $j++) {
           if($var == 0){
           		echo '<canvas id="' . $i . $j . '" style="background:black; width:50px; height:50px;">' . 'ID: ' . $i . $j . '</canvas>' . "\n";
       		}else{
       	  		 echo '<canvas id="' . $i . $j . '" style="background:white; width:48px; height:48px; border: 1px solid black;">' . 'ID: ' . $i . $j . '</canvas>' . "\n";
       	   }
       	   	($var == 0) ? $var = 1 : $var = 0;
         }
         ($var == 0) ? $var = 1 : $var = 0;
       }
      ?>
    

    Edit:: Achja wegen dem "Fehler" - onload macht keinen Sinn wenn du die Canvas erst erstellst. Da ist die Funktion schneller als die Canvas überhaupt existieren 🙂
    Edit2:: Jetzt schreib ichs doch noch dazu :D. Am besten packst du die Canvas auch noch in einen Container und floatest die einzelnen Felder. Besser als das <br/>. Und natürlich lieber mit CSS-Klassen arbeiten. ^^ .. usw. naja is ja nur ein Beispiel jetzt.

    :schland:


Log in to reply