try {
//Instructions
}
catch(e:Error) { // Type d'erreur à détecter
FlashConnect.trace("Error found: " + e);
}
//(rajouter autant de catch que nécessaire)
finally {
//Instruction final
//Par exemple relancer ou afficher un output
}
]]>Voici plusieurs méthodes pratiques pour le faire:
La classe Timer.
Timer déclenche des événements après un temps exprimé en millisecondes et ce autant de fois que demandé (système de boucle).
var monTimer : Timer = new Timer(5000,10);// ou 5000 exprime le temps en milliseconde(donc 5secondes) avant de finir une boucle et 10 le nombre de boucles.
monTimer.addEventListener(TimerEvent.TIMER, apresUneBoucle); // Déclenche une fonction après chaque boucle (donc après 5sec, et ce 10x de suite).
monTimer.addEventListener(TimerEvent.TIMER_COMPLETE, auFinal); // Déclenche une fonction au final du Timer(donc après 50sec ici).
monTimer.start(); // Lance le Timer.
Il existe beaucoup de fonctions très pratiques pour gérer des Timer plus complexes (stop,reset,..) n’hésitez pas à consulter la doc de Flash pour plus d’infos.
Une autre méthode très pratique est d’utiliser l’excellent package de Tweenlite (greenshok) que j’utilise personnellement dans tous développements pour des animations et qui propose entre autre une méthode simple de déclenchement d’Event après un laps de temps:
TweenLite.delayedCall(5, myFunction); // Déclenche 'myFunction' après 5 secondes
L’avantage de cette méthode est une écriture très rapide pour peu que TweenLite soit déjà chargé et permet de passer un tableau de paramètres (en temps que 3e paramètre de la fonction) facilement.
]]>
private var _myCookie:SharedObject; // Nouveau SharedObject
public function Cookie(cookieName:String){
_myCookie = SharedObject.getLocal(cookieName); // Création avec le nom passé à la fonction.
}
public function read(cookieKey:String):String{
if(_myCookie.data[cookieKey]) return _myCookie.data[cookieKey]; // Le cookie se lit un peu comme un tableau, si il existe une valeur pour la clé donnée.
return "";
}
public function write(cookieKey:String , cookieVal:*):void{ // Écriture dans le cookie.
_myCookie.data[cookieKey] = cookieVal.toString();
_myCookie.flush();
}
Un petit exemple concret, tout ce que vous écrirez dans le champ du dessous sera enregistré, et si vous rafraichissez cette page (même plusieurs fois) ou revenez plus tard, le texte reviendra. Et ce jusqu’à ce que vous effacez les cookies de votre navigateur.
var url:String = "http://www.lelivreduzouave.be/action.php"; // URL de votre script PHP
var request:URLRequest = new URLRequest(url);
var requestVars:URLVariables = new URLVariables();
requestVars.param1 = "action"; // nom du parametre + valeur
requestVars.param2 = "tracking"; // nom du parametre + valeur
request.data = requestVars;
request.method = URLRequestMethod.POST; // Methode (ici post)
var urlLoader:URLLoader = new URLLoader();
urlLoader = new URLLoader();
urlLoader.dataFormat = URLLoaderDataFormat.TEXT; // Le format de retour (binaire,texte ou variable)
urlLoader.addEventListener(Event.COMPLETE, loaderCompleteHandler, false, 0, true); //Fonction de callback une fois que le post est terminé
try {
urlLoader.load(request); // Envoi du post
} catch (e:Error) {
trace(e); // En cas d'erreur
}
Les packages utilisés:
import flash.events.Event; import flash.net.URLLoader; import flash.net.URLRequest; import flash.net.URLVariables; import flash.net.URLRequestMethod; import flash.net.URLLoaderDataFormat;]]>
Ceci permettra de présenter la façon de tracer dynamiquement des elements en AS3. Pour ce tutoriel je vais utiliser FlashDevelop, mais cela fonctionne de même façon dans Adobe Flash.
Créons donc un nouveau projet AS3 dans FlashDevelop, dans le constructeur, créons une forme grâce à la classe Shape et dessinons directement à l’intérieure.
var shap1:Shape = new Shape(); //Nouvelle Shape
shap1.graphics.beginFill(0xff0000, 1); // Deux paramètres, couleur et alpha
shap1.graphics.drawRect(0, 0, 60, 60); // Forme (x,y,largeur,hauteur);
shap1.graphics.endFill(); // Arrêt du dessin.
Placer la forme sur la scène n’importe où. Répéter l’opération pour la deuxième forme (shap2), maintenant nous allons écrire une fonction pour relier les deux formes avec un trait. Ici nous allons dessiner directement sur la scène (this)
private function linkItem(itm1:*, itm2:*):void { //Deux objets en paramètre.
var center1:Point = new Point((itm1.x + (itm1.width / 2)), (itm1.y + (itm1.height / 2))); //Ce point placé au centre du premier objet.
var center2:Point = new Point((itm2.x + (itm2.width / 2)), (itm2.y + (itm2.height / 2))); //Celui au centre du deuxième.
this.graphics.lineStyle(1,0xffffff); // Le style de la ligne (épaisseur,couleur)
this.graphics.moveTo(center1.x,center1.y); // Les coordonnées de départ du trait (centre de l'objet 1)
this.graphics.lineTo(center2.x,center2.y); // Les coordonnées d'arrivée (centre de l'objet 2)
}
Lancer la fonction juste en dessous de la création des deux objets.
linkItem(shap1,shap2);
Mon fichier source Main.as
]]>
Importer la classe FlashConnect dans votre projet.
import org.flashdevelop.utils.FlashConnect;
Vous pouvez maintenant faire votre trace grâce à la commande:
FlashConnect.trace("Mon message debug");
Une remarque toutefois, ce trace n’est pas aussi efficace que celui de Flash, vous ne pouvez pas, par exemple, passer deux paramètres d’un coup
trace(obj1.x,obj1.y); devra plutôt s’écrire FlashConnect.trace(obj1.x + » » + obj1.y);
Personnellement pour sélectionner quel touche vas déclencher une action, j’utilise les keycode, c’est à dire un numéro qui correspond à une touche du clavier.
Ce tuto vas se dérouler en deux étapes:
Premièrement, créer une petite fonction qui vas nous donner le numéro(keycode) des touches (on ne les connais évidement pas par coeur). A l’aide d’un écouteur et d’un trace.
Ensuite, modifier cette fonction pour qu’elle réagisse à la pression de la dite touche.
Je travail dans flashdevelop, mais cela reste identique que vous travaillez dans flash, flex builder ou tout autres programmes. Je vous laisser régler votre programme pour avoir une classe vierge prêt à l’emploi
Dans le constructeur de votre classe, taper la ligne suivant:
stage.addEventListener(KeyboardEvent.KEY_DOWN, fonctionClavier);
En n’oublions pas d’importer les keyboardEvent :
import flash.events.KeyboardEvent;
Grace à notre écouteur d’événement, à chaque fois qu’un touche est enfoncée (key_down), la fonction « fonctionClavier » se déclenche. Il faut maintenant la créer:
private function fonctionClavier(e:KeyboardEvent):void {}
Voilà nous avons maintenant une fonction prêt à bondir à chaque pression sur une touche du clavier. Il reste maintenant à déterminer quoi faire et quand.
Avant de poursuivre, compiler vos projet afin de vous assurer de n’avoir aucune erreur.
rajoutez dans votre fonction un trace comme ceci:
private function fonctionClavier(e:KeyboardEvent):void {
trace (e.keyCode);
}
Compiler et appuyer sur les touches de votre clavier, le trace devrait vous renvoyez un numéro correspondant à la touche. Voilà nous avons un trace qui nous affiches quel keyCode correspond à quel touche (par ex: 32 = touche ESPACE).
Continuons notre fonction pour réaliser un petit exemple pratique.
Ici créons un petit carré rouge que nous allons faire bouger avec les flèches du clavier.
Importons déjà le package des formes :
import flash.display.Shape;
Ensuite une petite variable pour la contenir:
private var unCarre:Shape = new Shape();
Et enfin créons une fonction qui va s’occuper de la forme:
private function creerForme():void {
unCarre.graphics.beginFill ( 0x990000 );
unCarre.graphics.lineStyle ( 1, 0x000000, 1, false );
unCarre.graphics.drawRect ( 0, 0, 100, 100 );
unCarre.graphics.endFill ();
addChild(unCarre);
}
Et lançons cette fonction dans le constructeur
creerForme();
Passons maintenant au vif du sujet, à savoir compléter notre « fonctionClavier » pour que le clavier agit sur notre petit carré rouge.
Personnellement j’utilise un switch comme condition afin de pas avoir un paquet de if… if.. ext… Nous avons donc une condition qui va tester le keycode de la touche enfoncée et agir en conséquence. Voici le code complèt:
private function fonctionClavier(e:KeyboardEvent):void {
//trace (e.keyCode);
switch(e.keyCode) {
case (37): // Touche Gauche
unCarre.x -= 50;
break;
case (38): // Touche Haut
unCarre.y -= 50;
break;
case (39): // Touche Droite
unCarre.x += 50;
break;
case (40): // Touche Bas
unCarre.y += 50;
break;
case (32): // Touche Espace
unCarre.rotation += 45;
break;
default:
break;
}
}
Voilà ! Nous avons donc un petit carré rouge qui bouge en fonction des flèches du clavier. Et qui fait une rotation de 45° quand on appuie sur la touche espace.
A vous de jouer
Voici le résultat:
Canon EOS 1000D
ISO : 200
Opturation : 1/640
Focal : F/5,6
Comment faire (Webcam requise):
1. Télécharger et imprimer ce symbole (pdf)
2. Autorisée flash à acceder à votre webcam.
3. Montré le symbole à la webcam.
Model 3D: Caricature d’Eddy Mitchell réalisée pour l’école en 2006.
Cela mérite évidement encore quelques ajustements.
Bientôt peut-être un tuto, une fois que je saurais mieux me débrouiller
Réalité augmentée basée sur les packages AS3 FLARToolKit (JP) et Papervision 3D (EN)
]]>