SlideShare ist ein Scribd-Unternehmen logo
1 von 25
Les frameworks flashlike en
JS
Plan
• HTML et le DOM.
• Où est placé mon objet HTML ?
• Les frameworks Flashlike.
• Où est placé mon objet avec un framework Flashlike ?
• Les autres frameworks JS
• Aller plus loin.
HTML et le DOM
Document Object Model
Interface de programmation
permettant l’accès aux éléments
composant une page web.
Permet le développement de pages
interactives.
HTML et le DOM
Une page web simple
HTML et le DOM
Une page web simple Ne l’est pas tant que ça
Représentation 3D des éléments HTML.
HTML et le DOM
• La modification d’un objet impacte ceux
qui suivent dans le « flux d’éléments »
• Le calcul de la position et de l’apparence
de chaque objet est complexe
• Problèmes de performance lorsqu’on
emploie un grand nombre d’objets
• Les éléments HTML sont assez limités et
contraints à des formes rectangulaires.
Visualisation du processus de placement des
éléments d’une page web. « reflow »
https://www.youtube.com/watch?v=ZTnIxIA5KGw
Où est placé mon objet HTML ?
La position d’un objet dépend des règles CSS appliquées.
Où est placé mon objet HTML ?
Appliquées à qui ?
• À l’objet lui-même.
• À ses parents.
• À ses frères. Un objet « pousse » les autres dans le flux.
… Et donc, aux frères de ses parents (oncles, tantes).
• Aux enfants de ses frères. Un objet grossi pour contenir ses enfants.
… Et donc, aux enfants des frères de ses parents (cousins).
• … bref, à toute la famille !
La position d’un objet dépend des règles CSS appliquées.
Où est placé mon objet HTML ?
La position d’un objet dépend des règles CSS appliquées.
Où est placé mon objet HTML ?
Quelles règles influencent la position ?
• Flux : position, float, display
• Style : margin, border-width, padding
• Position : top, left, right, bottom
• …
La position d’un objet dépend des règles CSS appliquées.
Où est placé mon objet HTML ?
La position d’un objet dépend des règles CSS appliquées.
Où est placé mon objet HTML ?
C’est pas fini !
• L’ordre dans lequel les règles CSS sont appliqués compte : les dernières lues écrasent les
précédentes
• La spécificité du sélecteur aussi : un sélecteur plus spécifique l’emporte sur un sélecteur plus
général.
• …Mais le marqueur !important permet de rendre une règle non écrasable
• Les « spécificités » du CSS qui complexifient le code. Une règle n’est prise en compte qu’en
fonction d’une autre.
• Border-width ne vaut rien si border-style n’est pas défini
• top, left, right, bottom ignorés si position n’est pas spécifié à fixed ou relative
• La règle clear, qui empêche les objets de se placer à coté d’un autre
• … il y’en a des dizaines.
• La prise en compte des règles dépend des navigateurs
…On ne parle ici que des règles influant la position des objets.
La position d’un objet dépend des règles CSS appliquées.
Où est placé mon objet HTML ?
En apparence simple, ça devient vite un vrai
casse-tête.
L’analyse des règles CSS appliqués à un objet
est si complexe qu’il faut des outils dédiés
pour y voir plus clair.
La position d’un objet dépend des règles CSS appliquées.
Développeur face à un élément HTML qui ne se place pas
à la position voulue.
Les frameworks Flashlike
• Développé par les flasheurs pour retrouver la simplicité et les performances de flash en HTML5.
• Conçus pour le développement de jeux, les interfaces riches et les sites web très animés.
• Excellentes performances, proche des applications natives quand on utilise WebGL.
• Compatible avec tout les navigateurs récents et mobiles (Android, iOS…).
• Rendu dans un objet <canvas> donc bitmap
• Collage de bitmaps (sprites, tuiles)
• Dessin des éléments vectoriels (rastérisation)
• Reprend le principe de displayObjects
imbriqués de flash.
Hiérarchie des displayObjects d’une scène.
Quelques exemples:
www.flashvhtml.com
Animation fluide à 60fps
WebGL (pixi JS)
Moteur animation Greensock
CAAT lien
Texte qui suit un chemin
modifiable à la volée.
www.animatron.com
Outil graphique permettant
de créer des animations.
Où est placé mon objet dans un
framework Flashlike ?
La position d’un objet dépend des propriétés x, y et rotation
de l’objet et de ses parents.
Où est placé mon objet dans un
framework Flashlike ?
La position d’un objet dépend des propriétés x, y et rotation
de l’objet et de ses parents.
…et c’est tout !
Les matrices de transformation
• Une matrice 3x3 pour chaque objet.
a = échelle horizontale a = biais vertical 0 constant
c = biais horizontal d = échelle verticale 0 constant
tx = translation horizontale Ty = translation verticale 1 constant
• En réalité, les propriétés x, y et rotation d’un objet affectent sa matrice de transformation.
• La matrice appliquée à un objet est la concaténation de la sienne et de celles de ses parents.
• Les GPU sont optimisés pour appliquer ces matrices a des images (même sur les cartes intégrées).
Autres fonctionnalités :
• Ces frameworks intègrent la gestion des évènements souris et clavier.
• … et parfois des spécificités liées aux mobiles (accéléromètre, gestes).
• Parseurs SVG : permet d’utiliser du SVG et de le dessiner à la taille
voulue.
• Rendu WebGL : utilise le GPU pour des performances optimales (60
images par seconde)
• Gestion des collisions entre objets
Avantages et inconvénients des
frameworks flashlike.
Avantages
• Simplicité : code orienté objet clair et bien
organisé.
• Performance, surtout pour ceux qui utilisent
WebGL.
• Licence libre pour tous.
Inconvénients
• Le rendu final est en bitmap et donc pas
d’export HTML vers PDF en vectoriel (il faut
du SVG pour ca).
• Pas de contrôles : boutons, textbox, etc…
• Utilisation de librairies dédiées
• Utilisation des contrôles HTML à coté
Les principaux frameworks
• KineticJS : Canvas ou WebGL
• EASELJS : Très complet : moteur d’animation, gestion des
chargements, du son, WebGL en béta…
• Collie
• CAAT : Rendu Canvas, WebGL et CSS
• Pixi : Orienté WebGL (avec fallback canvas)
Les autres types de frameworks
• Créés pour simplifier l’utilisation des fonctions HTML5 des navigateurs. Canvas (dessin bitmap) et SVG
(dessin vectoriel)
• Il sont très nombreux mais peu sont bien documentés.
• Dessin pur
• Raphaël : librairie de dessin très simple
• jQuery SVG : la syntaxe jQuery pour le SVG
• SnapSVG : Raphaël en version SVG
• Two.js : rendu SVG, Canvas ou WebGL
• Librairies plus complètes avec gestion des évènement clavier et souris:
• Paper.js : un des pioniers
• ProcessingJS : Plus qu’une librairie de dessin
• Représentation de données
• D3js : dédié aux représentations graphiques de données (data-binding) www.d3js.org
• www.highcharts.com
D3.js
• Framework dédié à la visualisation de données
• Système de data-binding: les graphismes se mettent à jour tout seul quand les données
changent.
• Un peu complexe qu’une simple librairie de dessin mais résultat spectaculaire
• Génération des graphismes en SVG permet un export vectoriel
www.d3js.org
Animer les objets
Les frameworks flashlike sont essentiellement fait pour l’animation. Les moteurs d’animation Javascript
permettent d’animer les propriétés de manière fluide à base d’équations mathématiques. Une ligne de code
permet de modifier une ou plusieurs propriétés.
•JQuery: très rependu, déjà inclus dans la plupart des applications web, performances faibles
•GreenSock Animation Platform (GSAP): la rolls royce des moteurs d’animation.
Version JS d’un moteur qui existe depuis 2004 sur flash. Robuste, simple, complet (séquençage d’animation,
harmonisation de propriétés cross-browser), le plus performant, bien documenté, maintenu à temps plein par
son créateur. Plusieurs personnes au support technique. Code source accessible et Licence commerciale
gratuite pour la plupart des projets. Support professionnel possible.
TweenMax.to("#myObject", 0.5, { opacity: 0 }), // fondu vers transparence totale qui dure 0,5s
•TweenJS: fait partie de la suite createJS (avec EaselJs, performances correctes).
•Les autres : DOJO, Zepto, MooTools, YUI3. Peu efficaces.
Aller plus loin
• Liste des frameworks flashlike, librairies de dessin canvas et SVG:
https://docs.google.com/spreadsheet/ccc?key=0Aqj_mVmuz3Y8dHNhUVFDYlRaaXlyX0xYSTVnalV5ZlE#gid=0
• Plus d’information sur les matrices de transformation
http://www.senocular.com/flash/tutorials/transformmatrix/
• SVG vs canvas:
http://paxcel.net/blog/canvas-vs-svg-comparison-of-the-two-graphic-features-of-html5/

