Flash c’est le mal !!! Oui c’est Steeve qui le dit. Here comes a new challenger : HTML5


Avec Flash

Depuis que j’utilise Mac OS X, j’ai enfin compris pourquoi certains détestent tant flash : le lecteur n’est pas vraiment optimisé pour cet environnement.

Depuis ses débuts, Flash a toujours eu ses détracteurs. Au départ, certains trouvaient que c’était une techno jeune qui ne permettait pas grand chose. Par la suite, on a vu l’apparition de « faux » développeurs : des débutants ou des graphistes qui ont profité de l’accessibilité d’actionscript pour s’y mettre. Mais voilà, ils avaient plus tendance à coder avec leurs pieds qu’avec leurs mains (et je mentirais si j’disais ne jamais en avoir fait partie). Cependant, avec AS3 ce côté langage accessible aux  « faux » développeurs est en train de disparaitre, il me semble…

Enfin, il y a toujours eu des personnes associant uniquement flash aux sites full flash et à la publicité. Puis certains se sont rappelé qu’il avait la gestion des médias (vidéos, images et sons), d’autres se sont souvenus des jeux, et ainsi de suite…

Pourquoi Apple ne veut pas de flash sur ses plateformes

AppleEt c’est sur ce point qu’entre en jeu notre Cher Steeve Jobs. Celui-ci avait au départ officiellement expliqué  que flash ne pouvait pas être lisible sur Iphone pour « raison technique ». On aurait donc pu espérer le voir sur Ipad… mais ce n’est toujours pas le cas.
Officieusement, Apple ne veut pas de flash sur sa plateforme mobile pour des raisons valables : la non optimisation du lecteur, le fait que flash bouffe de la batterie (quand même), mais aussi et surtout parce qu’avec flash on peut créer des jeux ! Et donc, si le PDG  d’Apple ne protège pas l’écosystème de l’Appstore des « mauvais » développeurs flash, il risque de perdre beaucoup d’argent. Il a donc tout intérêt à ce que l’Appstore soit la seule et unique porte d’entrée des nouvelles applications sur les terminaux Apple.
Officiellement et plus récemment, « Apple croit fortement que tous les standards concernant le web doivent être ouverts », d’où l’adoption de HTML 5, css et javascript. Et comme flash est le premier facteur de plantage des mac, pour des raisons de techniques (de nouveau), de stabilité,  de performance et d’autonomie, le plugin ne sera toujours pas intégré sur ses plateformes mobiles.

Bref, on l’aura compris : il n’est pas question d’installer le plugin pour les versions ultra mobile de la firme à la pomme. Et il n’est pas non plus question pour Apple de prendre en compte flash 10.1, une version apparemment revue et corrigée en fonction des critiques.

Apple n’en veut donc pas sur sa plateforme et cela peut se comprendre. Mais là ou l’explication devient bancale, c’est lorsqu’on apprend que  Jobs prône le format H.264 pour le HTML  5  (HTML 5 n’est pas un format vidéo contrairement à ce que pensent beaucoup d’internautes, mais il a une balise video). Le H.264 est un format fermé, qui, soit dit en passant, peut être lu par flash. Et à chaque fois qu’on utilise ce format, on donne des royalties à Apple. Et oui ! Le H.264 est basé sur un certain nombre de brevets logiciels, appartenant à diverses sociétés, dont Apple. Toutes ont décidé de s’unir pour en faire un « patent tool » confié à la MPEG LA (organisme qui gère les droits sur ces brevets logiciels). Les sociétés propriétaires du H.264 peuvent ainsi demander des royalties à ceux qui l’utilisent (à l’exception des membres du comité, bien entendu).
C’est sûrement à ces fins commerciales qu’Apple souhaite l’adoption rapide du HTML 5.
Autre information, le H.264 est le seul codec qui peut être accéléré par le hardware pour Apple.

Steeve Jobs nous apprend aussi que le flash n’est pas adapté au format mobile et aux écrans tactile. Les raisons ? Le flash ne gèrerait que les actions de la souris (survol). Mais la nouvelle version de flash  apporte une meilleure prise en charge du tactile. De plus, Adobe CS5 aurait pu permettre de compiler directement au format Iphone.

