Articles taggés avec ‘as3’

Geekitude

Pourquoi l’AS3 ne sera jamais en français.

C’est avec émotion que je rédige mon premier post sur ce blog :’) Amis de la subversion et des posts où on peut tout comprendre en une seule lecture (quoique..), bienvenue.

Qui n’a jamais fait de blague sur ses noms de variables.. ? Qui n’a jamais subi de regard dubitatif après une conversation au sujet de Strings avec un collègue codeur..?
Vous n’avez jamais pensé à ce que donnerait l’AS3 en français ?

Et bien, ne rêvez pas plus, nous l’avons fait pour vous.

Pour faire ma petite démo, je suis allée chercher un bout de code sur le Flash Enabled Blog, avec cet exemple de Drag and Drop.

Nous apprenons, entre autre, qu’un Sprite est un Farfadet.. (j’y peux rien moi..)

Le gros problème que ça soulève, si vraiment l’envie vous prend de tout traduire et de lancer un AS francophone (on s’amuse comme on peut), c’est la traduction du féminin/masculin.
Si on prend l’exemple d’un new Truc(), tout dépend de l’objet Truc().
Ca pourrait être nouveau Tableau, nouvelle Chaine, ou encore nouvel Objet.. Idem pour le privé ou privée.. Bref ça devient vite n’importe quoi.

L’exemple :

paquet {
 
     importer flash.afficher.Farfadet;
     importer flash.evenements.Evenement;
     importer flash.evenements.EvenementSouris;
     importer flash.texte.ChampsTexte;
 
     publique classe AnagrammeGlisserDeposer etends Farfadet{
 
          privee variable glisseeCible:Farfadet;
 
          publique fonction AnagrammeGlisserDeposer () {
                variable tableau:Farfadet= nouveau Farfadet();
                variable lettres:Tableau = nouveau Tableau("d","i","r","t","y","r","o","o","m")
                variable l:Chaine;
                variable xPos:entierNonSigne = 50
                variable yPos:entierNonSigne = 100
                pour chaque (l dans lettres) {
                      variable piece:Farfadet= nouveau Farfadet();
                      piece= creerPièceLettre(l comme Chaine) // taille, couleur, jaune
                      piece.x = xPos;
                      piece.y = yPos;
                      xPos += 50;
                      tableau.ajouterEnfant(piece);
                      piece.ajouterEcouteurEvènement(EvenementSouris.SOURIS_BAISSEE, glisserDemarreur, faux);
                      piece.ajouterEcouteurEvenement(EvenementSouris.SOURIS_LEVEE, glisserBouchon);
               }
               ajouterEnfant(tableau)
               variable instructions:ChampsTexte= nouveau ChampsTexte();
               instructions.texte = "Ré-organise des lettres pour former un autre mot"
               instructions.x = 20
               instructions.y = 20
               instructions.largeur = 300;
               ajouterEnfant(instructions)
         }
         privee fonction glisserDemarreur(evenement:EvenementSouris):vide{
               si (evenement.cible est Farfadet) {
                     glisserCible = evenement.cible comme Farfadet;
                     glisserCible.commencerGlisser();
               }
        }
 
        privee fonction glisserBouchon(evenement:EvenementSouris):vide{
               glisserCible.arreterGlisser();
        }
 
        privee fonction creerPieceLettre(txt:Chaine):Farfadet{
               variable s:Farfadet = nouvelle Farfadet ();
               variable lettre:ChampsTexte= nouveau ChampsTexte();
               variable pieceCouleurArrière:entierNonSigne  = 0xDBD9A6;
               variable pieceCouleurOmbre:entierNonSigne  = 0x676420;
               variable pieceCouleurBordure:entierNonSigne  = 0x000000;
 
               s.graphique.commenceRemplir(pieceCouleurOmbre);
               s.graphique.dessineRectangle(-2, 2, 40, 40);
               s.graphique.arretRemplir();
               s.graphique.commenceRemplir(pieceCouleurArriere);
               s.graphique.dessineRectangle(0, 0, 40, 40);
               s.graphique.arretRemplir();
               s.graphique.styleLigne(1, pieceCouleurBordure, 100);
               s.graphique.dessineRectangle(0, 0, 40, 40);
 
               lettre.texte = txt
               lettre.selectionnable = faux;
               lettre.x = 14
               lettre.y = 14
               lettre.largeur = 14
               lettre.hauteur = 16
               s.ajouterEnfant(lettre)
 
               retourner s;
        }
    }
}

Alors, vous en pensez quoi ?
Et comme te dirais Maître Capello dans le debugger, si erreur dans ton code il y a..

Le 20 mai 2008 par Wahiba

Tags = ["", "", ""];

10 commentaires

Code

Trois petites méthodes…

…bien utiles pour des scrollbars (entre autre).