Weitere ähnliche Inhalte

Andere mochten auch

WebGL, la 3D c'est maintenant dans votre navigateur - Paris Web 2012
WebGL, la 3D c'est maintenant dans votre navigateur - Paris Web 2012WebGL, la 3D c'est maintenant dans votre navigateur - Paris Web 2012
WebGL, la 3D c'est maintenant dans votre navigateur - Paris Web 2012Boxesinabox
 
Booster votre application Windows Phone 8
Booster votre application Windows Phone 8Booster votre application Windows Phone 8
Booster votre application Windows Phone 8Microsoft
 
Créer des jeux 3D pour le web et pour le Windows Store avec BabylonJS/WebGL
Créer des jeux 3D pour le web et pour le Windows Store avec BabylonJS/WebGL Créer des jeux 3D pour le web et pour le Windows Store avec BabylonJS/WebGL
Créer des jeux 3D pour le web et pour le Windows Store avec BabylonJS/WebGL Microsoft
 
10. Fundamental AI Technologies
10. Fundamental AI Technologies10. Fundamental AI Technologies
10. Fundamental AI TechnologiesAmin Babadi
 
Program-Ace_Video_Game_Development
Program-Ace_Video_Game_DevelopmentProgram-Ace_Video_Game_Development
Program-Ace_Video_Game_DevelopmentK L
 