Aparté : il est possible de faire du flash sans Adobe flash cs et donc de générer un swf. Pour y parvenir, il existe des logiciels gratuits ou payants (bien moins cher que flash cs) : Swish, MTASC, Haxe, Eclipse…

Pourquoi interdire l’utilisation de logiciels tiers pour créer du contenu Iphone ou Ipad alors ?

Steve-Jobs-AppleAvec son article 3.3.1, Apple a récemment changé les conditions d’utilisation destinées aux développeurs. Ceux-ci doivent impérativement écrire leurs applications, dès l’origine, en C, C++, Objective C ou en javascript.

Il sera donc impossible de créer des contenus Iphone ou Ipad depuis flash CS5, iSpectrum, MonoTouch, Titanium ou Unity. Une raison tout à fait légitime puisque cela permettrait d’avoir des applications optimisées et « mieux » codées.

3.3.1 — Applications may only use Documented APIs in the manner prescribed by Apple and must not use or call any private APIs. Applications must be originally written in Objective-C, C, C++, or JavaScript as executed by the iPhone OS WebKit engine, and only code written in C, C++, and Objective-C may compile and directly link against the Documented APIs (e.g., Applications that link to Documented APIs through an intermediary translation or compatibility layer or tool are prohibited).

Mais il pourrait bien y avoir une autre raison… commerciale bien sûr !!! Avec flash CS5 on peut créer du contenu multiplateforme et apparemment ce n’est pas du goût d’Apple. On pourrait aussi se dire que ce n’est pas que pour fermer la porte aux développeur flash mais aussi pour empêcher les développeurs sous Cocoa ou autre d’aller voir ailleurs…

Quand Microsoft s’en mêle…

windows-mobileMicrosoft, quant à lui, ne veut pas non plus du plugin d’Adobe sous Windows mobile 7. En revanche, il aimerait pousser sa techno Silverlight. En cas d’échec, pas de souci : il pourra toujours toucher des royalties avec le H.264 puisqu’il est lui aussi détenteur du brevet (et ne s’en cache pas).

html5

Ce qu’on ne vous a pas dit sur le HTML 5

A force de lire les commentaires sur certains sites, je tenais juste à rappeler que, HTML 5 n’est pas un plugin, ni un format vidéo.  HTML 5 est la « suite » de HTML, qui est, pour rappel, un langage de description de page et un conteneur. Le langage a évolué et embarque à présent des API, de nouvelles balises dont la fameuse balise <video> ou encore <canvas> (permettant la création  d’éléments graphiques) et de nouveaux attributs.

Successeur de html 4.01, HTML 5 n’est toutefois pas encore finalisé. A l’heure actuelle il n’est pas prudent de l’utiliser car tous les navigateurs ne l’interprètent pas correctement (suivez-mon regard…)

La manière dont se profile l’avenir de la vidéo avec le HTML5 (si on ne garde pas qu’un seul codec) prend des airs de régression. En effet, si on se projette plusieurs années en arrière, on se rappellera de notre manière de regarder les vidéos en ligne :  Quick time player, windows media player, real one player… pas très pratique tout ca.
Actuellement, si je ne dis pas de bêtise en ce qui concerne le HTML 5 on a cette « fragmentation ». Il y a plusieurs codecs pour la lecture des vidéos : le H.264, Ogg Vorbis, Theora (on2 vp3), on2 vp8 et sûrement d’autres.

Faire des animations avec HTML 5, ce sera toujours moins « bien » qu’avec du flash ou d’autres outils spécialisés. Mais ne réduisons pas le HTML 5 à la vidéo et aux animations.
En tant que Webdesigner, tout ce qui peut permettre une meilleur adoption d’HTML 5 ne peut être qu’encouragé.
Mais en tant qu’internaute qui peut bloquer facilement les pubs (car, en flash), je me dis que je serai dans la m#ù*% quand il faudra bloquer les pubs en HTML 5.

Flash c’est lourd quand même, mais ca peut servir

Flash

Flash est à la base prévu pour créer des animations vectorielles. Mais il a, avec le temps, été « amélioré » pour être utilisé à d’autres fins. Il y a quelques années on voyait en « AJAX » la solution miracle, le flash Killer… Mais, les animations en javascript ne sont pas aussi fluide et complexe que celle en flash. La récupération des données en restant sur la même page a les mêmes désavantages que le flash en termes de référencement et de navigation (possibilité comme pour flash d’utiliser swf adress pour palier cela).
Pour l’heure les animations en 2D et 3D ne valent pas celles de flash mais ce n’est certainement qu’une question de temps.

