6 raisons d’utiliser Actionscript 3 par Lee Brimelow

20 août 2008 – 8:19

Parfois c'est nécessaire d'avoir quelques arguments en réserve pour convaincre un client ou un supérieur qu'il vaut mieux travailler avec la dernière version de flash.

Six reasons to use ActionScript 3.0

Actionscript & ECMA Script, le divorce forcé…

18 août 2008 – 13:33

Cela fait deux jours que je parcours un peu tous les blogs que je connais à propos de l'annonce d' ECMA International de laisser tomber la version 4 d'ECMA Script (ES4) pour se concentrer sur la prochaine version d' ECMA Script 3.1 (ES3.1), j'en profite pour faire un petit résumé et donner mon avis sur les conséquences de cette décision.

Histoire d'un peu mettre tout le monde dans le contexte, ECMA est une organisation internationale qui s'occupe de définir des standards dans le domaine de l'information et de la communication. Ecma Script est un langage de script standardisé par ECMA International et utilisé de diverses manières sur internet. On en a tous entendu parler sous le nom de Javascript et plus particulièrement Actionscript pour les flash/flex développeurs.

En effet, Adobe a pris le temps de faire d'actionscript est langage conforme au standard Ecma Script. Pour être plus précis, actionscript 3 a toujours été présenté comme une implémentation du futur ES 4. Cependant Adobe a utilisé une version brouillon de ES 4; en d'autres mots, actionscript 3 est conforme à un standard qui n'a pas encore été validé comme tel et qui sans doute ne le sera pas avant longtemps. Le problème étant que le comité chargé de valider ces propositions a décidé de laisser tomber Ecma Script 4 en faveur d'Ecma Script 3.1. qu'on appelle aussi Ecma Script Harmony...

Depuis un moment le développement d'Ecma Script était scindé en deux groupes. Google, Adobe, Mozilla et Opera se focalisaient sur ES 4 alors que Microsoft et Yahoo préféraient évoluer vers un Ecma Script 3.1 moins ambitieux. La raison officielle de cet abandon serait que certains changements dans ES 3.1 allaient poser problème à la version ES 4. (oooh...) Mais de ce que j'ai pu lire, il me semble plus probable que la vrai raison soit encore une fois une question d'argent surtout pour Microsoft.

Adobe a misé beaucoup sur Ecma Script 4, les plateformes Flash et Flex utilisent actionscript 3 et ce n'est pas sans raison si Adobe a fait cadeau du projet Tamarin à Mozilla, en leur donnant le moyen de rapidement implémanter le support d'ES 4. Et il ne le cache pas :

The goal of the "Tamarin" project is to implement a high-performance, open source implementation of the ECMAScript 4th edition (ES4) language specification.

Cette démarche n'est pas dénuée de sens, faire évoluer Ecma Script demande que les navigateurs puissent supporter la nouvelle version du langage, cela prend du temps et donc de l'argent.

Adobe donne un coup de pouce car il a tout à y gagner. Ce qui n'est pas le cas de Microsoft qui va devoir développer une nouvelle version de son navigateur Internet Explorer s'il veut respecter le futur standard. Ce dernier a d'ailleurs déclaré qu'il ne ferait pas les frais de ce développement... ce qui veut dire que lorsqu'on s'appelle Microsoft et qu'on a un navigateur qui domine largement parmis les autres sur internet on peut se permettre de décider des standards, parce qu'il est évident que si IE ne supporte pas Ecma Script 4 peu sont les développeurs qui franchiront le pas.

Il suffit de voir la position de Microsoft à propos des futurs changements dans Ecma Script 4.


Et comme le dit très bien Hank Williams sur son blog :

Adobe and Microsoft are bitter rivals, and the last thing Microsoft would be willing to accept is wide-spread adoption of a language that is strategically critical to a competitor.

Finalement actionscript 3 n'est donc pas conforme au futur Ecma Script 3.1 puisque ce dernier n'a pas intégré tous les changements d'Ecma Script 4.

Allons-nous devoir faire marche arrière pour rester conforme ?
Retirer les "namespaces", " package" etc.
Bien entendu non, heureusement, Adobe a déjà répondu à cette interrogation.

Conclusion, l'innovation est bien souvent sabotée de l'intérieur, les standards prennent du temps à être mis en place, mais Adobe n'aura pas le temps d'attendre, Actionscript est devenu un langage propriétaire par la force des choses.