Program-Ace_VR
Program-Ace_VRProgram-Ace_VR
Program-Ace_VRK L
 
Affichage final du site mustapha inf
Affichage final du site mustapha infAffichage final du site mustapha inf
Affichage final du site mustapha infHiba Architecte
 
Up And Running With Web VR Fall 2014
Up And Running With Web VR Fall 2014Up And Running With Web VR Fall 2014
Up And Running With Web VR Fall 2014Tony Parisi
 
WebGL Paris 2015 - Conférence de S.Benchaa (Lead Graphics Engineer @Beloola)
WebGL Paris 2015  - Conférence de S.Benchaa (Lead Graphics Engineer @Beloola)WebGL Paris 2015  - Conférence de S.Benchaa (Lead Graphics Engineer @Beloola)
WebGL Paris 2015 - Conférence de S.Benchaa (Lead Graphics Engineer @Beloola)Samuel Mound
 

Andere mochten auch (11)

WebGL, la 3D c'est maintenant dans votre navigateur - Paris Web 2012
WebGL, la 3D c'est maintenant dans votre navigateur - Paris Web 2012WebGL, la 3D c'est maintenant dans votre navigateur - Paris Web 2012
WebGL, la 3D c'est maintenant dans votre navigateur - Paris Web 2012
 
Booster votre application Windows Phone 8
Booster votre application Windows Phone 8Booster votre application Windows Phone 8
Booster votre application Windows Phone 8
 
Créer des jeux 3D pour le web et pour le Windows Store avec BabylonJS/WebGL
Créer des jeux 3D pour le web et pour le Windows Store avec BabylonJS/WebGL Créer des jeux 3D pour le web et pour le Windows Store avec BabylonJS/WebGL
Créer des jeux 3D pour le web et pour le Windows Store avec BabylonJS/WebGL
 
Introduction au WebGL
Introduction au WebGLIntroduction au WebGL
Introduction au WebGL
 
10. Fundamental AI Technologies
10. Fundamental AI Technologies10. Fundamental AI Technologies
10. Fundamental AI Technologies
 
Program-Ace_Video_Game_Development
Program-Ace_Video_Game_DevelopmentProgram-Ace_Video_Game_Development
Program-Ace_Video_Game_Development
 
Program-Ace_VR
Program-Ace_VRProgram-Ace_VR
Program-Ace_VR
 
Affichage final du site mustapha inf
Affichage final du site mustapha infAffichage final du site mustapha inf
Affichage final du site mustapha inf
 
WebGL 2.0 Reference Guide
WebGL 2.0 Reference GuideWebGL 2.0 Reference Guide
WebGL 2.0 Reference Guide
 
Up And Running With Web VR Fall 2014
Up And Running With Web VR Fall 2014Up And Running With Web VR Fall 2014
Up And Running With Web VR Fall 2014
 
WebGL Paris 2015 - Conférence de S.Benchaa (Lead Graphics Engineer @Beloola)
WebGL Paris 2015  - Conférence de S.Benchaa (Lead Graphics Engineer @Beloola)WebGL Paris 2015  - Conférence de S.Benchaa (Lead Graphics Engineer @Beloola)
WebGL Paris 2015 - Conférence de S.Benchaa (Lead Graphics Engineer @Beloola)
 

Ähnlich wie Les frameworks flashlike javascript

Les dernières avancées HTML5 & CSS3 en action !
Les dernières avancées HTML5 & CSS3 en action !Les dernières avancées HTML5 & CSS3 en action !
Les dernières avancées HTML5 & CSS3 en action !Microsoft Technet France
 