Qui ne s’est jamais pris la tête avec des scrollbars dans Flash ? Quand il faut calculer le ratio entre les positions du contenu et du bouton de scroll… Pour peu que la taille de la scrollbar soit différente de celle du conteneur, on s’en arrache vite les cheveux.

Bit-101 a transcrit en AS3 trois méthodes provenant d’un livre sur Processing.

normalize(value, min, max) prend une valeur comprise dans un intervalle min - max et la convertit en une valeur comprise entre 0 et 1. La valeur de départ peut dépasser les bornes de l’intervalle.

interpolate(value, min, max) prend une valeur normalisée (comprise entre 0 et 1) et renvoie la valeur correspondante dans l’intervalle min - max.

map(value, min1, max1, min2, max2) prend une valeur et un intervalle de départ (min1 - max1) et renvoie la valeur correspondante dans l’intervalle min2 - max2.

L’article original de Bit-101
Et la petite classe as3 :

package {
	public class NumberUtils {
		public static function normalize(value:Number, minimum:Number, maximum:Number):Number {
			return (value - minimum) / (maximum - minimum);
		}
		public static function interpolate(normValue:Number, minimum:Number, maximum:Number):Number {
			return minimum + (maximum - minimum) * normValue;
		}
		public static function map(value:Number, min1:Number, max1:Number, min2:Number, max2:Number):Number {
			return interpolate( normalize(value, min1, max1), min2, max2);
		}
	}
}

Le 14 mai 2008 par PingooO

Tags = ["", ""];

3 commentaires

Veille

L’ouvrage libre “Pratique d’ActionScript 3″ est disponible

Logo pratique as3

Kikko l’annonçait dans son précédent article, c’est maintenant chose faite : le livre “Pratique d’ActionScript 3″ de Thibault Imbert est enfin disponible. Prévu au départ pour les éditions O’REILLY France, c’est aujourd’hui en version libre (PDF) que Thibault le propose à la communauté Flash/Flex depuis le site dédié. Pour ceux que la lecture sur écran incommode ou que l’impression des 1100 pages (!) inquiète, une version papier devrait bientôt être disponible.

Pour télécharger l’ouvrage, c’est ici.

Le 29 avril 2008 par ju

Tags = ["", "", "", "", ""];

2 commentaires

Veille

Conventions de codage en AS3

Adobe vient de publier un document fort intéressant intitulé « Flex SDK coding conventions and best practices ». Le titre est trompeur puisqu’il n’est point question de Flex mais bien d’AS3, ce qui est révélateur quand à l’obsession maladive d’Adobe sur Flex (au détriment de Flash en tant qu’IDE, oserais-je avancer). Plus généralement, cette louable initiative, parmi d’autres, tend à montrer à quel point la firme californienne cherche à se créer une crédibilité auprès des « vrais » développeurs.

La lecture ou au moins le survol de ce document est recommandé. C’est un condensé de bon sens qui tranche avec le grand n’importe quoi de l’AS1 et de l’AS2 (”monClip1_mc”, David T. style). Et celà peut servir d’arbitrage lors d’un désaccord entre développeurs.

Pour autant, on y relève un certain de nombres de passages un peu surprenants :

Tableaux typés

Do this:
var a:Array /* of String */ = [];
Not this:
var a:Array = [];

Étrange… Cette pratique rapelle la méthode utilisée à l’époque par le compilateur alternatif MTASC. Certes, c’est bien commode pour la complétion dans FlashDevelop par exemple, mais c’est en concurrence avec la méthode officielle Flex (lourdingue) : ArrayElementType metadata tag. La prochaine version de l’EcmaScript, et donc logiquement le futur AS4, integrera en natif les tableaux typés. En attendant, si on est courageux, on peut utiliser des classes de tableaux typés (MovieClipArray, etc) que l’on trouve dans pas mal de frameworks AS.

int plutôt que uint

Use int for integers, even if they can’t be negative. Use uint only for RGB colors, bit masks, and other non-numeric values.

Tout simplement absurde. Adobe préconise cette pratique en oubliant de préciser qu’elle découle d’un bug dans le player Flash : Types in AS3: ints not so fast, uints slow!

imports

Import specific classes, interfaces, and package-level functions rather than using the * wildcard.
Do this:
import mx.controls.Button;
import flash.utils.getTimer;

Not this:
import mx.core.*;

Mouais. Ou comment avoir 30 lignes d’imports au début de chaque classe. Je pense pas que ce soit très utiles pour les classes intrinsèques du player Flash (import flash.display.*; rules !)

À part ça, que du bon. À revisiter quand le document sera terminé.

Flex SDK coding conventions and best practices

Le 26 avril 2008 par nerik

Tags = ["", "", ""];

2 commentaires

Veille

Alternativa3D 5.0

