Publié dans pub-copinage | Laisser un commentaire

Découverte du framework Robotlegs [5/5]

La couche Controller

Les Events


Ici nous avons seulement un unique Event pour ce projet. C’est assez rare, le projet est vraiment petit.

package controller.events
{
	import model.vo.Entry;

	import flash.events.Event;

	public class DiaporamaEvent extends Event
	{
		// événements concernant l'application
		public static const STARTUP : String = 'startup';
		public static const CONFIG_COMPLETE : String = 'configComplete';
		public static const NEXT : String = 'next';
		public static const PREVIOUS : String = 'previous';

		// événements concernant la View
		public static const REFRESH : String = 'refresh';
		public static const LOAD_COMPLETE : String = 'loadComplete';		

		public var entry : Entry;

		public function DiaporamaEvent( type : String,
					    bubbles : Boolean = false,
					    cancelable : Boolean = false,
					    entry : Entry = null )
		{
			super(type, bubbles, cancelable);

			this.entry = entry;
		} 

		public override function clone():Event
		{
			return new DiaporamaEvent( type, bubbles, cancelable, entry );
		} 

		public override function toString():String
		{
			return formatToString("DiaporamaEvent", "type", "bubbles", "cancelable", "eventPhase");
		}

	}

}

On distingue 2 catégories d’Event.TYPE dans cette classe. On a vu plus haut que REFRESH ne concerne qu’un Mediator, c’est la même chose pour LOAD_COMPLETE. J’ai donc bien distingué ces deux catégories dans mes commentaires. Continuer la lecture

Publié dans Actionscript 3, Flash Platform, Flex | Marqué avec , , , , | 5 commentaires

Découverte du framework Robotlegs [4/5]

La couche View

Les composants visuels


Les composants visuels doivent être réutilisables de projet à projet. Ils sont donc agnostiques au projet, et ne doivent contenir aucune référence au framework. On doit littéralement pouvoir les importer dans un projet vide, et les lancer seuls – ils sont autonomes.

Pour ce projet nous aurons deux composants visuels :
Continuer la lecture

Publié dans Actionscript 3, Flash Platform, Flex | Marqué avec , , , , | 5 commentaires

Découverte du framework Robotlegs [3/5]

La couche Model


Commençons le développement par la couche la plus basse et la plus basse, la couche de Model, qui charge les données et les stocke pour leur usage au sein de l’application. Voici le XML de contenu :

< ?xml version="1.0" encoding="utf-8" ?>
<data>
	<entry file="img/placeholder-00.png">
		<title>< ![CDATA[lorem ipsum]]></title>
	</entry>
	<entry file="img/placeholder-01.png">
		<title>< ![CDATA[sit dolor est]]></title>
	</entry>
	<entry file="img/placeholder-02.png">
		<title>< ![CDATA[ consectetur adipiscing elit]]></title>
	</entry>
</data>

Continuer la lecture

Publié dans Actionscript 3, Flash Platform, Flex | Marqué avec , , , , | Laisser un commentaire

Découverte du framework Robotlegs [2/5]

Diaporama sous Robotlegs : la structure générale


Robotlegs est disponible sous forme d’un .zip contenant sources, .swc et documentation, à cette adresse : http://www.robotlegs.org/

Commençons par créer un projet AS3 sous FlashDevelop, puis créer la structure de packages que nous allons remplir :

On voit bien les 3 couches à développer :

  • controller : il contient les différentes Command qui implémentent cette couche. Un package séparé pour les events qui sont parfois nombreux.
  • model : contient les différents Actors, un package est prévu pour les V.O. (“Value Objects”) qui sont des objets de données simples.
  • view : un sous-package pour les Mediators, un autre pour les classes graphiques – on a vu plus haut qu’une classe graphique communique toujours par un Mediator.

Continuer la lecture

Publié dans Actionscript 3, Flash Platform, Flex | Marqué avec , , , , | Un commentaire

Découverte du framework Robotlegs [1/5]

Ce tutoriel présente les grandes lignes de la micro-architecture Robotlegs, un projet open-source de framework architectural de plus en plus répandu. Il est destiné aux débutants, et a été spécialement conçu et rédigé pour être lu entre midi et deux dans un open-space bruyant. Vous n’avez plus d’excuses.

Retour sur les fondamentaux de l’architecture logicielle orienté objet.

Les applications Flash ou Flex sont constituées d’objets, qui communiquent entre eux par des événements. Le paradigme orienté-objet existant depuis les temps immémoriaux du langage Smalltalk, certaines structures de classes récurrentes répondant à des problèmes précis ont émergées au fil des années. Ces structures récurrentes ont été listées dans l’ouvrage “Design Patterns” du GoF, en voici quelques-uns biens connus :

  • Factory : encapsule la création d’un objet complexe de classe A dans une autre classe B.
  • Adapter : encapsule un objet A dotée d’une interface inadaptée au projet dans une classe B.
  • Command : encapsule une méthode dans une classe indépendante A, dont le rôle est d’agir sur des classes B,C,D.

Les design-patterns ne sont pas un code-source unique et précis. Ils sont indépendants du langage, un design-pattern est une pratique. Il y a autant d’implémentation que de langages de programmation, et plusieurs implémentations possibles au sein d’un même langage.