Html5 par Florent Garin, au Toulouse JUG
Html5 par Florent Garin, au Toulouse JUGHtml5 par Florent Garin, au Toulouse JUG
Html5 par Florent Garin, au Toulouse JUGJUG Toulouse
 
ENIB 2015-2016 - CAI Web - S01E01- Côté navigateur 2/3 - HTML5, CSS3, Twitte...
ENIB 2015-2016 - CAI Web -  S01E01- Côté navigateur 2/3 - HTML5, CSS3, Twitte...ENIB 2015-2016 - CAI Web -  S01E01- Côté navigateur 2/3 - HTML5, CSS3, Twitte...
ENIB 2015-2016 - CAI Web - S01E01- Côté navigateur 2/3 - HTML5, CSS3, Twitte...Horacio Gonzalez
 
Enib cours c.a.i. web - séance #1 - html5 css3-js - 2
Enib   cours c.a.i. web - séance #1 - html5 css3-js - 2Enib   cours c.a.i. web - séance #1 - html5 css3-js - 2
Enib cours c.a.i. web - séance #1 - html5 css3-js - 2Horacio Gonzalez
 
Webinar HTML5 Microsoft Intel
Webinar HTML5 Microsoft IntelWebinar HTML5 Microsoft Intel
Webinar HTML5 Microsoft Inteldavrous
 
Codedarmor 2012 - 06/03 - HTML5, CSS3 et Javascript
Codedarmor 2012 - 06/03 - HTML5, CSS3 et JavascriptCodedarmor 2012 - 06/03 - HTML5, CSS3 et Javascript
Codedarmor 2012 - 06/03 - HTML5, CSS3 et Javascriptcodedarmor
 
USI 2009 - Du RIA pour SI
USI 2009 - Du RIA pour SIUSI 2009 - Du RIA pour SI
USI 2009 - Du RIA pour SIDjamel Zouaoui
 
ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 2/3 - HTML5 / CSS3 / Twitter...
ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 2/3 - HTML5 / CSS3 / Twitter...ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 2/3 - HTML5 / CSS3 / Twitter...
ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 2/3 - HTML5 / CSS3 / Twitter...Horacio Gonzalez
 
jQuery mobile / PhoneGap : contenus dynamiques client-side
jQuery mobile / PhoneGap : contenus dynamiques client-sidejQuery mobile / PhoneGap : contenus dynamiques client-side
jQuery mobile / PhoneGap : contenus dynamiques client-sidemaru.maru
 
HTML5/CSS3D - Expresso Rennes Atalante - 17 sept. 2013
HTML5/CSS3D - Expresso Rennes Atalante - 17 sept. 2013HTML5/CSS3D - Expresso Rennes Atalante - 17 sept. 2013
HTML5/CSS3D - Expresso Rennes Atalante - 17 sept. 2013Julien LE THUAUT
 
ENIB 2015-2016 - CAI Web - S01E01- Côté navigateur 1/3 - HTTP, HTML, CSS, JS
ENIB 2015-2016 - CAI Web -  S01E01- Côté navigateur 1/3 - HTTP, HTML, CSS, JSENIB 2015-2016 - CAI Web -  S01E01- Côté navigateur 1/3 - HTTP, HTML, CSS, JS
ENIB 2015-2016 - CAI Web - S01E01- Côté navigateur 1/3 - HTTP, HTML, CSS, JSHoracio Gonzalez
 
Expresso Rennes Atalante - Html5 / Css3D - 17 sept. 2013
Expresso Rennes Atalante - Html5 / Css3D - 17 sept. 2013Expresso Rennes Atalante - Html5 / Css3D - 17 sept. 2013
Expresso Rennes Atalante - Html5 / Css3D - 17 sept. 2013MBA Multimedia
 
La caisse à outils de la visualisation d'informations
La caisse à outils de la visualisation d'informationsLa caisse à outils de la visualisation d'informations
La caisse à outils de la visualisation d'informationsChristopheTricot
 
Confoo - 2012-02-27 au 2012-02-28 - HTML5 workshop
Confoo - 2012-02-27 au 2012-02-28 - HTML5 workshopConfoo - 2012-02-27 au 2012-02-28 - HTML5 workshop
Confoo - 2012-02-27 au 2012-02-28 - HTML5 workshopFrédéric Harper
 
Mobiz - 2012-11-15 - HTML5, une révolution à plusieurs niveaux
Mobiz - 2012-11-15 - HTML5, une révolution à plusieurs niveauxMobiz - 2012-11-15 - HTML5, une révolution à plusieurs niveaux
Mobiz - 2012-11-15 - HTML5, une révolution à plusieurs niveauxFrédéric Harper
 