Après avoir lancé une série de démos AS3 impressionnantes (bump mapping, Parallax effect, Normal map lighting, etc.), les russes d’Alternativa Platform ont publié sur leur blog 2 nouvelles démos de leur plateforme Alternativa3D.

Le résultat est vraiment bluffant, autant visuellement que techniquement.

Et ce n’est qu’un début, car à l’avenir, Alternativa3D ne sera pas qu’un “simple” moteur3D pour flash, mais un véritable outils de développement de jeu et d’applications multiusers, avec une appli serveur, un World Editor, et un module d’administration.

Ça promet.

Le 19 avril 2008 par kikko

Tags = ["", "", ""];

2 commentaires

Veille

Pratique d’AS3, par Thibault Imbert passe en Open Source

C’est à la fois une bonne et une mauvaise nouvelle. Mauvaise, parce que O’Reilly France n’éditera pas le livre de Thibault Imbert. Mais bonne, parce qu’il a décidé de publier son livre en Open Source. C’est une excellente idée, car cela donnera un accès gratuit au contenu pour toute la communauté flash et cela permettra de tenir le contenu à jour.

Donc si les BitmapData, Sockets, ByteArray et autres Flash Remoting vous intéresse, ça se passera ici à partir du 21avril.

Le 10 avril 2008 par kikko

Tags = ["", "", ""];

1 commentaire

Veille

RegExr : les expressions régulières pour Flash et Flex

Encore un mini article sur gSkinner.

Il a posté hier une version Air de son appli permettant de créer facilement des expressions régulières. La version en ligne est ici : http://gskinner.com/RegExr/ et la version Air téléchargeable ici : http://gskinner.com/RegExr/desktop/

J’ai pour ma part découvert RegExr aujourd’hui et ça à l’air (hum…) vraiment pratique.

Le 1 avril 2008 par PingooO

Tags = ["", "", "", "", ""];

1 commentaire

Veille

Design génératif avec Flash

Je viens de tomber sur deux articles super intéressants sur le blog de gskinner.

Il a en effet développé une classe pour simplifier la gestion des nombres aléatoires : celle-ci propose des méthodes pour obtenir directement un entier compris entre telle et telle valeur, ou un signe (-1 ou 1) avec telle probabilité de tomber sur l’un d’eux, etc …

L’autre classe qu’il propose, permet de générer une suite nombre aléatoires basée sur un “seed” (une graine). Cela permet d’obtenir facilement la même suite de nombre aléatoires et donc de reproduire des figures génératives à l’identique.

La classe Rnd (gestion simple de nombres aléatoires).

La classe Rndm (génération d’une suite de nombres aléatoires basée sur une graine).

Pour se donner une idée : voir cette belle démo.


arbre.jpg

Le 21 mars 2008 par PingooO

Tags = ["", "", ""];

1 commentaire

Code

Des lignes avec le moteur “3D”

A la demande d’un certain guillaume, voici une légère mise à jour de mon petit moteur de pseudo 3D pour flash.

Les propriétés MovieClip3D.X et MovieClip3D.Y renvoient les valeurs x et y du MovieClip après la projection.
Voici le même exemple avec des lineTo reliant les MovieClip (vides) entre eux.

Attention tout de même, les lineTo sont assez gourmand en ressources avec Flash. Au delà de 300 lineTo à chaque enterFrame, ça commence à ramer…

Télécharger les sources

This movie requires Flash Player 9

Le 20 février 2008 par PingooO

Tags = ["", "", ""];

2 commentaires

Code

Displacement Mapping en AS3 avec Papervision 2.0

DisplaceMapDemo Screenshot

La sortie de Papervision 2.0 - Great White la semaine dernière a repoussé encore un peu plus les limites de flash (hum quelle intro…) en apportant pas mal de nouveautés (Shaders, Bump-mapping, ASCollada pour importer des mesh skinné, Frustum culling..etc). Mais Great White c’est aussi une gestion ameillorée des évenements souris (via la classe InteractiveUtils) permettant, par exemple de récupérer facilement les coordonnées de projection (u,v) d’un clic de souris sur un objet 3D.

Cette dernière nouveauté qui est passé presque inaperçue à la sortie de GW, m’a donné l’idée de faire une classe de Displacement Mapping. Fonctionnalité absente dans papervision et pourtant trés répandue en 3D. Pour ceux qui ne voient pas ce que c’est, ça consiste à obtenir une déformation 3D grâce aux niveaux de gris d’une image. C’est le procédé utilisé pour faire des terrains ou pour faire du brush-modeling avec Z-brush par exemple. Du coup je me suis plongé dans PV3D 2.0 et y’a pas à tortiller, c’est vraiment une putain de release! (Mis à part le fait que ce soit une alpha non documentée grrrr…).

Lire le reste de cet article »

Le 15 décembre 2007 par kikko

Tags = ["", "", "", ""];

15 commentaires