jeudi, mai 25 2006

[pixLib] - MVC FrontController + Remoting

Salut toi,
Toi qui veux découvrir les joies que peuvent procurer l'usage de pixLib. :)
Saches que Mike de deja-vue.net vient de publier un billet qui devrait t'intéresser au plus haut point. :)

ActionStep (plugin View) / Pixlib (MVC FrontController + Remoting) SUSHI Service

Tu y découvriras une implémentation du "global" MVC (Model-vue-controleur) de pixLib, ainsi que du package remoting pixlib (alpha), le tout assaisonné de sushi.

Bonne lecture :)

mercredi, mai 10 2006

[pixLib] - GraphicLib et MovieClipHelper vs MovieClip (partI)

Ce qui suit aurait du être en ligne depuis bien longtemps, car à mes yeux il s'agit d'une des pierre angulaire de pixLib. Depuis ça découverte je ne peux plus m'en passer. :)

AbstractLib

Commençons par le commencement, et donc par AbstractLib, une classe abstraite (constructeur privé) qui est étendu par l'ensemble des «librairies» de pixLib.

Quelques variables…

AbstractLib possède plusieurs variables privées accessible via des méthode public :

  • Un nom (String) -> getName, setName
  • Une URL (String) -> getURL, setURL
  • Un TimeOut (Number) -> getTimeOut, setTimeOut
  • Un contenu (non typé) -> getContent, setContent
  • Force le chargement (Boolean) -> setAntiCache(avec/sans cache)
  • Un niveau de chargement -> getBytesLoaded, getBytesTotal, getPerCent
Quelques methodes…
  • load, lance le chargement.
  • execute, qui lance load.
  • release, détruit la gestion d'événement.
Une gestion d'événement…
  • initEventSource, initialise le type d'événement (LibEvent).
  • fireEvent, permet d'envoyer un événement typé LibEvent à l'ensemble des abonnées.
  • fireEventType, permet d'envoyer un événement typé EventType à l'ensemble des abonnées.
  • addListener, permet de s'abonner à l'ensemble des événements.
  • removeListener, permet de se désabonner de l'ensemble des événements.
  • addEventListener, permet de s'abonner à un type d'événement.
  • removeEventListener, faut vraiment que je le dise ?! (comme haut dessus mais l'inverse). ^^

Pour en savoir plus sur la gestion d'événement dans pixLib -> pixLib une programmation événementielle typée.

Voilà pour l'AbstractLib, il s'agit donc d'une classe abstraite qui a tous les outils nécessaire pour gérer le chargement d'un contenu, chacune des classes filles sert à gérer le chargement de contenu plus spécifique, comme GraphicLib qui est spécialisé dans le chargement des swf, jpeg et png de puis Flash8.

Lire la suite...

lundi, mai 8 2006

[pixLib] - LibStack ou le multi-chargement

Bonjour,
suite à une question posé sur le forum de media-box, je me suis décidé à faire une introduction sur le multi-chargement dans pixLib.

Ce que j'appelle le multi-chargement est en fait la mise sous forme de pile (stack) une liste d'objets que l'on veut charger. Pour réaliser ce chargement progressif pixLib possède la classe LibStack. :)

Outils

Comment utiliser la LibStack ?

Avant toute chose il faut savoir que si on utilise pixLib ce n'est pas pour simplement charger un swf ou un jpeg et le manipuler tel quel, mais bien pour charger ceux-ci directement dans une librairie de pixLib (outils qui facilite leur manipulation).
Pour faire du multi-chargement il suffit tout d'abord de construire une instance de LibStack, à laquelle on ajoute la liste des éléments que l'on veut charger ainsi que le type de librairie que l'on veut obtenir à la sortie, il ne reste plus qu'a lancer le chargement. La LibStack va charger chaque éléments de la liste, les uns après les autres et les placer dans une instance de librairie voulu, que du bonheur. :) Bien évidement à quoi nous servirait cette outils si il n'était pas fourni avec un bon gestionnaire d'événement ?! Rassurez vous tout a été pensé. ;)

Voyons maintenant ce que ça donne pratiquement.

Ajouter un élément.

public function enqueue(o:ILib, sName:String, sURL:String) : String

La fonction enqueue prends trois arguments et retourne une chaine.

  • o:ILib -> ILib est une interface, qui est implémentée par AbstractLib, une classe abstraite qui est étendu par toutes les librairies de pixLib. En français cela veut dire que l'on peut utiliser n'importe quelle instance de ConfigLoader, GraphicLib, LibStack, VideoDisplay, XMLToObject ou une classe qui implémente ILib comme premier argument de la fonction enqueue().
  • sName:String -> Il s'agit du nom qui serra donné à o:ILib (nom d'instance), c'est ce dernier qui sort en retour de la fonction.
  • sURL:String -> Il s'agit de l'URL du fichier que l'on veut charger (swf, jpeg, xml).

Les événements.

L'instance de LibStack renvoi l'ensemble des événements reçu par la librairie qui est occupé d'être chargé (ILibListener) plus un événement propre à LibStack (onLoadComplete).

  • onLoadInit -> A chaque fois qu'une librairie est finie de charger.
  • onLoadProgress -> Tout au long des différents chargements.
  • onLoadComplete -> Quand toutes les librairies sont chargées.
  • onTimeOut -> Lancé à chaque fois que le timeOut est écoulé (10 secs par défaut).