HTML 5 et CSS3, créez, animez et enrichissez vos sites Web
HTML 5 et CSS3, créez, animez et enrichissez vos sites WebHTML 5 et CSS3, créez, animez et enrichissez vos sites Web
HTML 5 et CSS3, créez, animez et enrichissez vos sites WebMicrosoft
 
Etendre le Web avec les Web Components
Etendre le Web avec les Web ComponentsEtendre le Web avec les Web Components
Etendre le Web avec les Web Componentscjolif
 

Ähnlich wie Les frameworks flashlike javascript (20)

Les dernières avancées HTML5 & CSS3 en action !
Les dernières avancées HTML5 & CSS3 en action !Les dernières avancées HTML5 & CSS3 en action !
Les dernières avancées HTML5 & CSS3 en action !
 
Html5 par Florent Garin, au Toulouse JUG
Html5 par Florent Garin, au Toulouse JUGHtml5 par Florent Garin, au Toulouse JUG
Html5 par Florent Garin, au Toulouse JUG
 
ENIB 2015-2016 - CAI Web - S01E01- Côté navigateur 2/3 - HTML5, CSS3, Twitte...
ENIB 2015-2016 - CAI Web -  S01E01- Côté navigateur 2/3 - HTML5, CSS3, Twitte...ENIB 2015-2016 - CAI Web -  S01E01- Côté navigateur 2/3 - HTML5, CSS3, Twitte...
ENIB 2015-2016 - CAI Web - S01E01- Côté navigateur 2/3 - HTML5, CSS3, Twitte...
 
Enib cours c.a.i. web - séance #1 - html5 css3-js - 2
Enib   cours c.a.i. web - séance #1 - html5 css3-js - 2Enib   cours c.a.i. web - séance #1 - html5 css3-js - 2
Enib cours c.a.i. web - séance #1 - html5 css3-js - 2
 
Webinar HTML5 Microsoft Intel
Webinar HTML5 Microsoft IntelWebinar HTML5 Microsoft Intel
Webinar HTML5 Microsoft Intel
 
Codedarmor 2012 - 06/03 - HTML5, CSS3 et Javascript
Codedarmor 2012 - 06/03 - HTML5, CSS3 et JavascriptCodedarmor 2012 - 06/03 - HTML5, CSS3 et Javascript
Codedarmor 2012 - 06/03 - HTML5, CSS3 et Javascript
 
USI 2009 - Du RIA pour SI
USI 2009 - Du RIA pour SIUSI 2009 - Du RIA pour SI
USI 2009 - Du RIA pour SI
 
ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 2/3 - HTML5 / CSS3 / Twitter...
ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 2/3 - HTML5 / CSS3 / Twitter...ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 2/3 - HTML5 / CSS3 / Twitter...
ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 2/3 - HTML5 / CSS3 / Twitter...
 
jQuery mobile / PhoneGap : contenus dynamiques client-side
jQuery mobile / PhoneGap : contenus dynamiques client-sidejQuery mobile / PhoneGap : contenus dynamiques client-side
jQuery mobile / PhoneGap : contenus dynamiques client-side
 
La performance sur mobile
La performance sur mobileLa performance sur mobile
La performance sur mobile
 
HTML5/CSS3D - Expresso Rennes Atalante - 17 sept. 2013
HTML5/CSS3D - Expresso Rennes Atalante - 17 sept. 2013HTML5/CSS3D - Expresso Rennes Atalante - 17 sept. 2013
HTML5/CSS3D - Expresso Rennes Atalante - 17 sept. 2013
 
ENIB 2015-2016 - CAI Web - S01E01- Côté navigateur 1/3 - HTTP, HTML, CSS, JS
ENIB 2015-2016 - CAI Web -  S01E01- Côté navigateur 1/3 - HTTP, HTML, CSS, JSENIB 2015-2016 - CAI Web -  S01E01- Côté navigateur 1/3 - HTTP, HTML, CSS, JS
ENIB 2015-2016 - CAI Web - S01E01- Côté navigateur 1/3 - HTTP, HTML, CSS, JS
 
Expresso Rennes Atalante - Html5 / Css3D - 17 sept. 2013
Expresso Rennes Atalante - Html5 / Css3D - 17 sept. 2013Expresso Rennes Atalante - Html5 / Css3D - 17 sept. 2013
Expresso Rennes Atalante - Html5 / Css3D - 17 sept. 2013
 
La caisse à outils de la visualisation d'informations
La caisse à outils de la visualisation d'informationsLa caisse à outils de la visualisation d'informations
La caisse à outils de la visualisation d'informations
 