Reste à voir comment Adobe va tirer son épingle du jeu maintenant qu'il se retrouve seul avec une technologie sur laquelle il a misé ses derniers projets (Flash, Flex, Air, Tamarin, Thermo, etc.)

Flash Player 10 beta 2 - unloadAndStop et clavier en plein écran

3 juillet 2008 – 10:36

Adobe Flash Player 10 beta 2 est disponible sur le labs avec quelques nouveautés

Ce qu'on retient :

  • unloadAndStop, qui est l'équivalent de la fonction unload en actionscript 2. En résumé , lorsqu'on exécute unloadAndStop le contenu chargé est immédiatement supprimé et mis à disponibilité du "garbage collector" de flash en arrêtant tous les processus sonore, supprimant les "eventsListeners" actifs et tout autres références actionscript. Cela devrait alléger nos méthodes maison genre "kill" ou "destroy".
  • En mode plein écran vous pourrez avoir accès aux touches du clavier (space,tab,arrows,shift) de manière à pouvoir contrôler les applications flash en plein écran.

Ceci vient s'ajouter à tout cela

[AS3] Opération mathématique de base avec un nombre décimal

19 juin 2008 – 23:17

J'ai fait une petite découverte assez stupéfiante en faisant la somme de nombres décimaux en actionscript 3. L'exemple ci-dessous représente bien le problème :

Recopier le code suivant dans un fla vide et compilez !

var myNumber:Number = 0;
for(var i:Number = 0; i<10; i++){
	myNumber += 0.1;
	trace(myNumber);
}

En fenêtre de sortie vous aurez le résultat suivant :

0.1
0.2
0.30000000000000004
0.4
0.5
0.6
0.7
0.7999999999999999
0.8999999999999999
0.9999999999999999

Par contre si vous recompilez le même fichier en actionscript 2, tout rentre dans l'ordre...

Après quelques recherches j’ai été encore plus surpris par la réponse d’adobe :

This is a fact of life in applications that use floating point arithmetic

Autrement dit : "C'est pas un bug alors démerde toi..."

Conclusion je trouve ça énorme que des problèmes de ce genre surviennent en actionscript 3 alors que tout allait bien actionscript 2. En attendant je me contente de faire passer tous mes nombres par une méthode qui corrige l'erreur...

var myNumber:Number = 0;
for(var i:Number = 0; i<10; i++){
	myNumber += 0.1;
	myNumber = correctIt(myNumber);
	trace(myNumber);
}
 
function correctIt(value:Number){
	return Math.round(value*100)/100;
}

Résultat :

0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1

C'est pas très esthétique je sais mais je suis ouvert aux autres solutions, n'hésitez pas.

Un thread à ce sujet sur le forum de Kirupa.

Flash Player 10 - nom de code “Astro”

15 mai 2008 – 10:47

Adobe Flash Player 10 disponible en version beta sur le labs.