D’un côté, certaines personnes (le grand public) réduisent l’utilisation de flash  à la vidéo, les jeux et les pubs alors qu’on peut s’en servir pour des applications exécutables (ne nécessitant pas de plugin), des animations, des BD en ligne,  applications multimédia, des module web interagissant avec une base de données.

D’un autre coté le flash player n’est pas optimisé et son développement est assez lent. De plus, il à tendance à faire planter le navigateur quand on a plusieurs onglets contenant du flash (le mélange firefox/safari + flash est pas mal). Adobe améliore les choses avec son système de mise en pause des applications flash contenues dans un onglet masqué. Par ailleurs, il s’associe avec différents producteurs de hardware pour optimiser le flash player pour ces hardware. En termes de référencement, il ne faut pas utiliser flash pour du contenu purement textuel. En termes de mobilité, pour l’instant, le flash player n’est clairement pas adapté aux appareils mobiles. Mais n’est-ce qu’une question de temps ?

Flash est la plaie de beaucoup d’internautes mais on oublie souvent qu’avant, on avait droit aux gifs animés et que flash a quand même fait changer les choses. Oui oui on a tous eu droit au site avec une animation d’intro qu’on a voulu sauter !-)

Enfin moi ce que j’en dis hein !

AndroidPour finir je dirais que j’ai un Ipod  touch et que le fait de ne pas avoir flash ne m’a pas dérangé. Maintenant, sous Android, avec un HTC Desire, j’ai flash mais je ne vais pas sur les sites en flash car inadapté.
Cette histoire de flash ou pas flash sur le mobile est je pense la partie visible de l’iceberg. Le véritable enjeu est économique et de ce côté, Apple n’est pas très clair et Adobe ne veut surement pas être mis de coté non plus.

De toute manière je pense qu’on va encore bouffer du flash pendant au moins 5 ans si ce n’est plus… mais Adobe devrait réagir s’il veut rester un acteur important du net.

Et pour ceux qui en ont marre des pubs attendez vous prochainement à voir : « BLOCK HTML 5 content » !

Sans Flash

Envoyer des informations à google analytics de flash avec getURL ou ExternalInterface

Flash et Google AnalitycsLosqu’on a un site internet c’est toujours bien de savoir ce que font les internautes lors de leurs visites. Problème : un site en flash ne permet pas facilement de récupérer ces infos. j’entends déjà les détracteurs de flash : « …de toute façon flash c’est pourri, on peut rien faire avec, ca ne sert que pour les jeux, la musique, la vidéo (PLus pour longtemps :html 5)  et la pub !!! …. »

mmmm

Ok,  Bon ! Je disais donc , grâce à l’outil gratuit et très performant de google vous allez pouvoir récupérer les statistiques de votre site au clic et je dirais même au mouvement de la souris près.

Avant de commencer placez le code donné par google avant la balise </body>.

