P3 A new story begins

Aller au contenu | Aller au menu | Aller à la recherche

jeudi 1 octobre 2009

Astuce AS3 - CheckBox non éditable

Je me suis longtemps posé une question toute bête...

Commet écrire un renderer avec une case à cocher (checkbox) non éditable !!!

En effet la propriété toggle est inaccessible depuis la clmasse mx.controls.Checkbox.

Et bien il suffit tout simplement de surcharge les gestionnaire de click et de luis dire de ne plus rien faire

Et voila!!! On a une checkbox totalement passive, je vous rassure on peut tout de même modifier sa valeur programatiquement. (c'est automatique via le renderer)

  1. public class BooleanRenderer extends CheckBox
  2. {
  3. public function BooleanRenderer()
  4. {
  5. super();
  6. this.setStyle("textAlign", TextFormatAlign.CENTER);
  7. }
  8.  
  9. override protected function clickHandler(event:MouseEvent):void
  10. {
  11. event.stopImmediatePropagation();
  12. return;
  13. }
  14. }
  15.  
  16. //Utilisation en tant que renderer.
  17.  
  18. <mx:Component id="booleanRenderer">
  19. <renderer:BooleanRenderer />
  20. </mx:Component>

jeudi 3 septembre 2009

Une histoire de Trans

Le saviez-vous ?

Il existe deux manières de faire du transtypage (Cast) avec Action Script 3

  1. monInstance as Voiture
  2. Voiture(monInstance)

Mais quelle est donc la différence ??

Si votre objet monInstance n'est pas une instance de la classe Voiture:

  1. avec l'operateur as l'instance monInstance sera initialisé avec null si la référence n'est pas du même type
  2. avec la forme XXX() une erreur sera lancé (similaire au ClassCastException du monde Java), voici la version française sortant tout chaude de la console => TypeError: Error #1034: Echec de la contrainte de type :

Cette petite subtilité peut avoir une très grande importance dans une application Flex (ou Flash) alors pensez-y !!

mercredi 4 février 2009

Version minimale requise

Voici les versions minimales requises pour pouvoir utiliser Flampy

  • PHP 5.3
  • Action Script 3 / FlashPlayer 9

Non je ne voue pas une adoration pour le chiffre 3, c'est un pur hasard. De même la version 5.3 de PHP n'est qu'une version pre-release mais qui supporte les namespace (=package) qui est une évolution tant attendue !!! De toute manière Flampy est fonctionnel mais pas terminé donc on verra qui est prêt en premier. Perso je mise sur le bébé de Zend :D

Edit: La migration de Flampy en PHP 5.3 est achevée, il reste quelques bricoles à débugger mais le principal est fait :D

dimanche 7 décembre 2008

Preloader ActionScript 3.0

Je suis en train de réécrire le code ActionScript 3.0 d'un petit player MP3 en flash (swf).

Vous pouvez voir le player sur mon site de musique (en travaux)

Aujourd'hui je vais vous donner le code du preloader en ActionScript 3.0 :

Sur la première frame de votre scénario, créez un calque que vous nommerez Actions et ne mettez rien dessus. Puis ouvrez le panneau Action (touche F9), et copiez-collez le code ci dessous....

  1. //Play the wait animated icon
  2. wait_mc.play();
  3.  
  4. //Listen the progress Event
  5. this.loaderInfo.addEventListener(ProgressEvent.PROGRESS , onLoadProgress);
  6.  
  7. //Listen the end of progress
  8. this.loaderInfo.addEventListener(Event.COMPLETE, onLoadComplete);
  9.  
  10. /**
  11.  * Update the progress bar.
  12.  */
  13. function onLoadProgress(event:ProgressEvent):void
  14. {
  15. var bl:int = event.bytesLoaded;
  16. var bt:int = event.bytesTotal;
  17. var amountLoaded:int = Math.floor((bl / bt)*100);
  18.  
  19. trace(amountLoaded * 2);
  20. progressWaitBar_mc.width = amountLoaded * 2;
  21. trace(amountLoaded);
  22. chargement.text = Math.round(amountLoaded ) + "%";
  23.  
  24. }
  25.  
  26. /**
  27.  * Download achieved, display the MixTape MP3 Player
  28.  */
  29. function onLoadComplete(event:Event):void
  30. {
  31. trace("Download Complete ! ");
  32. gotoAndStop(2);
  33. }
  34.  
  35. //Manage cache-control for new web browser
  36.  
  37. //Listen the EnterFrame event, if we enter into the first frame and the swf is totally downloaded
  38. stage.addEventListener(Event.ENTER_FRAME, checkComplete);
  39.  
  40. /**
  41.  * Display the MixTape MP3 Player if the swf file was retrieved from cache.
  42.  */
  43. function checkComplete(event:Event):void {
  44. //File was entirely downloaded
  45. if ( LoaderInfo(this.root.loaderInfo).bytesLoaded == LoaderInfo(this.root.loaderInfo).bytesTotal ) {
  46. //Stop to listen
  47. stage.removeEventListener(Event.ENTER_FRAME, checkComplete);
  48.  
  49. trace("Cache Complete ! ");
  50. gotoAndStop(2);
  51. }
  52. }
  53.  
  54. //Don't go to the next frame until I decide !
  55. stop();

Si vous faites Ctrl+Entrée pour tester l'animation cela plantera car :

  • vous n'avez pas le movie clip wait_mc (c'est une animation d'attente)
  • vous n'avez le movie clip progressWaitBar_mc (c'est juste un rectangle avec un masque pour simulez une barre de progression)
  • vous n'avez pas le textfield chargement (ou on fait avancer le pourcentage)
  • vous n'avez pas de frame 2 (c'est là que vous mettrez votre animation)

En espérant vous avoir aidé, n'hésitez pas à demander de l'aide !!!