Copy that

La communication c’est l’interactivité.

C’est parce que mon cerveau communique avec mon corps et inversement que je peux interagir avec le monde qui m’entoure.

C’est parce que mon œil me signale la présence d’une amie à l’autre bout de la rue que mon bras peut se mouvoir pour la saluer.
C’est parce que j’entends le moteur d’une voiture au moment de traverser que je presse le pas pour éviter de me faire écraser.
C’est parce qu’elle m’étreint tendrement sur le trottoir d’en face que mon visage s’illumine aussitôt d’un large sourire.
C’est parce que mon parfum est capiteux qu’elle bascule discrètement en arrière et feint d’être attendue à l’autre bout de ville.
Mais pourquoi au moment où elle tourne les talons et qu’elle regrette amèrement de ne pas m’avoir invité à boire un verre, je reste planté là, impuissant et ignorant ?

L’interactivité peut se traduire naïvement par une relation de cause à effet.
C’EST PARCE QUE quelque chose se produit QUE quelque chose se passe en retour.
Concept ultime que l’on peut réduire en deux mots : QUAND >> ALORS.

Sans interactivité, le monde serait réduit à l’immobilité absolue, au grand néant. C’est l’alchimie des interactions et de leurs interconnections qui donne la vie.
Chaque entité est faussement autonome. C’est le fourmillement cosmique des molécules, l’assourdissante cacophonie du magma humain, le savant mouvement des planètes, l’émulsion atomique et hiérarchique des éléments qui animent l’univers dans une perpétuelle métamorphose.

QUAND introduit la notion temporelle, celle d’événement.
ALORS est la conséquence déployée à l’instant T par l’entité qui reçoit l’information, le récepteur (observateur).
Pour pouvoir réagir en retour, l’observateur doit répondre à trois conditions :

  • Recevoir l’information.
  • Disposer d’une capacité spécifique pour interpréter celle-ci.
  • Disposer d’une implémentation pour agir en conséquence.

Si l’on reprend le scénario précédent, c’est parce que mon œil m’informe d’une présence à l’autre bout de la rue, que mon cerveau peut recevoir la description anatomique de celle-ci. Si j’avais eu les yeux fermés, j’aurais été dans l’incapacité de recevoir cette information.
C’est aussi parce que je suis suffisamment physionomiste que je peux interpréter l’information et statuer du fait qu’il s’agit bien d’une amie.
Au final, c’est parce que je suis quelqu’un de mobile et convivial que je peux agir en conséquence et la saluer du bras.

Vos objets sont ‘vivants’, faites les communiquer intelligemment et élégamment !

C’est ce que je vais tenter de vous proposer dans mes prochains billets en introduisant pixlib, framework open-source, accompagné de nombreux exemples et tutoriaux.

2 blogs pour passer l’hiver

Je reprends la plume à dose homéopathique en vous présentant deux nouveaux blogs qui valent le détour.

Mon premier est celui de Carl-Alexandre Malartre dont je vous ai souvent parlé dans ces pages.

C’est en français et ça se passe ici.

Mon deuxième, c’est celui de Tini Uro, ingénieur chez Macromedia oeuvrant sur la partie graphique de Maelstrom.

Ca se passe ici.

ascb

Joey Lott vient de lancer un beta test publique de sa librairie ActionScript 2.0 ascb.

Les sources sont disponibles ici, la documentation ici et la mailing-liste ici.

Il ne s’agit pas vraiment d’un framework, du moins pas au sens propre du terme. La plupart des classes sont désolidarisables de leur contexte et certains packages sont totalement standalones (ex: logging).
L’accent a été volontairement mis sur l’efficacité et la flexibilité de chaque élément au sein d’un projet sans tenter de réinventer la roue au niveau des fondations (collections, gestion des événements …).

Plus d’infos ici.

pulcomayo.com

Ce n’est pas dans mes habitudes de présenter sur ce blog des sites Flash et encore moins des portfolios.
Je déroge à la règle (si règle il y a) parce qu’il le vaut bien et que cela me tient à coeur.

Vous étiez déjà plusieurs à avoir apprécié son style sur ce blog lors de la présentation du VisualGridEditor.
Un petit coup de projecteur donc, sur le site de Vincent, graphiste et illustrateur de Periscope.

Après avoir fait la une de studio multimédia, Vincent Bechet aka Bic revient sur la scène avec un bombshock pour son site pulcomayo.
Je vous invite à partager l’univers de cet artiste talentueux dont la discrétion et la modestie n’ont d’égal.

Un site frais et animé avec une navigation des plus originales qui changent des sempiternels blockbusters froids et high-techs.

Ca se passe ici.

Mock objects framework

Simon Wacker enrichit as2lib d’un nouveau framework calqué sur EasyMock.

Plus d’infos sur les Mock objects ici et ici.

