Advertisement
soyuka

Exo poubelles Flash

May 2nd, 2013
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import fl.transitions.Tween;
  2. import fl.transitions.easing.*;
  3. import fl.transitions.TweenEvent;
  4. import flash.utils.Dictionary;
  5. import flash.display.Sprite;
  6. import flash.events.MouseEvent;
  7.  
  8.  
  9. /*Définition des fontions en haut (ça plante moins) */
  10.  
  11. /**
  12. * Fonction run
  13. * deplace l'objet suivant si le jeu n'est pas fini
  14. **/
  15. function run():void {
  16.     //Début du jeu
  17.     if(objetDeplace == 0) {
  18.         prettyTalk("Bonjour et Bienvenue !\nSauras-tu jeter tes détritus dans la bonne poubelle ?");
  19.         deplacementInitial(objets[objetDeplace]); //on déplace l'objet
  20.     }
  21.     else if(objetDeplace < maxObjets) {
  22.         deplacementInitial(objets[objetDeplace]); //on déplace l'objet
  23.     } else {
  24.         if(score >= 0 && score <= 3) {
  25.             speechDeFin("Pollueur ! Payeur ! Tu peux vraiment faire mieux ?");
  26.         } else if(score >= 4 && score <= 7) {
  27.             speechDeFin("Tu fais encore des erreurs : ce n'est pas excusable !");
  28.         } else if(score >=8 && score <= 9) {
  29.             speechDeFin("Pas mal !");
  30.         } else {
  31.             speechDeFin("Enfin, quelqu'un d'éco-responsable ! Saurais-tu reproduire ce résultat à chaque fois ?");
  32.         }
  33.     }
  34. }
  35.  
  36. /**
  37. * Fonction deplacementInitial
  38. * Déplace l'objet donné sur le plateau
  39. **/
  40. function deplacementInitial(obj, temps = 1) {
  41.  
  42.     var positionPlateau = new Dictionary();
  43.    
  44.     /*Définition de la position sur le plateau*/
  45.     positionPlateau['x'] = 463 - obj.width/2;
  46.     positionPlateau['y'] = 170 - obj.height;
  47.    
  48.     //Référence de Tween : (http://help.adobe.com/fr_FR/FlashPlatform/reference/actionscript/3/fl/transitions/Tween.html)
  49.     //Tween(obj:Object, prop:String, func:Function, begin:Number, finish:Number, duration:Number, useSeconds:Boolean = false)
  50.    
  51.     //Déplace l'objet sur le plateau, surement à revoir en fonction des objets
  52.     var deplacementx:Tween = new Tween(obj, "x", Strong.easeOut, obj.x, positionPlateau['x'], temps, true);
  53.     var deplacementy:Tween = new Tween(obj, "y", Strong.easeOut, obj.y, positionPlateau['y'], temps, true);
  54.    
  55.     //(ré)activation du listener
  56.     obj.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
  57.     obj.addEventListener(MouseEvent.MOUSE_UP, mouseUpHandler);
  58. }
  59.  
  60.  
  61. /**
  62. * Fonction testMatch
  63. * Teste si l'objet à été mis dans la bonne poubelle
  64. **/
  65. function testMatch(target, obj) {
  66.  
  67.     //Si l'objet = la valeur de dict[objet_depose]
  68.     if( dict[target.parent].indexOf(obj) != -1  ) {
  69.         prettyTalk('Bravo ! Encore réussi !');
  70.         score++;
  71.     } else {
  72.         prettyTalk('Loupé cette fois-ci : tu feras peut-être mieux une autre fois');
  73.        
  74.     }
  75.            
  76.     //passe l'objet à 0.5 d'opacité
  77.     target.parent.alpha = 0.5;
  78.    
  79.     setChildIndex(obj, 0);
  80.    
  81.     //On augmente le nb d'objets déplacés
  82.     objetDeplace++;
  83.    
  84.     score_texte.text = score;
  85.    
  86.     //Et on relance le tout
  87.     run();
  88.    
  89. }
  90.  
  91. // Définit l´événement mouse down handler (l´utilisateur déplace l´objet)
  92. function mouseDownHandler(evt:MouseEvent):void {
  93.  
  94.     var obj = evt.target;
  95.     // limite le déplacement à l´intérieur du canevas
  96.     obj.startDrag();
  97. }
  98.  
  99. // Lorqu'on lache le curseur
  100. function mouseUpHandler(evt:MouseEvent):void {
  101.  
  102.     var obj = evt.target;
  103.    
  104.     obj.stopDrag(); //stop le drag
  105.    
  106.     //Si on déplace pdt l'animation ça foire, donc je désactive le listener
  107.     obj.removeEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
  108.     obj.removeEventListener(MouseEvent.MOUSE_UP, mouseUpHandler);
  109.    
  110.     fermerLesPoubelles(); //on ferme les poubelles
  111.    
  112.     // obj.dropTarget donne la référence de la forme de l´objet sur laquelle on a déposé l'objet
  113.     var target = obj.dropTarget;
  114.  
  115.     // Si l´objet existe on fais le test
  116.     if (target != null && objetsSansDrop.indexOf(target.parent) == -1 )
  117.     {
  118.  
  119.         testMatch(target, obj);
  120.     }
  121.     else
  122.     {
  123.         deplacementInitial(obj, 1); //sinon on le remet sur le plateau
  124.     }
  125.  
  126. }
  127.  
  128. function ouvrirPoubelle(evt : MouseEvent) : void {
  129.     var clip:MovieClip = MovieClip(evt.target);
  130.  
  131.     for each (var poubelle in poubelles) {
  132.        
  133.         couvercles[poubelle].rotation = 0;
  134.        
  135.         if(clip.hitTestObject(poubelle)) // or use hitTestObject
  136.         {
  137.             if(couvercles[poubelle].rotation == 0)
  138.                 couvercles[poubelle].rotation -= 30;
  139.         }
  140.     }
  141. }
  142.  
  143. function fermerLesPoubelles() {
  144.     for each (var poubelle in poubelles) {
  145.         couvercles[poubelle].rotation = 0;
  146.     }
  147. }
  148.  
  149. function randomize ( a : *, b : * ) : int {
  150.     return ( Math.random() > .5 ) ? 1 : -1;
  151. }
  152.  
  153. var parle = false;
  154.  
  155. function arreteDeParler() {
  156.     lepers.gotoAndStop(1);
  157.    
  158.     parle = false;
  159. }
  160.  
  161. function prettyTalk(phrase) {
  162.     if(!parle) {
  163.         parle = true;
  164.        
  165.         champTexte.text = phrase;
  166.    
  167.         lepers.play();
  168.         setTimeout(arreteDeParler, (phrase.length / 20) *1000);
  169.     } else {
  170.         arreteDeParler();
  171.         prettyTalk(phrase);
  172.     }
  173.    
  174. }
  175.  
  176. function speechDeFin(phrase) {
  177.     prettyTalk(phrase);
  178. }
  179.  
  180. /* Script */
  181.  
  182. //définition du champ de texte où apparaissent les infos
  183. var champTexte = textField;
  184.  
  185. var poubelles = new Array(poubelle_bleu, poubelle_vert, poubelle_gris, poubelle_jaune);
  186. var objetsSansDrop = new Array(trait_discussion, lepers, couvercle_bleu, couvercle_vert, couvercle_gris, couvercle_jaune, pupitre, header);
  187.  
  188. var dict = new Dictionary ();
  189.  
  190. //Ici on défini tous nos objets de la façon suivante :
  191. //dict[objet_arrive] = obj;
  192.  
  193. dict[poubelle_bleu] = new Array(pomme, oeuf);
  194. dict[poubelle_vert] = new Array(bouteille,sauce_tomate);
  195. dict[poubelle_gris] = new Array(conserve,cannette,couche);
  196. dict[poubelle_jaune] = new Array(coca, orange, papier);
  197.  
  198.  
  199. var couvercles = new Dictionary ();
  200.  
  201. couvercles[poubelle_bleu] = couvercle_bleu;
  202. couvercles[poubelle_vert] = couvercle_vert;
  203. couvercles[poubelle_jaune] = couvercle_jaune;
  204. couvercles[poubelle_gris] = couvercle_gris;
  205.  
  206. var maxObjets = 0; //va nous servir à la fin du jeu pour compter chaque objet déposé correctement
  207. var score = 0;
  208.  
  209. var objets:Array = new Array(); //tableau d'objets
  210.  
  211.  
  212. for each (var items in dict)
  213. {
  214.     for each (var item in items) {
  215.         item.useHandCursor = true; //donne normalement le curseur de main à l'objet qui peut bouger
  216.         item.addEventListener(MouseEvent.MOUSE_MOVE, ouvrirPoubelle);
  217.  
  218.         //Va stocker les objets numériquement pour qu'on puisse les faire suivre
  219.         objets[maxObjets] = item;
  220.         maxObjets++;
  221.        
  222.     }
  223.  
  224. }
  225.  
  226. objets.sort( randomize ); //Met les objets dans un ordre aléatoire
  227.  
  228. var objetDeplace = 0; //compteur des objets
  229.  
  230. run(); //lance run();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement