Création : le Factory Method Pattern
Le rôle d'une Factory est d'instancier des objets de différents types sans spécifier la classe de l'objet qui sera créer. Son avantage est d'éviter la redondance entre ces classes.
Les Factory Method sont en général implémenter par un Singleton.
package
{
public class ProductFactory
{
public
Création : le Singleton Pattern
Le Singleton est utilisé un peu partout, comme par exemple pour les classes mx.managers (DragManager, CursorManager, …). On l'utilise par exemple pour enregistrer des données persistantes (ex: score d'un jeu). Son intérêt est de posséder une et une seule instance de la classe. Elle est accessible de partout et doit donc avoir un seul point d'accès global.
package
{
public class Singleton
[...]
Différence entre currentTarget et target
Lorsque l'on ajoute un écouteur sur un objet, un objet Event est transmis comme paramètre quand un évènement se produit.
this.addEventListener(MouseEvent.CLICK, clickHandler);
private function clickHandler(event:Event):void
Exemple d'utilisation de QuickB2
Comme présenté ici QuickB2 est une version simplifié de Box2D. Vous pouvez bien sur consulter les exemples avec sources sur leur site internet ou dans le moteur (QuickB2_0_6\QuickB2\examples\qb2DemoReel\).
Sinon vous pouvez télécharger l'exemple que je vous ai préparé. J'ai simplement repris et allégé la classe CarDriving.as, ça pourrait en aider certains si vous avez du mal à l'installer ou à faire fonctionner les exemples. Voici ce que l'on obtiens :
This movie requires Flash Player 9
Et voici ma classe:
Présentation de QuickB2
QuickB2 ou Quick Box2D est la version simplifié (pas en fonctionnalités mais en complexité) de Box2D, un moteur physique 2D, et qui permet de faire tout ce qui était possible avec, mais beaucoup plus facilement (et rapidement). En effet, beaucoup trouvent Box2D très complexe à prendre en main, donc si c'est votre cas, QuickB2 va vous ravir!
Quelques fonctionnalités intéressantes :
- Soft-bodies (corps souples)
- Moteur physique pour véhicules (même la gestion des traces de pneus, etc…)
- Physique diverse
- Outils de debug
- [...]
Away3D : Panorama 360°, les différentes solutions
Il y a deux principales solution pour faire un panorama à 360° libre (c'est à dire pas seulement horizontal) : utiliser un cube ou une sphère.
La Sphere
Pour réaliser le 360°, nous allons placer une HoverCamera3D à l'intérieur d'une sphère. La sphère n'étant mappé que de l'extérieur, il va falloir également inversé les faces comme ceci :
sphere.invertFaces();
Vous pouvez aussi simplement utiliser la propriété scaleX :
sphere
Différence entre ROLL_OVER et MOUSE_OVER
Il y a deux évènements bien distinct pour le survol : MouseEvent.ROLL_OVER et MouseEvent.MOUSE_OVER. Beaucoup ont tendance à utiliser MOUSE_OVER car le nom est plus parlant (aussi car on le trouve en premier dans l'auto-complétion…), mais qu'en est il vraiment ?
Ces 2 évènements se comporte en fait différemment, ce qui peut parfois expliqué des bugs inexpliqués si on ne les utilisent pas comme il le faut.
La documentation officielle d'Adobe indique que MOUSE_OVER est déclenché lorsque la souris pénètre [...]
Installer Kinect sur Windows Vista
Avant de vous présenter des tutoriaux et des expérimentations avec Kinect et Flash, commençons d'abord par l'installation de Kinect sur Windows.
L'installation est possible sur Windows XP, Vista, 7 mais je parlerais de Windows Vista ici comme c'est mon système.
Avant de commencer il va falloir télécharger OpenNi, Nite et SenSorKinect. Vous pouvez les télécharger ici, mais il y aura peut être des versions plus récentes lorsque vous lirez ce tuto.
Après l'extraction des fichiers, lancez OpenNI-Win32-v1.0.0.25.exe :
Détection de mouvements a la webcam
J'ai essayé plusieurs méthodes plus ou moins concluantes pour la détection de mouvement à la webcam. Les deux principaux problèmes que j'ai rencontré sont la dépendance du résultat par rapport à la qualité de la webcam (rafraîchissement, définition, bruit/nuisances) et de la zone d'action (peu performant au centre de l'écran du aux moments du corps qui font parasite).
Une des méthodes qui fonctionne le mieux est de comparer deux images capturées successives, et de faire la différences. Avec quelques traitement supplémentaires [...]
Away3D : Primitives, les principaux objets dont vous aurez besoin
Nous allons voir ici les objets que l'on se sert le plus : Cube, Plane, Sphere, Triangle.
Triangle
Ce n'est pas la forme que l'on utilise couramment, mais il est utile de la voir car c'est la forme de base. En effet chaque objet est composé d'un nombre plus ou moins important de Triangles. Par exemple, Plane est composé par défaut de 2 triangles. Il peut être toutefois utilisé quand on doit représenter un très grand nombre d'objets, par exemple des [...]
Away3D : Caméra et mouvements de caméra
Il y a 3 différentes caméras sur Away3D : Camera3D, TargetCamera3D et HoverCamera3D. La caméra s'ajoute sur la vue View3d, de deux façons :
var camera:Camera3D = new Camera3D();
var view:View3D = new View3D({camera:camera});
ou
Away3D : Installation et première animation
Voici le premier article d'une (assez) longue série de tutorial sur Away3D.
Déjà pourquoi Away3D plutôt qu'Alternativa3D, papervision, ou autre ? Mon choix s'est porté sur ce moteur qui est selon moi celui qui propose le meilleur compromis entre rapidité et performance. Alternativa3D est très performant mais il n'est pas Open Source et Papervision a été abandonné me semble t-il. Il y a de nouveaux concurrents avec l'arrivée de Molehill qui changera peut être la donne, mais il est trop tôt pour en juger.
Installation
Donc on va commencer par le tout [...]
Away3D : rotations de cubes
J'avais beaucoup aimé le site http://www.momentoftruth.com/ qui avait remporté un FWA il y a quelques temps. L'animation de départ avec la rotation des cubes m'avait particulièrement plu (un ensemble de cubes 3D qui tournent). J'avais voulu testé Away3D pour l'occasion avec une animation sans prétention mais un peu similaire (bon ok c'est beaucoup plus simple) donc voici ce que ça donne (cliquez sur l'objet pour le faire tourner)
Le code est vraiment tout simple, le plus long à coder est le placement des cubes.
Isométrie : Calcul du pathfinder
Dans la création d'un moteur isométrique, l'un des points clé est le déplacement des personnages. Pour cela il faut calculer le chemin le plus court pour aller d'un point A vers un point B, tout en évitant les obstacles. C'est ce que l'on appelle le pathfinder!
Pour être efficace, il doit réduire au maximum les opérations pour avoir une vitesse de calcul la plus réduite possible, afin de ne pas ralentir le déplacement du personnage (surtout pour les changement de directions, [...]