Previous Contents Next

D   Pages dynamiques javascript

D.1   Page HTML

Voici un exemple de page HTML5 utilisant des canvas pour afficher des disques dont la couleur peut être modifiée par un simple clic. Cette page utilise un script javascript disque.js présenté plus loin.
<!DOCTYPE html>
<html>
  <head> <title>LEDs</title> </head>
  <body onload="dessinDisques();">
  <script language="javascript" src="disques.js"> </script>
  <canvas id="led0" width="20" height="20" onclick="changeCouleur(0);"></canvas>
  <canvas id="led1" width="20" height="20" onclick="changeCouleur(1);"></canvas>
  <canvas id="led2" width="20" height="20" onclick="changeCouleur(2);"></canvas>
  <canvas id="led3" width="20" height="20" onclick="changeCouleur(3);"></canvas>
  </body>
</html>

D.2   Script javascript

Voici le script javascript utilisé par la page HTML5 précédente. Les dessins sont effectués en utilisant la technologie des canvas.
// Constantes
var TAILLE=20;
var DECALAGE=5;
var SPECULAIRE=3;

// Variables globales
var couleurs=['green','green','green','green'];

// Fonction de dessin de disque
function dessinDisque(id){
/* Récupération du canvas */
var canvas=document.getElementById('led'+id);
var context=canvas.getContext('2d');
/* Création d'un dégradé de couleur */
var gradient=context.createRadialGradient(
  TAILLE/2-DECALAGE,TAILLE/2-DECALAGE,SPECULAIRE,
  TAILLE/2-DECALAGE,TAILLE/2-DECALAGE,TAILLE+DECALAGE);
gradient.addColorStop(0,'white');
gradient.addColorStop(0.75,couleurs[id]);
/* Dessin du disque */
context.beginPath();
context.arc(TAILLE/2,TAILLE/2,TAILLE/2,0,2*Math.PI,false);
context.fillStyle=gradient;
context.fill();
/* Tracage du cercle pour lissage */
context.strokeStyle='white';
context.lineWidth = 2;
context.stroke();
}

// Fonction de dessin des disques
function dessinDisques(){
var i;
for(i=0;i<4;i++) dessinDisque(i);
}

// Fonction de modification de couleurs
function changeCouleur(id){
if(couleurs[id]=='green'){couleurs[id]='red';}
else{couleurs[id]='green';}
dessinDisque(id);
}

Previous Contents Next