&lt;script type="text/javascript"&gt;
var gaJsHost = (("https:" == document.location.protocol) ? "<a href="https://ssl">https://ssl</a>." : "<a href="http://www">http://www</a>.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
&lt;/script&gt;
&lt;script type="text/javascript"&gt;
var pageTracker = _gat._getTracker("UA-xxxxxx-x");
pageTracker._initData();
pageTracker._trackPageview();
&lt;/script&gt;

Passons maintenant à l’envoi des informations. Pour cela vous avez le choix :

Soit en utilisant « getURL »

C’est le code donné par google :

 monBouton.onRelease = function ():Void  {
       getURL("javascript:pageTracker._trackPageview("/medias/video/flash.html/");");
// vos actions
}

Soit en utilisant « ExternalInterface »

import flash.external.ExternalInterface;
 
/* sur une timeline */
function statGoogle(page:String) {
    //ancien code Google Analytics
   ExternalInterface.call("urchinTracker('/urchin/IntegrateGoogleAnalytics/"+page+"')");
      //Nouveau code Google Analytics
    ExternalInterface.call("pageTracker._trackPageview('/pageTracker/IntegrateGoogleAnalytics/"+action+"')");
   }
 
/* et maintenant pour l'utiliser */
 
monBouton.onRelease = function () {
 
statGoogle("/medias/video/flash.html/");
 
}

Enfin pour bien faire les choses, ajoutez cet  appel à swfadress, qui permet de naviguer dans un site flash en utilisant le refresh (f5), le bouton retour, une adresse url etc…

Et ca c’est pour bientôt.

+++

Flash et javascript : externalInterface – appeler une boite modal contenant une vidéo youtube depuis flash

Dans cette exemple, nous allons créer une animation flash dans laquelle nous allons écrire l’identifiant youtube de la vidéo.
Ensuite au click après vérification du nombre de caractères, une boite modal, genre « lightbox », va s’ouvrir avec la vidéo Youtube voulu.

Voila l’exemple

Mais avant ca, une petite explication sur ExternalInterface Continuer la lecture de « Flash et javascript : externalInterface – appeler une boite modal contenant une vidéo youtube depuis flash »

La Classe BitmapData – Image background fullscreen qui se redimensionne proportionellement avec le filtre Smooth

fullscreen-bitmapAprès ce titre très SEO friendly, voici une manière d’avoir en background, comme sur certains sites, une image qui prend toujours tout l’espace et qui n’est pas pixelisée ni trop « abimée » par le redimensionnement.

Les images sont de grande taille mais vous pouvez tester avec des images plus petites pour voir ce que cela donne.

Le code permettant de redimensionner en appliquant le smoothing provient de ce site.
Modifiez la taille de votre navigateur pour voir le script en action.
Cliquez pour changer d’image.

L’exemple
Le FLA

et zou le code ci dessous :

Continuer la lecture de « La Classe BitmapData – Image background fullscreen qui se redimensionne proportionellement avec le filtre Smooth »

La Classe BitmapData – un background avec un motif répété et chargement d’images

Ce post est très long car il y a plusieurs exemples. Même si il n’est pas très compliqué, j’espère que sa longueur ne va pas le rendre trop indigeste ou incompréhensible…

Le but : créer comme en css un fond avec un motif répété.  Comme le code ci-dessous :

L’exemple (contenant les exemples à venir…)
Continuer la lecture de « La Classe BitmapData – un background avec un motif répété et chargement d’images »

La Classe BitmapData – Charger une image externe en faire un instantané et effacer l’image chargée dont nous n’avons plus besoin

afficherimagebitmapdataLa  class BitmapData vous permet de travailler avec les data (pixels) de votre image. Elle permet de représenter un objet bitmapData en mémoire. Lorsque vous créez une nouvelle instance de la class , une image vide  est stockée en mémoire. Vous pourrez ensuite manipuler ces  instances avec divers méthodes de la class bitmapData. La class bitmapData est située dans le package flash.display.

Dans l’exemple donné, cliquez sur l’image pour ajouter un effet biseau.

L’exemple
Continuer la lecture de « La Classe BitmapData – Charger une image externe en faire un instantané et effacer l’image chargée dont nous n’avons plus besoin »

Concatener avec des noms dynamics sous action script 2

Voici comment concaténer des noms de variables dans une boucle par exemple :

for (var i=0; i<2; i++)
{
monMc["sousItem"+i].enabled = false;
}

identique à
monMc.sousItem0.enabled = false;
monMc.sousItem1.enabled = false;
monMc.sousItem2.enabled = false;

Petit code rapide qui sert souvent !

+++

Boucles for & onRelease, comment affecter des actions aux boutons contenus dans la boucle

Vous faites une boucle dans laquelle vous ajoutez un onRelease sur plusieurs boutons, qui s’insécrémentent, et la malheur au moment de la publication : en cliquant sur un bouton celui-ci renvoie toujours sa dernière valeur.

PS: pour cet exemple créer dans la bibliothèque un movie clip  dont le nom de liaison est bouton celui contiendra 2 calques:
– un champs de texte dynamique appellé leNombre (calque 1)
– un carré de 50px sur 50px par exemple (calque 0 niveau inférieur)

Puis inscrivé le script ci dessous sur un calque vierge.
Un fla par script étant donné qu’ils sont sensés faire la même chose, même si le premier script ne fonctionne pas (c’est pour l’exemple).

L’exemple.

Pourquoi une boucle comme celle ci-dessous ne fonctionne pas.

Continuer la lecture de « Boucles for & onRelease, comment affecter des actions aux boutons contenus dans la boucle »