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

mardi 24 juin 2008

Memo AS3

Un mémo perso pour les bouts de codes qu'on utilise tout le temps et qui ont changés en as3.

Pour attacher des movies clips à la scène avec des noms dynamiquement crées :

var dynamicClass:String = "btn" + i;
var classRef:Class = getDefinitionByName(dynamicClass) as Class;
var page:MovieClip = new classRef();
addChild(page);

Désormais, en AS3, si une sprite est placé au-dessus d'un bouton, la zone cliquable du bouton n'est plus active. Pour le rendre à nouveau cliquable, il faut changer la propriété mouseEnabled de la sprite qui la recouvre :

mySprite.mouseEnabled = false;

Xml
Pour faire une boucle avec des noeuds xml, on n'utilise pas la propriété xml.length mais la fonction du même nom !

for (i= 0 ; i < xml.length() ; i++) {
	...
}

objet Sound
Pour loader un son dans la bibliothèque (feu attachMovie)

var mySound:mySoundId = new mySoundId();  
// où mySoundId et le nom de liaison du son dans la bibliothèque

Pour loader un son et lui appliquer un volume

var mySound:mySoundId = new mySoundId();
var channel:SoundChannel = new SoundChannel();
var transform:SoundTransform = new SoundTransform(0.5);  
// (volume à 50%)
channel = mySound.play(0, 0, transform);

Pour autoriser au flash de lire sur n'importe quel domaine

import flash.system.Security;
Security.allowDomain("*");

Pour loader une librairie externe

var ldr:Loader = new Loader();
var url:String = "loaded.swf";
var urlReq:URLRequest = new URLRequest(url);

ldr.load(urlReq);
addChild(ldr);
ldr.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler);

function completeHandler(event:Event):void {
	var domain:ApplicationDomain = ldr.contentLoaderInfo.applicationDomain; 
        // MonClip est le nom de la classe que l'on veut atteindre dans le clip loadé
	var MonClip:Class = domain.getDefinition("MonClip") as Class;
	
	trace(domain.getDefinition("MonClip"));
	
	var monClip = new MonClip();
	addChild(monClip);
}

jeudi 29 mai 2008

Je sais

Je sais est la nouvelle campagne pour voyage-sncf. On finira bien par comprendre que le site ne vend pas que des billets de train mais aussi des billets d'avions et des formules de voyage.
Sans doute un atout au début - voyage-sncf est le site de référence pour se réserver des billets en ligne (je ne connais personne qui n'achète ses billets chez eux, alors qu'ils ne sont pas les seuls) - il semblerait qu'ils veulent désormais communiquer sur leurs autres services.
En dehors de ces considérations marketing qui ne m'intéressent pas vraiment, l'agence DDB a conçu un site mêlant papervision et export d'image en flash. Projet conduit par Didier Brun (grand guru flash), j'ai pu saisir l'occasion de développer mon premier moteur papervision pour un projet professionnel. Le site est vraiment bien, simple, pas du tout dans un démonstration ni surenchère de 3D comme peut l'être beaucoup de projets flash en papervision. C'est sympa de se faire plaisir en finesse.


Voir le site : http://www.je-sais.net/

lundi 26 mai 2008

VectorVision, perlincarpet

Mark Barcinski & Adrien Jeanjean viennent de sortir VectorVision, le chaînon manquant entre les 2 moteur 3D, Papervision et FIVe3D , l'un à base de bitmap et l'autre vectoriel. Cette extension permet d'intégrer dans un environnement Papervision les objets de FIVe3D. Pour le plus grand bonheur des graphistes, VectorVision permet donc de faire de la 3D papervision avec de la typo vectorisée antialiasée - grande spécialité de FIVe3D.

En guise d'illustration, voici une variation de l'animation perlin carpet utilisant notre nouveau moteur.


Cliquez sur l'image pour lancer le flash ou ici
Les sources.
Pour compiler le tout, il vous faudra la bibliothèque de classe de PV3D et de VectorVision.

vendredi 9 mai 2008

Flint, générateur de particules

Flint est un projet open source de générateur de particules en AS3. Le principe est de manipuler un flot de particules auxquelles s'appliquent de nombreuses propriétés et méthodes. La documentation est bien complète, l'utilisation simple. Loin de la mode 3d, je pense qu'il y a matière à faire des animations créatives avec Flint.
Un exemple :


Cliquez sur l'image pour lancer le flash ou ici, puis déplacer la souris pour repousser les particules
Le site de Flint.

Le code

