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.
Séance 4: tableaux, API multimedia, interactions canvas et video
Exemples vus en cours:
Pour les curieux qui veulent voir un jeu desktop + mobile (celui-là: http://mainline.i3s.unice.fr/mooc/SkywardBound/): les sources du jeu du lapin qui saute sur des boules de Noël (le lancer avec un serveur web, avec http://, je ne suis pas sûr qu'il marche avec file://): gameForMooc.zip
Ce jeu respecte les bonnes pratiques données dans la Week 2 du cours HTML5 part 2 intulée "HTML5 game programming".
Travail à faire :
- En vous inspirant de la correction ci-dessus, finir le TP d'hier,
- Rajouter un moyen de choisir si on dessine des ellipses ou des cercles, dans un premier temps, en mode "flèche" on dessine une flèche par clic et drag de la souris, en mode ellipse on dessine une ellipse de taille et couleur fixe.
- Maintenant on veut pouvoir choisir le rayon de l'ellipse à la souris avec clic et drag
- Gérer un tableau des ellipses comme on a fait pour le tableau des flèches.