Un exemple complet avec la GraphicLib :

import com.bourre.data.libs.GraphicLib;
import com.bourre.data.libs.LibEvent;
import com.bourre.data.libs.LibStack;
 
// On crée une instance de LibStack
var oLibStack:LibStack = new LibStack();
 
// On instancie les différentes librairies que l'on veut charger en stipulant la cible et la profondeur,
et en option si le contenu est visible à la fin du chargement (true par defaut).
var gl:GraphicLib = new GraphicLib(this, 5); var gl2:GraphicLib = new GraphicLib(this, 10, false);   // On ajoute les instances de GraphicLib dans la LibStack
en précisant le nom et l'URL des fichiers à charger dedans.
oLibStack.enqueue( gl, "Animation", "anim.swf"); oLibStack.enqueue( gl2, "Photoa", "image.jpg");   function onLoadInit(e:LibEvent) : Void { trace(e.getName()); } function onLoadProgress(e:LibEvent) : Void { trace(e.getName() + ' : ' + e.getPerCent() + '%'); } function onLoadComplete(e:LibEvent) { // Ici on peut lancer une fonction qui serra exécuter à la fin de tous les chargement. } function onTimeOut(e:LibEvent) : Void { // On peut utiliser setTimeOut pour le modifier le délais de 10 secs par défaut. trace("Le chargement de " + e.getName() + " a échoué!"); }   // On ajoute s'abonne au écouteurs écouteur oLibStack.addListener( this ); // On lance le chargement oLibStack.execute();

La suite au prochaine épisode. ;)

lundi, mars 13 2006

[en vrac] - ça flash dans les chaumières

Bientôt le printemps, le soleil brille, les oiseaux arrivent et ça flash dans les chaumières. :)

Sinon get-url.net vient de changer de serveur, j'ai rencontré quelques souci avec les DNS, ce qui explique ce manque d'activité ces derniers jours.

vendredi, janvier 27 2006

[MTASC] - la compilation libre.

MTASC == Motion-Twin ActionScript 2 Compiler;

Un an après la sortie de MTASC, je suis surpris du peu d'informations disponible en français sur le web à propos du compilateur ActionScript 2 open-source de Nicolas Cannasse. Je me permets donc de vous offrir un billet sur le sujet. ;)

MTASC

Historique

  • Décembre 2003, ASML == ActionScriptMetaLanguage;
    Ce lançais avait le compilateur Flash
    Ajoute le «Type Inference» à l'ActionScript 2.
    Accélère la compilation.

  • Avril 2004, Motion Types;
    J'ai assez peut d'infos sur ce compilateur.

  • Janvier 2005, MTASC 1.0;
    Je passe le reste du billet à décrire MTASC. ;-)

  • Novembre 2005, haXe;
    C'est fin octobre que Nicolas nous annonce que MTASC n'irait pas plus loin que l'ActionScript2. Lors du Spark Europe, Nicolas nous a présenté son nouveau projet.
    La réalisation d'un nouveau langage de programmation open-source pour le web.
    Sous ce langage serrait regroupé la partie serveur et client, à partir de haXe on pourra créé des swf du javaScript et du Neko (nouveau langage serveur créé pour l'occasion). Un site est consacré au projet haXe - haXe.org.

Lire la suite...

mardi, janvier 17 2006

[pixLib] - Une programmation événementielle typée

Dans ce billet, je m'attaque au package events de pixLib.
J'avoue avoir eu l'impression d'avancer seul dans le brouillard pour déchiffrer tout ça, et j'espère ne pas être passé à coté de l'essentiel de ce que cette outil nous apporte. Il est conseillé de connaître les bases de la programmation événementielle dans Flash pour comprendre ce qui suit. ;)

Première chose à savoir, le package events de pixLib ce veut polymorphique à celui de Adobe (ex Macromedia).

var oEB : IEventDispatcher = new EventBroadcaster(this);
oEB.dispatchEvent( {type:'onUnTruc', target:this, param:123} );

Deuxièmement, la structure du package events de pixLib permet le typage fort des événements. :)

Lire la suite...

samedi, janvier 7 2006

[pixLib] - import com.bourre.log.LogChannel

Trois jours après la présentation du logguer de pixLib, Francis nous a rajouté une nouvelle fonction au Logguer de pixLib, l'objet LogChannel. Ainsi qu'une indépendance complète vis à vis des classes de LuminicBox (plus besoin de charger le pack). Je me devais de vous faire une petite présentation de cette dernière pour rester à jour :p

L'objet LogChannel est un «filtre» au niveau de l'animation Flash, pour être plus précis, il s'agit d'un troisième argument que l'on rajoute lors du Logger.Log(), cet argument peut-être considéré comme un typage de l'événement. Pour effectuer le tri, il faut rajouter ce «type» d'évenement comme argument des Logger.getInstance().addListener(), ce qui aura comme effet d'envoyer uniquement les éléments qui possède le bon LogChannel (type), c'est pas cool ça? :p

Lire la suite...

- page 5 de 6 -