Vous pouvez me contacter via Facebook pour questions & suggestions :
Page Facebook relative à mon site
Si vous avez désactivez JavaScript dans votre navigateur, les "toiles" de la page vont s'afficher mais elles
vont rester désespérement vides ..
Le code de la partie HEAD de chaque page devient alors :
La partie HEAD contient aussi le conteneur STYLE, les balises META et TITLE.
Cette méthode permet un effacement partiel d'une forme.
La zone de dessin Canvas fait 400 par 400.
Il faut d'abord créer un carré (200 de côté) centré dans la zone de dessin et rempli de rouge.
Vous verrez par la suite que la méthode clearRect() est très utile en matière d'animation.
Mais comment déterminer les coordonnées de l'arête supérieure gauche de chaque rectangle d'effacement ?
Affichez la console du navigateur afin de lire les résultats d'instructions provisoires.
Nous allons maintenant dessiner le drapeau norvégien !
Je récupère dans les variables X et Y respectivement la largeur (640) et la hauteur (460) de ce deuxième canevas.
L'emploi de la POO permet d'obtenir des scripts plus lisibles, plus faciles à maintenir.
Les rectangles arrondis sont de plus en plus décalés et de plus en plus grands.
La balise CANVAS définit un répère cartésien de 600 par 300.
Un objet nommé "rectangle" est défini avec la syntaxe JSON.
On définit pour cet objet des propriétés et une méthode pour le dessiner.
Je crée un objet littéral nommé "rectangle" via la notation JSON.
Cet objet a 10 propriétés et une méthode (pour le dessiner).
Il suffit de modifier la définition de l'objet pour modifier radicalement
l'apparence du dessin.
Modifiez le script pour que ce dernier produise 10 carrés qui diminuent de 10px à chaque fois avec un décalage de 20 vers la gauche
et de 10 le haut ; le radius est toujours égal au quart de la largeur (ou hauteur).
En effet le premier carré doit être tout en bas à droite, faire 150 par 150 avec un radius de 150/4
Le rendu :
Remarque :
Canvas : méthode clearRect() - Canvas et POO
Dans ce chapitre j'évoque trois points importants :
Pourquoi utiliser la balise NOSCRIPT ?
Donc dès que votre page web contient un script, pensez à utiliser le conteneur NOSCRIPT pour afficher un message qui signale
éventuellement que ce dernier n'a pu être exécuté.
La méthode clearRect()
Exemple 1 : dessiner le drapeau de la Suisse
Le code correspondant
Commentaire du code
Puis il faut effacer une partie du rouge avec deux rectangles d'effacement : méthode clearRect(x,y,largeur, hauteur).
Donc ces deux zones retrouvent un fond blanc (couleur de fond de l'élément CANVAS).
La méthode clearRect() efface partiellement la couche supérieure pour retrouver
la couche en dessus.
Si vous voulez que la croix du drapeau soit de couleur rose il sufit de rajouter dans la balise CANVAS une règle
de style en ligne : ...style ="background : pink;" ...
Un peu de méthode
Si vous voulez être productif (coder vite et bien) je vous conseille de faire un croquis (sur une feuille de papier
millimétrée ou une feuille à petit carreaux) avant de coder proprement dit. Vous éviterez maints tâtonnements ...
Ci-dessous exemple de croquis :
Un deuxième exemple plus complexe
Le canevas fait 640 par 460 et le drapeau occupe toute la zone de dessin.
La procédure :
Le code correspondant
Je peux utiliser ces valeurs pour argumenter les méthodes fillRect(), clearRect(), etc.
Canvas et la POO
Ci-dessous un document HTML comprenant une "toile"
J'ai utilisé la POO pour écrire le script.
JavaScript et la POO - notation JSON
Le code du document
Le script
var canvas = document.getElementById("canvas");
var ctx = canvas.getContext("2d");
// création d'un objet nommé rectangle
var rectangle =
{
x: 0,
y: 0,
w : 100,
h : 50,
r : 8, //radius
vx : 12, // variation abcisse
vy : 6, // variation ordonnée
vw : 8, // variation width
vh: 4, // variation height
vr : 2, // variation radius
dessin: function ()
{
ctx.strokeStyle = "navy" ;
ctx.lineWidth = '4';
ctx.roundRect(this.x, this.y, this.w, this.h, [this.r]);
ctx.stroke();
},
}; // fin définition objet rectangle
for (i=0; i<=9; i++)
{
rectangle.x += rectangle.vx;
rectangle.y += rectangle.vy;
rectangle.w +=rectangle.vw ;
rectangle.h +=rectangle.vh ;
rectangle.r +=rectangle.vr;
rectangle.dessin() //appel méthode de l'objet
} // fin for
À chaque passage dans la boucle 5 propriétés de l'objet sont actualisées (x,y w,h,r) afin
que les rectangles arrondis soient de plus en plus grands et décalés vers le bas et la droite.
Nouvelle version du programme
Je me suis contenté de modifier la définition de l'objet "rectangle" : propriétés & méthode.
Donc la maintenance du script est diablement simplifiée.