Séance 1 : intro sur les standards du Web, HTML5, JavaScript etc.
Supports de cours :
- MOOCS sur HTML5 (part 1 et part 2), sur W3Cx Inscrivez-vous à HTML5 part 1 et part 2. Il faudra me donner vos emails d'inscription + suivre HTML5 part 1/Week 2, 3 et 4, et HTML5 part 2 Week 1 sauf WebAudio. Je regarderai vos réponses aux quizzes de fin de chapitre, qui compteront dans la note finale de ce module.
- Transparents HTML5
Exemples étudiés en cours: MBDS CASA 2016-2017.zip
Séance 3: gestion des événements, interaction JavaScript et éléments de formulaires
Exemples d'écouteurs d'événement vus en cours (mais attention, dans le MOOC Week 4 et Week 5 vous avez bcp plus d'information): http://jsbin.com/qonexal/2/edit?js,console,output
Outil sympa vu en cours pour jouer avec CSS en temps réel: http://liveweave.com/
Travail à faire:
1 - Vérifier que vous avez compris les règles de base pour travailler.
- Créer un nouveau projet JsBin (c'est plus simple) -vérifier que vous êtes bien enregistrés (créez un compte) sinon vous risquez de perdre votre travail.
- Mettez un canvas dans le HTML, taille par exemple 400x400
- Faites apparaitre une bordure (ajouter une règle CSS)
- Ajoutez dans le JavaScript une fonction init() appelée quand la page est chargée
- Appliquez les bonnes pratiques vues en cours pour déclarer un canvas, un contexte graphique, etc.
- Dessinez un rectangle noir en x=10, y=10, taille 100x100 pour vérifier que tout marche.
- Créez un objet singleton var rectangle = {...} et mettez à l'intérieur :
- Les propriétés x, y, l, h, couleur du rectangle
- Une méthode draw() qui le dessine à sa position courante
- Une méthode move(x, y) qui change sa position x, y
- Ecrivez une boucle d'animation qui dessine 60 fois par seconde ce rectangle, vous l'appelez depuis la fonction init()
- Le recangle doit s'afficher 60 fois par seconde. Maintenant modifiez la boucle d'animation pour qu'il se déplace vers la droite en ajoutant un rectangle.x ++; dans la boucle
- Reprenez l'exemple de Gabriel Mopolo animé et regardez comment on a fait la detection de collision et comment on l'a fait rebondir.
2 - Regardez dans le MOOC où se trouve une fonction qui permet de dessiner des flèches (aide: c'est dans la Week 3 du MOOC HTML5 part 1)
- Dans la boucle d'animation, dessinez 60 fois par seconde une flèche rouge qui va de 0, 0 à la position de votre rectangle qui rebondit.
- Ajoutez, en vous inspirant de l'exemple vu en cours au début de l'heure, des écouteurs pour les clics souris, pour le déplacement de la souris. Mettez des console.log dans les écouteurs/callbacks de ces événements et vérifiez qu'on détecte bien les déplacements de la souris (coordonnées x et y du pointeur correctes) et les clicks.
- Maintenant, au lieu de suivre Gabriel Mopolo, la flèche qui part de 0, 0, doit suivre la souris, plus Gabriel Mopolo !
- Maitenant, on ne dessine plus la flèche depuis (0,0) jusqu'au curseur, mais on veut le comportement suivant:
- Quand on clique et qu'on déplace la souris en gardant le bouton cliqué, la flèche se dessine depuis l'endroit où on a cliqué, jusqu'à la position du curseur. Tant qu'on ne relâche pas le bouton, la flèche suit le curseur.
- Quand on relâche le bouton, la flèche reste en place et ne suit plus le curseur.
- Si on reclique ailleurs, la flèche d'avant n'apparait plus mais on en redessine une autre.
- Créez un tableau des flèches avec var
tabFleches = [];
- Maintenant, quand on relâche le curseur après avoir dessiné une flèche, on ajoute dans le tableau un objet de cette forme:
{x1:valeur, y1=valeur, x2:valeur, y2:valeur, couleur:valeur}
, on pourra utiliser la méthode push(element) des tableaux: tabFleches.push({...});
- Vérifier après avoir dessiné plusieurs flèches que le tableau contient bien les éléments corrects (utilisez la console de debug)
- Maintenant ecrire une fonction
dessineToutesLesFleches
qui va parcourir le tableau et dessiner toutes les flèches précédentes. Cette fonction sera appelée par la boucle d'animation. - On pourrait utiliser une fonction constructeur pour modéliser les flèches, ou une classe ES2015. Pourquoi ne pas essayer ?
3 - ajout d'éléments de formulaire pour paramétrer la création des flèches:
- Ajoutez en dessous, ou à côté du canvas, des éléments de formulaire. Rappel :
- <input type="color"> permet de choisir une couleur,
- <input type="number"> permet de choisir un nombre,
- <input type="range"> permet de faire apparaitre un slider
Vous pourrez regarder la semaine 5 du MOOC HTML5 part 1 consacré aux formulaires, pour voir comment utiliser ces éléments de formulaire et comment récupérer leur valeur en JavaScript.
Quel est le type d'événement qu'il faut écouter ? Comment on récupère la valeur ? Faites des console.log dans les écouteurs/callbacks pour vérifier que ça marche...
- Maintenant faites en sorte que la flèche que l'on dessine soit de la couleur qu'on a choisi dans le selecteur de couleur, que son épaisseur de trait soit en rapport avec le slider (input type="range") de choix d'épaisseur, etc.
- Vous rajouterez les attributs qu'il faut dans les modèles objets des flèches.