package {
	import flash.display.Sprite;
	import flash.geom.Point;
	import flash.filters.BlurFilter;
	import flash.geom.Rectangle;
	
	import org.flintparticles.actions.*;
	import org.flintparticles.counters.*;
	import org.flintparticles.displayObjects.*;
	import org.flintparticles.emitters.Emitter;
	import org.flintparticles.initializers.*;
	import org.flintparticles.renderers.*;
	import org.flintparticles.zones.*;	
	import org.flintparticles.activities.*;

	public class Fountain extends Sprite {
		public function Fountain() {
			var emitter:Emitter = new Emitter();

			emitter.counter = new Steady( 30 );
			
			emitter.addInitializer( new ImageClass( Dot, 5 ) );
			emitter.addInitializer( new ColorInit( 0xFFFF33FF, 0xFFFFFF33 ) );
			emitter.addInitializer( new Position( new PointZone( new Point( 0, 0 ) ) ) );
			emitter.addInitializer( new Velocity( new DiscSectorZone( new Point( 0, 0 ), 260, 360, -3 * Math.PI/5, -2 * Math.PI / 5 ) ) );
			emitter.addInitializer( new RotateVelocity( -4, 4 ) );
			emitter.addInitializer( new Lifetime( 6 ) );
			
			emitter.addAction( new MouseAntiGravity(200, 10) );
			
			emitter.addAction( new Move() );
			emitter.addAction( new Rotate() );
			emitter.addAction( new Accelerate( 150, 150 ) );
			emitter.addAction( new Age() );
			emitter.addAction( new Scale( 0.1, 10 ) );
			emitter.addAction( new DeathZone( new RectangleZone( -10, -10, 510, 510 ), true ) );
			
			var renderer:BitmapRenderer = new BitmapRenderer( new Rectangle( 0, 0, 500, 500 ) );
			renderer.addFilter( new BlurFilter( 2, 2, 10 ) );
			emitter.renderer = renderer;
			addChild( renderer );
			
			emitter.x = 50;
			emitter.y = 510;
			emitter.start( );
		}
	}
}

mardi 29 avril 2008

Carlos Ulloa

Carlos Ulloa, le programmeur qui a crée et lancé le projet Papervision, donne quelques détails sur le développement du site absolut en papervision.
C'est très intéressant, il explique entre autre comment il a utilisé box2dFlashAS3 pour émuler un environnement physique, donne quelques tuyaux, et nous révèle que le site a pris 4 mois de développement !
C'est bien plus long qu'un site classique. Serait-ce à cause de la technologie déployée ?



L'article

FreeCamera3DController

Je viens de découvrir la classe FreeCamera3DController sur l'excellent site de tutoriaux pour papervision pv3d.org. Cette classe permet de naviguer facilement dans votre animation papervision avec les flèches du clavier ou la souris.
Pour le plaisir, voici un exemple en reprenant l'anim computeSpectrum légèrement modifiée.

Cliquez sur l'image pour lancer le flash, puis cliquez sur le flash pour avoir le focus.
La classe Freecamera3dcontroller.

ComputeSpectrum + pv3D

Combinaison entre un cercle en papervision et la nouveauté computeSpectrum de flash qui permet d'analyser en temps réel le spectre du son.

Cliquer sur l'image pour lancer le flash.
Je n'ai pas mis de loading pour le son. il faut patienter un peu le temps du chargement.
Les sources viendront après nettoyage du code...

lundi 28 avril 2008

blur + drawing PV3D



Rajoutant un effet de blur (paramétré un peu au pif, je l'avoue) sur le flash précédent de dessin, on obtient de drôles d'effets que j'aime bien.

Cliquer sur l'image pour lancer le flash.

Drawing PV3D

Un module de dessin totalement inutile en Papervision 3D.
En cliquant dans la zone, on peut dessiner une forme en continue qui tourne sur elle-même.
Un point que j'ai essayé de comprendre mais sans succès, c'est l'objet Mouse3D sensé aider pour trouver les coordonnées de la souris dans une primitive. Si quelqu'un pouvait m'éclairer, je suis toujours preneur.

Cliquer sur l'image pour lancer le flash.

jeudi 17 avril 2008

Botanic

Spécialiste du jardin, la marque botanic promeut (et vend) des produits conçus à partir de matériaux naturels comme le verre ou le bois. Mais plus que les outils traditionnels, botanic propose aussi des solutions écologiques pour le jardin. Les pesticides sont par exemple remplacés par des coccinelles pour combattre les pucerons !
Pour l'agence Toute attente, j'ai participé au montage du site de la campagne promotionnelle de botanic pour le printemps. On y trouve d'ailleurs jusqu'au 23 avril un jeu où il faut tuer les pucerons grouillant avec des coccinelles :o)


Voir le site : http://www.botanic-sponsor-officiel-du-printemps.com/

À faire absolument : l'ecard très amusante par Emmanuel Pelegrin, Laurent et Adrien Dufond. Le lien est sur le site.