{"id":48,"date":"2014-10-21T08:06:52","date_gmt":"2014-10-21T08:06:52","guid":{"rendered":"http:\/\/lalloue.fr\/blog\/?p=48"},"modified":"2015-02-06T09:39:17","modified_gmt":"2015-02-06T08:39:17","slug":"famo-us-sauveur-du-html5","status":"publish","type":"post","link":"http:\/\/lalloue.fr\/blog\/famo-us-sauveur-du-html5\/","title":{"rendered":"Famo.us : Sauveur du HTML5 !"},"content":{"rendered":"<p><a href=\"http:\/\/lalloue.fr\/blog\/wp-content\/uploads\/2014\/10\/Sans-titre.png\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-81 size-thumbnail\" src=\"http:\/\/lalloue.fr\/blog\/wp-content\/uploads\/2014\/10\/Sans-titre-150x150.png\" alt=\"Sans titre\" width=\"150\" height=\"150\" \/><\/a><\/p>\n<p class=\"ng-scope\">Le HTML5 \u00e9tait suppos\u00e9 remplacer &#8220;Flash&#8221;, mais en r\u00e9alit\u00e9, les performances n&#8217;\u00e9taient pas l\u00e0 et les d\u00e9veloppeurs l&#8217;ont vite compris.<\/p>\n<p class=\"ng-scope\">C&#8217;est sur ce constat qu&#8217;a \u00e9t\u00e9 fond\u00e9e\u00a0l&#8217;entreprise &#8220;Famo.us&#8221;.<br \/>\nFamo.us a cr\u00e9\u00e9 son propre\u00a0Framework afin de rendre des \u00e9l\u00e9ments HTML5 avec des effets 2D ou 3D rapidement.<br \/>\nEt pour y arriver, la meilleur solution est de se baser sur un langage largement utilis\u00e9, rapide et fonctionnant sur l&#8217;ensemble des navigateurs : vous avez devin\u00e9, c&#8217;est bien le Javascript.<\/p>\n<p class=\"ng-scope\">Et en plus, il n&#8217;y a pas besoin de t\u00e9l\u00e9charger de\u00a0plugin pour que \u00e7a marche ! (compar\u00e9 \u00e0 Flash)<\/p>\n<p class=\"ng-scope\"><!--more--><\/p>\n<h3 class=\"ng-scope\">Comment Famo.us fonctionne ?<\/h3>\n<p class=\"ng-scope\">Les animations g\u00e9n\u00e9r\u00e9es par Famo.us sont cr\u00e9es par la succession de pages (frames) contenant des \u00e9l\u00e9ments modifi\u00e9s.<br \/>\nWHAT ?<br \/>\nEn gros, pour cr\u00e9er l&#8217;illusion d&#8217;une animation fluide a partir d&#8217;objets HTML simples et sans mouvements, il suffit d&#8217;afficher plusieurs pages les unes \u00e0 la suites des autres en modifiant les \u00e9l\u00e9ments contenus dans la page morceaux par morceaux.<\/p>\n<p class=\"ng-scope\">Vous connaissez surement ce principe d&#8217;affichage de plusieurs pages les unes \u00e0 la suite des autres pour cr\u00e9er le mouvement\u00a0:<\/p>\n<h6 class=\"ng-scope\"><a href=\"http:\/\/lalloue.fr\/blog\/wp-content\/uploads\/2014\/10\/The_Horse_in_Motion-anim.gif\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone\" src=\"http:\/\/upload.wikimedia.org\/wikipedia\/commons\/thumb\/0\/07\/The_Horse_in_Motion-anim.gif\/220px-The_Horse_in_Motion-anim.gif\" alt=\"\" width=\"133\" height=\"86\" \/><br \/>\n<\/a><em>The Horse in Motion by Eadweard Muybridge<\/em><a href=\"http:\/\/lalloue.fr\/blog\/wp-content\/uploads\/2014\/10\/The_Horse_in_Motion-anim.gif\"><br \/>\n<\/a><\/h6>\n<p class=\"ng-scope\">Et Famo.us permet d&#8217;afficher jusqu&#8217;a 60 images par secondes (60 fps), autant dire que \u00e7a suffit largement pour cr\u00e9er une belle animation fluide et efficace.<\/p>\n<p>Concr\u00e8tement, Famo.us remplace les op\u00e9rations du DOM et les animations 2D et 3D par sa propre alternative.<br \/>\nPour ceux qui veulent plus de d\u00e9tail, je vous donne le sch\u00e9ma d\u2019ex\u00e9cution de Famo.us ci-dessous.<br \/>\nEn gros, le moteur Famo.us (un objet singleton) est appel\u00e9 pour chaque page (ou frame) par la fonction callback de\u00a0&#8220;requestAnimationFrame()&#8221; du navigateur, et ce 60 fois par secondes.<\/p>\n<p class=\"ng-scope\"><a href=\"http:\/\/lalloue.fr\/blog\/wp-content\/uploads\/2014\/10\/figure1.png\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-medium wp-image-54\" src=\"http:\/\/lalloue.fr\/blog\/wp-content\/uploads\/2014\/10\/figure1-300x226.png\" alt=\"figure1\" width=\"300\" height=\"226\" srcset=\"http:\/\/lalloue.fr\/blog\/wp-content\/uploads\/2014\/10\/figure1-300x226.png 300w, http:\/\/lalloue.fr\/blog\/wp-content\/uploads\/2014\/10\/figure1.png 525w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<h3 class=\"ng-scope\">L&#8217;API Famo.us<\/h3>\n<p>L&#8217;API famo.us pr\u00e9sente sa propre collection d&#8217;objets, tel que les objets &#8220;surface&#8221;, &#8220;view&#8221; ou &#8220;widget&#8221;.<br \/>\nVotre code Famo.us cr\u00e9e alors les sc\u00e8nes \u00e0 rendre depuis vos objets, attache les \u00e9v\u00e9nements \u00e0 vos objets (clic, d\u00e9placement, etc&#8230;) et g\u00e9n\u00e8re les animations vers le DOM du navigateur, vers un Canvas ou bien encore vers WebGL en fonction de se qui se pr\u00e9sente (dans la version BETA, Famo.us n&#8217;utilisait que le DOM).<\/p>\n<h3>Les surfaces et renderables<\/h3>\n<p>Dans Famo.us, on cr\u00e9e et anime des objets &#8220;renderables&#8221; (d\u00e9sol\u00e9 pour la traduction mais je n&#8217;ai pas trouv\u00e9 le mot le plus adapt\u00e9).<br \/>\nL&#8217;objet &#8220;renderable&#8221; le plus bas niveau de la librairie est la &#8220;surface&#8221;. Une surface est affich\u00e9e dans le navigateur par un \u00e9l\u00e9ment &lt;DIV&gt;.<br \/>\nMais il existe d&#8217;autres \u00e9l\u00e9ments &#8220;surfaces&#8221; un peu plus \u00e9volu\u00e9s et repr\u00e9sent\u00e9s par des \u00e9l\u00e9ments HTML5 tel que les suivants :<\/p>\n<ul>\n<li>Surface : &lt;div&gt;<\/li>\n<li>VideoSurface : &lt;video&gt;<\/li>\n<li>ImageSurface : &lt;img&gt;<\/li>\n<li>InputSurface : &lt;input&gt;<\/li>\n<li>CanvasSurface : &lt;canvas&gt;<\/li>\n<\/ul>\n<p>La &#8220;Surface&#8221; poss\u00e8de un champs &#8220;contenus&#8221;. C&#8217;est dans ce champs que l&#8217;on d\u00e9fini le HTML \u00e0 rendre dans la surface.<\/p>\n<h3 id=\"N100C0\">Quelques exemples<\/h3>\n<p>Mais concr\u00e8tement qu&#8217;est-ce qu&#8217;on peut faire avec Famo.us ?<\/p>\n<p>Et bien voici quelques exemples qui vous donneront un petit \u00e9ventail des possibilit\u00e9s \u00c9NORMES de Famo.us :<\/p>\n<h6>D\u00e9mo officielle de Famo.us :<\/h6>\n<p><a href=\"http:\/\/famo.us\/demos\/\">http:\/\/famo.us\/demos\/<\/a><\/p>\n<h6>Facebook Paper refait avec Famo.us :<\/h6>\n<p><a href=\"https:\/\/www.youtube.com\/watch?v=nO6ZwYwwii8\">https:\/\/www.youtube.com\/watch?v=nO6ZwYwwii8<\/a><\/p>\n<h6>Quelques exemples de code Famo.us :<\/h6>\n<p><a href=\"http:\/\/www.codepen.io\/befamous\/\">http:\/\/www.codepen.io\/befamous\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Le HTML5 \u00e9tait suppos\u00e9 remplacer &#8220;Flash&#8221;, mais en r\u00e9alit\u00e9, les performances n&#8217;\u00e9taient pas l\u00e0 et les d\u00e9veloppeurs l&#8217;ont vite compris. C&#8217;est sur ce constat qu&#8217;a \u00e9t\u00e9 fond\u00e9e\u00a0l&#8217;entreprise &#8220;Famo.us&#8221;. Famo.us a cr\u00e9\u00e9 son propre\u00a0Framework afin de rendre des \u00e9l\u00e9ments HTML5 avec des effets 2D ou 3D rapidement. Et pour y arriver, la meilleur solution est de &hellip; <\/p>\n<p class=\"link-more\"><a href=\"http:\/\/lalloue.fr\/blog\/famo-us-sauveur-du-html5\/\" class=\"more-link\">Continuer la lecture <span class=\"screen-reader-text\"> \u00ab\u00a0Famo.us : Sauveur du HTML5 !\u00a0\u00bb<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[31,9],"tags":[10,39],"_links":{"self":[{"href":"http:\/\/lalloue.fr\/blog\/wp-json\/wp\/v2\/posts\/48"}],"collection":[{"href":"http:\/\/lalloue.fr\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/lalloue.fr\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/lalloue.fr\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/lalloue.fr\/blog\/wp-json\/wp\/v2\/comments?post=48"}],"version-history":[{"count":14,"href":"http:\/\/lalloue.fr\/blog\/wp-json\/wp\/v2\/posts\/48\/revisions"}],"predecessor-version":[{"id":83,"href":"http:\/\/lalloue.fr\/blog\/wp-json\/wp\/v2\/posts\/48\/revisions\/83"}],"wp:attachment":[{"href":"http:\/\/lalloue.fr\/blog\/wp-json\/wp\/v2\/media?parent=48"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/lalloue.fr\/blog\/wp-json\/wp\/v2\/categories?post=48"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/lalloue.fr\/blog\/wp-json\/wp\/v2\/tags?post=48"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}