Confoo - 2012-02-27 au 2012-02-28 - HTML5 workshop
Confoo - 2012-02-27 au 2012-02-28 - HTML5 workshopConfoo - 2012-02-27 au 2012-02-28 - HTML5 workshop
Confoo - 2012-02-27 au 2012-02-28 - HTML5 workshop
 
HTML5 & SilverLight 5
HTML5 & SilverLight 5HTML5 & SilverLight 5
HTML5 & SilverLight 5
 
Mobiz - 2012-11-15 - HTML5, une révolution à plusieurs niveaux
Mobiz - 2012-11-15 - HTML5, une révolution à plusieurs niveauxMobiz - 2012-11-15 - HTML5, une révolution à plusieurs niveaux
Mobiz - 2012-11-15 - HTML5, une révolution à plusieurs niveaux
 
HTML 5 et CSS3, créez, animez et enrichissez vos sites Web
HTML 5 et CSS3, créez, animez et enrichissez vos sites WebHTML 5 et CSS3, créez, animez et enrichissez vos sites Web
HTML 5 et CSS3, créez, animez et enrichissez vos sites Web
 
Etendre le Web avec les Web Components
Etendre le Web avec les Web ComponentsEtendre le Web avec les Web Components
Etendre le Web avec les Web Components
 
Javascript proprement
Javascript proprementJavascript proprement
Javascript proprement
 

Mehr von ekito

700.000 fans sur les réseaux sociaux : comment nous avons fait.
700.000 fans sur les réseaux sociaux : comment nous avons fait.700.000 fans sur les réseaux sociaux : comment nous avons fait.
700.000 fans sur les réseaux sociaux : comment nous avons fait.ekito
 
DLC d'une startup
DLC d'une startupDLC d'une startup
DLC d'une startupekito
 
Le stockage de données disruptif
Le stockage de données disruptifLe stockage de données disruptif
Le stockage de données disruptifekito
 
L'optimisation énergétique des datacenter
L'optimisation énergétique des datacenterL'optimisation énergétique des datacenter
L'optimisation énergétique des datacenterekito
 