Adeptes des tests unitaires, le framework de Simon Wacker accompagné de quelques explications est dores et déjà disponible ici accompagné (ce qui n’est précisé nulle part) de la dernière version d’as2lib restructurée quelque peu mais surtout enrichie de foule de nouvelles classes. ;)

[TOTD] custom character options

Pour débuter cette nouvelle année, voici une astuce trouvée sur le blog de Julian Dolce (Fuel Industries).

Il est possible d’ajouter des nouveaux sets de caractères pour l’embedding de vos textfields en éditant le fichier UnicodeTable.xml qui se trouve dans votre répertoire First Run\FontEmbedding.

Ca se passe ici.

Vous trouverez sur le blog de Patrick Migneault une liste exhaustive des caractères français prête à l’emploi.

… en vous souhaitant une bonne année 2005 ! Et oui, une de plus … rrrrrha l’épreuve du temps ! ^^

flas are evil ?

C’est l’un des sous-titres d’un des derniers billets d’Aral Balkan.

Je cite : “I don’t have code in my FLAs. Some people don’t like milk in their coffee, I don’t like code in my FLAs and I’ll tell you why: the FLA is one of the major risk factors in a Flash project.”

Je partage cette vision, et je me qualifierais même de beaucoup plus extrêmiste.

Je ne mets rien dans mes flas (aucun symbole sur la timeline) et me sers de ce format uniquement en tant que bibliothèque pour mes UIs (instanciées au runtime) ou comme point d’entrée pour compiler mes applications.
Attitude d’ailleurs qui en général suscite beaucoup d’amusement de la part de mes collaborateurs et m’a certaines fois valu le nom de ‘Mr Propre’, à moins que ce soit pour la coupe de cheveux. :p

Au passage, pour tous ceux qui voudraient bien débuter en programmation et plus spécifiquement en ActionScript 2.0, je ne saurais que trop recommander le premier tutorial d’Aral Balkan :
AS2 Tutorial 1: Linking a movie-clip to a class.

Pour les autres, allez faire un tour ici et ici.

Mon premier propose une réflexion intéressante (et quasi philosophique ^^) sur le code et le rôle de développeur.
Mon deuxième détaille (en réponse à un commentaire) l’approche et les motivations d’Aral concernant l’utilisation des flas.
Sa vision au final diverge pas mal de la mienne mais a le mérite de proposer quelques arguments de choc.

Respect !

swapDepths bug ?

Lors de la création d’une instance de l’objet MovieClip (avec createEmptyMovieClip, attachMovie ou duplicateMovieClip), le nom (String) passé en paramètre joue un rôle mineur.

Pour une cible donnée, c’est le z-sorting (affectation de la profondeur) qui permet au player Flash d’identifier et répertorier les instances créées.

Aujourd’hui, je suis tombé sur un comportement assez inattendu à l’intérieur d’un projet. J’ai tourné en rond un bon moment avant de pouvoir isoler le problème.
Jugez en vous même :

// Je crée deux instances portant le même nom.
var mc1:MovieClip = this.attachMovie('mc', 'mc', 10, {_x:100, _y:100});
var mc2:MovieClip = this.attachMovie('mc', 'mc', 20, {_x:300, _y:100});
 
// La référence mc2 pointe vers la bonne instance (zOrder:20).
mc2._y = 500;
 
// Cette fois, la référence mc2 utilisée avec swapDepths
// ne pointe plus vers la bonne instance (zOrder:10).
mc2.swapDepths(1000);
 
// La preuve en images :
// Sortie : 'mc1 depth == 1000' et 'mc2 depth == 20'
trace('mc1 depth == ' + mc1.getDepth());
trace('mc2 depth == ' + mc2.getDepth());

A se demander si sous le capot, swapDepths ne fait pas une mauvaise évaluation de la cible à partir d’une chaîne de caractères. :s

generateMainClass

Je vous ai concocté ce week-end un petit exemple en JSFL avec mise à contribution de XML to UI et FLfile.
Il s’agissait d’illustrer la possibilité de générer automatiquement des classes dans l’IDE à partir de certains critères.

L’arrivée de l’API FLfile à l’intérieur d’Ellipsis a considérablement élargi le champ d’action des développeurs côté JSFL.
Il est toujours agréable de pouvoir gagner du temps sur les tâches répétitives, surtout quand il s’agit de taper sans cesse la même chose. ^^

Cette pseudo extension propose de créer le point d’entrée d’une application en renseignant le classpath, son package et son nom.
Elle crée aussi l’arborescence de répertoires si nécessaire, sauve le fichier et l’ouvre dans l’IDE.

En espérant qu’elle donnera à certains des ailes pour des expérimentations customs. ;)

pixLib proposera une série d’extensions pour gagner du temps sur la mise en place de certaines configurations (création d’un événement, utilisation du package MVC, héritage de certaines classes abstraites …).

En attendant, vous pouvez télécharger l’exemple en question ici.