Ce qu'on retient :

  • Adobe Pixel Bender, pour la création de filtres et effets, même technologie que celle dans After Effects CS 3.
  • Enfin, la 3D dans Flash de manière native arrive ! Il précise que ce sera léger et rapide... à comparer donc avec les moteurs actuels comme Papervision3D, Sandy et Away3D.
  • Nouveau moteur de texte !!! Je crois que c'est la meilleur nouvelle qu'adobe pouvait faire. Espérons qu'il sera à la hauteur. Le "right to left" est géré.
  • Amélioration de l'API de dessin avec de nouvelles méthodes 3D.
  • Nouveau système de gestion des couleurs pour permettre à un swf d'avoir un profil couleur standard (sRGB).
  • Utilisation de la carte graphique pour accélérer les calculs sur les bitmaps, filtres etc. Si la carte graphique du client n'est pas suffisante, flash player repasse en mode "software rendering".
  • Amélioration du moteur d'anti-aliasing.
  • Nouveau type de donné : Vector.
  • Changement automatique du bitrate lors d'un streaming vidéo, selon les conditions de la bande passante.
  • Amélioration de FileReference, on peut traiter directement ce qu'on charge depuis le client sans passer par le serveur, en utilisant une API.
  • Génération de son dynamique (créer du contenu audio).
  • Amélioration du support de bitmap 4096px sur 4096px, 16.777.216 pixels au total. (c'est basé sur la surface donc on peut avoir un côté de 8191 pixels).
  • Plus de contrôles dans la gestion du menu contextuel. Accès au presse papier.
  • Gestion du dernier set de caractère chinois.
  • Ubuntu OS Support for Flash Player 10

Voilà d'excellentes nouvelles, je suis impatient !

[DEBUG!] Wirtualne Centrum Sztuki Współczesnej

5 mai 2008 – 9:07

http://www.ecsw.pl/

Agence : beestudio

Erreur (en ouvrant une page web, ma fenêtre a redimensionné) :

TypeError: Error #1009: Cannot access a property or method of a null object reference.
at project.main.Preview::Preview/_stageResize()

[DEBUG!] UNIQLO’S UT LOOP!

30 avril 2008 – 8:57

http://www.uniqlo.com/utloop/

Agence : tha ltd

Erreur (lorsque qu'on tente de créer une boucle en mode "play") :

TypeError: Error #1034: Type Coercion failed: cannot convert net.soohei.events::CustomEvent@13e54bd9 to flash.events.NetStatusEvent.
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at net.soohei.util::VideoPlayer/statusHandler()

[DEBUG!] Levi’s Lady Style - 2008 Spring Summer Collection

28 avril 2008 – 10:27

http://www.cuttorevealyou.com

Agence : Olgivy Interactive Singapore

Erreur (lorsqu'on ferme le navigateur) :

Error #2044: Unhandled IOErrorEvent:. text=Error #2036: Load Never Completed.

Utilisez le Flash Player “debug” d’adobe !

28 avril 2008 – 9:39

Flash 9 et l'actionscript 3 sont omniprésent sur internet, la majorité des nouveaux sites sont en AS 3 et ces derniers ne sont malheureusement pas soumis à un contrôle de qualité suffisant !

Il suffit de visiter quelques sites référencé sur The FWA avec le flash player debug pour se rendre compte qu'il reste des erreurs sur la plupart d'entre-eux. Pourtant ces sites sont développés par des agences professionnels et vendu à des clients comme produit fini !

C'est pourquoi j'ai décidé de créer une nouvelle catégorie : "Debug !" dans laquelle je posterai des sites qui n'ont pas été testé et/ou débuggé suffisamment avant leur passage en production. Une façon simple de peut-être faire réagir les développeurs.

[AS3] Fullscreen avec StageDisplayState.FULL_SCREEN

8 mars 2008 – 3:47

Pour la réalisation d'un cd-rom en Flash j'avais besoin de passer en plein-écran, ce qui se fait très facilement via fscommand. Cependant je viens de découvrir la méthode displayState de la classe Stage qui permet de choisir entre un état "NORMAL" ou "FULL_SCREEN" pour le flash player.

fscommand("fullscreen", "true");

Au début j'ai pensé que c'était pareil, rien de spécial, mais j'ai vite remarqué qu'il y a un détail subtile qui me fait dire que vous pouvez dire adieu à fscommand pour faire du plein-écran. Avec fscommand, lorsque vous exécutez votre swf, vous verrez que pendant une fraction de seconde le flash est ouvert à sa taille "normal" puis qu'il passe en "fullscreen". Ce qui a pour conséquence que souvent on attribue un écouteur à la scène pour afficher le contenu une fois que le player est passé en plein-écran. Mais si vous utilisez stage.displayState le mode plein écran est instantané à l'exécution du swf. Si vous tracez directement le stage.stageWidth et stage.stageHeight ça renverra la taille de l'écran.

stage.align = StageAlign.TOP_LEFT;
stage.displayState = StageDisplayState.FULL_SCREEN;
stage.scaleMode = StageScaleMode.NO_SCALE;
 
var output:TextField = new TextField();
output.text = stage.stageWidth+" * "+stage.stageHeight;
addChild(output);

Vous pouvez copier l'exemple ci-dessus d'un fla vide et tester le swf pour voir le résultat.
Dans le même genre il y a aussi :

  • une classe FullScreenEvent qui s'occupe de signaler le passage en plein-écran.
  • deux propriétés stage.fullScreenWidth et stage.fullScreenHeight qui renvoient la taille de l'écran lorsque celui-ci passe en plein-écran.
  • la possibilité de passer une zone précise du Flash en plein-écran avec stage.fullSceenSourceRect (j'ai pas encore testé).

ATTENTION que les deux derniers points ne sont disponible qu'à partir de la troisième mise à jour du flashplayer 9

Conclusion, si vous désirez passer en plein-écran, pensez à StageDisplayStage.FULL_SCREEN et oubliez fscommand.