Stratégie digitale : créer une application mobile désirée par le client (et n...
Stratégie digitale : créer une application mobile désirée par le client (et n...Stratégie digitale : créer une application mobile désirée par le client (et n...
Stratégie digitale : créer une application mobile désirée par le client (et n...ekito
 
Lean startup en entreprise meetup ekito
Lean startup en entreprise meetup ekitoLean startup en entreprise meetup ekito
Lean startup en entreprise meetup ekitoekito
 
Agile book ekito
Agile book ekitoAgile book ekito
Agile book ekitoekito
 
Spec et test agile sur mobile @airfrance #at lille & cocoaheads tls
Spec et test agile sur mobile @airfrance #at lille & cocoaheads tlsSpec et test agile sur mobile @airfrance #at lille & cocoaheads tls
Spec et test agile sur mobile @airfrance #at lille & cocoaheads tlsekito
 
Lean Startup - ekito - agile tour toulouse 2012
Lean Startup - ekito - agile tour toulouse 2012Lean Startup - ekito - agile tour toulouse 2012
Lean Startup - ekito - agile tour toulouse 2012ekito
 

Mehr von ekito (9)

700.000 fans sur les réseaux sociaux : comment nous avons fait.
700.000 fans sur les réseaux sociaux : comment nous avons fait.700.000 fans sur les réseaux sociaux : comment nous avons fait.
700.000 fans sur les réseaux sociaux : comment nous avons fait.
 
DLC d'une startup
DLC d'une startupDLC d'une startup
DLC d'une startup
 
Le stockage de données disruptif
Le stockage de données disruptifLe stockage de données disruptif
Le stockage de données disruptif
 
L'optimisation énergétique des datacenter
L'optimisation énergétique des datacenterL'optimisation énergétique des datacenter
L'optimisation énergétique des datacenter
 
Stratégie digitale : créer une application mobile désirée par le client (et n...
Stratégie digitale : créer une application mobile désirée par le client (et n...Stratégie digitale : créer une application mobile désirée par le client (et n...
Stratégie digitale : créer une application mobile désirée par le client (et n...
 
Lean startup en entreprise meetup ekito
Lean startup en entreprise meetup ekitoLean startup en entreprise meetup ekito
Lean startup en entreprise meetup ekito
 
Agile book ekito
Agile book ekitoAgile book ekito
Agile book ekito
 
Spec et test agile sur mobile @airfrance #at lille & cocoaheads tls
Spec et test agile sur mobile @airfrance #at lille & cocoaheads tlsSpec et test agile sur mobile @airfrance #at lille & cocoaheads tls
Spec et test agile sur mobile @airfrance #at lille & cocoaheads tls
 
Lean Startup - ekito - agile tour toulouse 2012
Lean Startup - ekito - agile tour toulouse 2012Lean Startup - ekito - agile tour toulouse 2012
Lean Startup - ekito - agile tour toulouse 2012
 

Les frameworks flashlike javascript

  • 2. Plan • HTML et le DOM. • Où est placé mon objet HTML ? • Les frameworks Flashlike. • Où est placé mon objet avec un framework Flashlike ? • Les autres frameworks JS • Aller plus loin.
  • 3. HTML et le DOM Document Object Model Interface de programmation permettant l’accès aux éléments composant une page web. Permet le développement de pages interactives.
  • 4. HTML et le DOM Une page web simple
  • 5. HTML et le DOM Une page web simple Ne l’est pas tant que ça Représentation 3D des éléments HTML.
  • 6. HTML et le DOM • La modification d’un objet impacte ceux qui suivent dans le « flux d’éléments » • Le calcul de la position et de l’apparence de chaque objet est complexe • Problèmes de performance lorsqu’on emploie un grand nombre d’objets • Les éléments HTML sont assez limités et contraints à des formes rectangulaires. Visualisation du processus de placement des éléments d’une page web. « reflow » https://www.youtube.com/watch?v=ZTnIxIA5KGw
  • 7. Où est placé mon objet HTML ? La position d’un objet dépend des règles CSS appliquées.
  • 8. Où est placé mon objet HTML ? Appliquées à qui ? • À l’objet lui-même. • À ses parents. • À ses frères. Un objet « pousse » les autres dans le flux. … Et donc, aux frères de ses parents (oncles, tantes). • Aux enfants de ses frères. Un objet grossi pour contenir ses enfants. … Et donc, aux enfants des frères de ses parents (cousins). • … bref, à toute la famille ! La position d’un objet dépend des règles CSS appliquées.
  • 9. Où est placé mon objet HTML ? La position d’un objet dépend des règles CSS appliquées.
  • 10. Où est placé mon objet HTML ? Quelles règles influencent la position ? • Flux : position, float, display • Style : margin, border-width, padding • Position : top, left, right, bottom • … La position d’un objet dépend des règles CSS appliquées.
  • 11. Où est placé mon objet HTML ? La position d’un objet dépend des règles CSS appliquées.
  • 12. Où est placé mon objet HTML ? C’est pas fini ! • L’ordre dans lequel les règles CSS sont appliqués compte : les dernières lues écrasent les précédentes • La spécificité du sélecteur aussi : un sélecteur plus spécifique l’emporte sur un sélecteur plus général. • …Mais le marqueur !important permet de rendre une règle non écrasable • Les « spécificités » du CSS qui complexifient le code. Une règle n’est prise en compte qu’en fonction d’une autre. • Border-width ne vaut rien si border-style n’est pas défini • top, left, right, bottom ignorés si position n’est pas spécifié à fixed ou relative • La règle clear, qui empêche les objets de se placer à coté d’un autre • … il y’en a des dizaines. • La prise en compte des règles dépend des navigateurs …On ne parle ici que des règles influant la position des objets. La position d’un objet dépend des règles CSS appliquées.
  • 13. Où est placé mon objet HTML ? En apparence simple, ça devient vite un vrai casse-tête. L’analyse des règles CSS appliqués à un objet est si complexe qu’il faut des outils dédiés pour y voir plus clair. La position d’un objet dépend des règles CSS appliquées. Développeur face à un élément HTML qui ne se place pas à la position voulue.
  • 14. Les frameworks Flashlike • Développé par les flasheurs pour retrouver la simplicité et les performances de flash en HTML5. • Conçus pour le développement de jeux, les interfaces riches et les sites web très animés. • Excellentes performances, proche des applications natives quand on utilise WebGL. • Compatible avec tout les navigateurs récents et mobiles (Android, iOS…). • Rendu dans un objet <canvas> donc bitmap • Collage de bitmaps (sprites, tuiles) • Dessin des éléments vectoriels (rastérisation) • Reprend le principe de displayObjects imbriqués de flash. Hiérarchie des displayObjects d’une scène.
  • 15. Quelques exemples: www.flashvhtml.com Animation fluide à 60fps WebGL (pixi JS) Moteur animation Greensock CAAT lien Texte qui suit un chemin modifiable à la volée. www.animatron.com Outil graphique permettant de créer des animations.
  • 16. Où est placé mon objet dans un framework Flashlike ? La position d’un objet dépend des propriétés x, y et rotation de l’objet et de ses parents.
  • 17. Où est placé mon objet dans un framework Flashlike ? La position d’un objet dépend des propriétés x, y et rotation de l’objet et de ses parents. …et c’est tout !
  • 18. Les matrices de transformation • Une matrice 3x3 pour chaque objet. a = échelle horizontale a = biais vertical 0 constant c = biais horizontal d = échelle verticale 0 constant tx = translation horizontale Ty = translation verticale 1 constant • En réalité, les propriétés x, y et rotation d’un objet affectent sa matrice de transformation. • La matrice appliquée à un objet est la concaténation de la sienne et de celles de ses parents. • Les GPU sont optimisés pour appliquer ces matrices a des images (même sur les cartes intégrées).
  • 19. Autres fonctionnalités : • Ces frameworks intègrent la gestion des évènements souris et clavier. • … et parfois des spécificités liées aux mobiles (accéléromètre, gestes). • Parseurs SVG : permet d’utiliser du SVG et de le dessiner à la taille voulue. • Rendu WebGL : utilise le GPU pour des performances optimales (60 images par seconde) • Gestion des collisions entre objets
  • 20. Avantages et inconvénients des frameworks flashlike. Avantages • Simplicité : code orienté objet clair et bien organisé. • Performance, surtout pour ceux qui utilisent WebGL. • Licence libre pour tous. Inconvénients • Le rendu final est en bitmap et donc pas d’export HTML vers PDF en vectoriel (il faut du SVG pour ca). • Pas de contrôles : boutons, textbox, etc… • Utilisation de librairies dédiées • Utilisation des contrôles HTML à coté
  • 21. Les principaux frameworks • KineticJS : Canvas ou WebGL • EASELJS : Très complet : moteur d’animation, gestion des chargements, du son, WebGL en béta… • Collie • CAAT : Rendu Canvas, WebGL et CSS • Pixi : Orienté WebGL (avec fallback canvas)
  • 22. Les autres types de frameworks • Créés pour simplifier l’utilisation des fonctions HTML5 des navigateurs. Canvas (dessin bitmap) et SVG (dessin vectoriel) • Il sont très nombreux mais peu sont bien documentés. • Dessin pur • Raphaël : librairie de dessin très simple • jQuery SVG : la syntaxe jQuery pour le SVG • SnapSVG : Raphaël en version SVG • Two.js : rendu SVG, Canvas ou WebGL • Librairies plus complètes avec gestion des évènement clavier et souris: • Paper.js : un des pioniers • ProcessingJS : Plus qu’une librairie de dessin • Représentation de données • D3js : dédié aux représentations graphiques de données (data-binding) www.d3js.org • www.highcharts.com
  • 23. D3.js • Framework dédié à la visualisation de données • Système de data-binding: les graphismes se mettent à jour tout seul quand les données changent. • Un peu complexe qu’une simple librairie de dessin mais résultat spectaculaire • Génération des graphismes en SVG permet un export vectoriel www.d3js.org
  • 24. Animer les objets Les frameworks flashlike sont essentiellement fait pour l’animation. Les moteurs d’animation Javascript permettent d’animer les propriétés de manière fluide à base d’équations mathématiques. Une ligne de code permet de modifier une ou plusieurs propriétés. •JQuery: très rependu, déjà inclus dans la plupart des applications web, performances faibles •GreenSock Animation Platform (GSAP): la rolls royce des moteurs d’animation. Version JS d’un moteur qui existe depuis 2004 sur flash. Robuste, simple, complet (séquençage d’animation, harmonisation de propriétés cross-browser), le plus performant, bien documenté, maintenu à temps plein par son créateur. Plusieurs personnes au support technique. Code source accessible et Licence commerciale gratuite pour la plupart des projets. Support professionnel possible. TweenMax.to("#myObject", 0.5, { opacity: 0 }), // fondu vers transparence totale qui dure 0,5s •TweenJS: fait partie de la suite createJS (avec EaselJs, performances correctes). •Les autres : DOJO, Zepto, MooTools, YUI3. Peu efficaces.
  • 25. Aller plus loin • Liste des frameworks flashlike, librairies de dessin canvas et SVG: https://docs.google.com/spreadsheet/ccc?key=0Aqj_mVmuz3Y8dHNhUVFDYlRaaXlyX0xYSTVnalV5ZlE#gid=0 • Plus d’information sur les matrices de transformation http://www.senocular.com/flash/tutorials/transformmatrix/ • SVG vs canvas: http://paxcel.net/blog/canvas-vs-svg-comparison-of-the-two-graphic-features-of-html5/