On trouve des design-patterns simples, répondant à une tâche précise (Factory, Adapter; Command, …) et des design-patterns composés, répondant à des problèmes plus vastes et plus complexes en réunissant plusieurs patterns. Par exemple, pour structurer une application qui affiche des données via une IHM permettant de filtrer/modifier les données, on utilise le plus souvent le pattern Model-View-Controller (dit “MVC”).

Dans le cas précis du développement Flash, ce dernier type d’applications est évidemment le plus courant, la nature même de Flash étant le développement de RIA. Pour structurer ce type d’applications, plusieurs angles d’attaques existent :

  • ne pas utiliser de MVC : pour une petite application, on code tout rapidement dans une classe.
  • le framework “maison” : on produit une implémentation personnelle de MVC, qu’on réutilise ensuite.
  • le framework Cairngorm : développé par Adobe, c’est l’implémentation de référence censée être utilisée et connue, en particulier par tous les développeurs Flex.
  • les frameworks MVC alternatifs : issus de la communauté, les plus courants sont Robotlegs, PureMVC, Parsley.
  • les frameworks non-MVC alternatifs : basés sur d’autres patterns, comme Swiz et Mate.

Ce tutoriel aborde Robotlegs. Ses points forts par rapport aux autres frameworks sont son utilisation astucieuse de l’injection de dépendances, sa simplicité d’utilisation et sa légèreté (c’est une micro-architecture plus qu’un framework).
Continuer la lecture

Publié dans Actionscript 3, Flash Platform, Flex | Marqué avec , , , | Laisser un commentaire

« Support your local scene »

Souvent on me demande de produire des sites Web, parfois j’accepte. Sorry Baby Studio est un studio d’enregistrement, local de répétition et prestataire en événementiel localisé à Lille.

Continuer la lecture

Publié dans pub-copinage | Laisser un commentaire

Interagir avec un micro-contrôleur via USB en AS3

La Flash Platform est un outil formidable lorsqu’il s’agit d’animation interactive sur le Web, et de développer des applications desktop via AIR. La plate-forme Flash offre d’autres possibilités peu connues. La simplicité du langage et la richesse de sa couche graphique en fait un outil idéal pour développer rapidement des applications visuelles, ce qui a commencé il y a quelques années à intéresser des artistes contemporains : installations interactives, objets intelligents, pilotage de robots, etc. La simplicité du langage AS3 a rendu accessible le développement d’oeuvres réagissant à leur environnement, ou agissant sur leur environnement : c’est le physical computing.

Continuer la lecture

Publié dans Actionscript 3, Arduino, Flash Platform, Flex | Laisser un commentaire

Remplacer l’EventDispatcher par les Signals

Cet article vous présente la librairie Signals de Robert Penner, qui a vocation à remplacer la couche événementielle de Flash.

1) l’EventDispatcher d’Adobe

Actuellement, les applications AS3 se structurent en objets, qui communiquent par des événements (aka. “events”). On utilise les objets par défaut de l’API Flash (MovieClip, Sprite, etc), on en ajoute parfois selon le projet, et on fait communiquer tout ça par des events personnalisés toujours selon le projet. Développons donc tout ceci dans un petit rappel.

Continuer la lecture

Publié dans Actionscript 3, Flash Platform, Flex | 6 commentaires

Créer une application multi-utilisateurs avec AS3 et node.js

Node.jsAmusons-nous un peu avec node.js, le plus trendy des projets open-source. Traditionnellement, les serveurs utilisés par les applications multi-utilisateurs temps-réel sont soit des solutions commerciales ou open-source (SmartFox, ElectroServer, Flash Media ServerRed5, etc), soit des développements propriétaires, réalisés dans des langages susceptibles de supporter des charges importantes (Java, C++, Python Stackless pour Eve Online, Erlang pour le chat Facebook). Les serveurs sont généralement multi-threadés et synchrones : un thread est alloué par client connecté, avec un segment de pile dédié, le tout reste en mémoire pendant la durée de connexion du client au serveur – à l’exception d’Erlang et de Stackless justement.

Pourquoi node.js ?

Node.js est un projet open-source basé sur l’interpréteur Javascript V8 de Google. C’est un interpréteur Javascript côté serveur, auquel a été ajoutée une API réseau de bas niveau dotée par exemple des fonctionnalités HTTP, sockets, UDP. C’est donc un toolkit destiné à concevoir des serveurs. Il utilise Javascript comme langage de script, un langage simple, proche de l’AS3, et donc rapide à assimiler pour le développeur Flash de base. Tout le monde connait quelques bouts de Javascript.

Node.js possède deux caractèristiques supplémentaires qui font tout son intérêt :

  • la programmation évènementielle : 100% basé sur les gestionnaires d’évènements, en node.js “tout est évènement”. Hors de la durée de vie d’un évènement, le serveur « dort ».
  • son architecture interne : comme le serveur Web nginx, il n’utilise pas une thread par client, donc il gère très bien les problèmes de concurrence, ce qui en fait l’outil idéal pour les problématiques de serveurs multi-utilisateurs temps-réel. Chose à savoir, Nginx s’est hissé en un an au 3ème rang des serveurs Web les plus déployés. Le micro-threading, c’est l’avenir.

Continuer la lecture

Publié dans Actionscript 3, Flash Platform, Flex | 2 commentaires