Avant toute chose, nous allons commencer par un peu de théorie et ainsi poser les bases du fonctionnement du DMToolkit. Ensuite, nous passerons à un exemple d'utilisation fonctionnel de la bibliothèque.
I/ un peu de théorie
Pas d'inquiètude, je ne vais pas m'attarder très longtemps sur ce point. Nous allons commencer par voir les différents outils que nous propose DMToolkit, puis je vous donnerais un bref shéma explicatif du fonctionnement de ce dernier.
Pour le moment, DMToolkit intègre 3 types d'outils qui sont :
Les detectors sont les objets qui vont nous permettre de capter le mouvement. Pour le moment, deux sont intégrés au sein de DMToolkit. FrameByFrameDetector et FrameWithSourceDetector. Le premier correspond à l'analyse image par image pour capter le mouvement, et le second consiste a comparer les images avec une image source.
new FrameByFrameDetector(interval:int, debug:boolean);
new FrameWithSourceDetector(interval:int, debug:boolean);
interval : représente l'intervalle entre deux captures d'images.
Si aucun paramètre n'est passé, il est définit à 100 millisecondes.
debug : permet d'afficher les zones de mouvements.
Si aucun paramètre n'est passé, il est définit à false.
Le résultat de la capture des Detectors est ensuite passé aux Analyzers qui vont se charger de détecter si le mouvement est détecté dans une zone précise de l'image que nous définissont (exemple: emplacement d'un bouton qui sera actionné si le mouvement est détecté sur lui). Il en existe deux types pour le moment, le PointAnalyzer et le SquareAnalyzer.
new PointAnalyzer(callback:Function, point:Point);
callback : représente la fonction qui va être appelée si l'analyzer détecte un mouvement dans la zone spécifié.
Avec notre squelette, nous devons passer la fonction actions.
point : représente le point à tester pour détecter le mouvement (du type flash.geom.Point).
new SquareAnalyzer(callback:Function, rect:Rectangle, confidence:int);
callback : représente la fonction qui va être appelée si l'analyzer détecte un mouvement dans la zone spécifié.
Avec notre squelette, nous devons passer la fonction actions.
rect : représente la zone à tester pour détecter le mouvement (du type flash.geom.Rectangle).
confidence : représente le pourcentage de la zone qui doit être affecté par le mouvement pour effectuer le callback.
Si aucun paramètre ne lui est passé, la confidence est définie à 0.8 ( valeurs comprises entre 0 et 1).
Les Accelerators permettent de réduire le temps de calculs pour la détection du mouvement. Pour le moment un seul est intégré, il s'agit du SizeAccelerator qui réduit la taille de l'image réduisant ainsi le temps de calcul.
new SizeAccelerator(reduction:int);
reduction représente le taux de réduction de l'image source avant l'analyse des Analyzers (valeur comprises entre 1 et 100).
De façon schématique, voici le fonctionnement de DMToolkit :
2/ Premier exemple de l'utilisation de DMToolkit
Pour se faire, nous allons réutiliser le squelette du premier tutoriel ( DMToolkit : Premiers pas... ).
Dans notre exemple, nous allons détecter si le mouvement est présent dans le coin gauche de notre image.
Code source :
package{
import flash.display.*;
import flash.geom.*;
import DMToolkit.core.*;
import DMToolkit.core.analyzers.*;
import DMToolkit.core.detectors.*;
import DMToolkit.core.accelerators.*;
public class Main extends Sprite{
private var dmt:DMToolkit;
public function Main(){
dmt = new DMToolkit(stage);
// création de l'analyseur
var analyzer = new ZoneAnalyzer(actions, new Rectangle(0,0,100,100));
dmt.setAnalyzer(analyzer);
// création du détecteur
var detector = new FrameByFrameDetector(80, true);
dmt.setDetector(detector);
//création de l'accelerateur de détection
var accelerator = new SizeAccelerator(1);
dmt.setAccelerator(accelerator);
//démarrage de la capture de mouvements
dmt.start();
}
public function actions():void{
trace("Mouvement détecté !");
}
}
}
Pour les explications, tout est décrit dans la partie théorie je n'y reviendrais donc pas. Juste une précision, ici l'Accelerator ne sert à rien puisqu'il est initialisé à 1, il est là juste pour vous montrer comment nous l'utilisons.
Nous voici arrivé à la fin de ce tutoriel sur DMToolkit. La prochaine fois, nous mettrons en application la théorie au travers d'une petite application.