Advertisement
soyuka

Poubelle exo flash drag&drop

May 3rd, 2013
71
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. import fl.motion.MotionEvent;
  8.  
  9.  
  10. /*Définition des fontions en haut (ça plante moins) */
  11.  
  12. /**
  13. * Fonction run
  14. * deplace l'objet suivant si le jeu n'est pas fini
  15. **/
  16. function run():void {
  17.     //Début du jeu
  18.     if(objetDeplace == 0) {
  19.         prettyTalk("Bonjour et Bienvenue !\nSauras-tu jeter tes détritus dans la bonne poubelle ?");
  20.         deplacementInitial(objets[objetDeplace]); //on déplace l'objet
  21.     }
  22.     else if(objetDeplace < maxObjets) {
  23.         deplacementInitial(objets[objetDeplace]); //on déplace l'objet
  24.     } else {
  25.         //Speech de Fin
  26.         if(score >= 0 && score <= 3) {
  27.             speechDeFin("Ton score est de : " + score + "\nPollueur ! Payeur ! Tu peux vraiment faire mieux ?");
  28.         } else if(score >= 4 && score <= 7) {
  29.             speechDeFin("Ton score est de : " + score + "\nTu fais encore des erreurs : ce n'est pas excusable !");
  30.         } else if(score >=8 && score <= 9) {
  31.             speechDeFin("Ton score est de : " + score + "\nPas mal !");
  32.         } else {
  33.             speechDeFin("Un sans fautes !\nEnfin, quelqu'un d'éco-responsable ! Saurais-tu reproduire ce résultat à chaque fois ?");
  34.         }
  35.     }
  36. }
  37.  
  38. /**
  39. * Fonction deplacementInitial
  40. * Déplace l'objet donné sur le plateau
  41. **/
  42. function deplacementInitial(obj, temps = 1) {
  43.  
  44.     var positionPlateau = new Array();
  45.    
  46.     /*Définition de la position sur le plateau*/
  47.     positionPlateau['x'] = 770;
  48.     positionPlateau['y'] = 180;
  49.        
  50.  
  51.     //Référence de Tween : (http://help.adobe.com/fr_FR/FlashPlatform/reference/actionscript/3/fl/transitions/Tween.html)
  52.     //Tween(obj:Object, prop:String, func:Function, begin:Number, finish:Number, duration:Number, useSeconds:Boolean = false)
  53.    
  54.     //Déplace l'objet sur le plateau + fadeIn smooth
  55.     var deplacementx:Tween = new Tween(obj, "x", Regular.easeOut, obj.x, positionPlateau['x'], temps, true);
  56.     var deplacementy:Tween = new Tween(obj, "y", Regular.easeOut, obj.y, positionPlateau['y'], temps, true);
  57.     var fadeIn:Tween = new Tween(obj, "alpha", None.easeNone, obj.alpha, 1, temps, true);
  58.    
  59.     obj.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
  60. }
  61.  
  62.  
  63. /**
  64. * Fonction testMatch
  65. * Teste si l'objet à été mis dans la bonne poubelle
  66. **/
  67. function testMatch(target, obj) {
  68.  
  69.     //Si l'objet = la valeur de dict[objet_depose]
  70.     if( dict[target.parent].indexOf(obj) != -1  ) {
  71.         prettyTalk('Bravo ! Encore réussi !');
  72.         score++;
  73.     } else {
  74.         prettyTalk('Loupé cette fois-ci : tu feras peut-être mieux une autre fois');
  75.        
  76.     }
  77.            
  78.     //passe la poubelle à 0.5 d'opacité
  79.     target.parent.alpha = 0.5;
  80.    
  81.     //Je met l'objet derrière la poubelle :)
  82.     setChildIndex(obj, 1);
  83.    
  84.     //On augmente le nb d'objets déplacés
  85.     objetDeplace++;
  86.    
  87.     score_texte.text = score;
  88.    
  89.     //Et on relance le tout
  90.     run();
  91.    
  92. }
  93.  
  94. // Définit l´événement mouse down handler (l´utilisateur déplace l´objet)
  95. function mouseDownHandler(evt:MouseEvent):void {
  96.  
  97.     var obj = evt.target;
  98.    
  99.     obj.addEventListener(MouseEvent.MOUSE_UP, mouseUpHandler);
  100.  
  101.     // limite le déplacement à l´intérieur du canevas
  102.     obj.startDrag(true);
  103. }
  104.  
  105. // Lorqu'on lache le curseur
  106. function mouseUpHandler(evt:MouseEvent):void {
  107.  
  108.     var obj = evt.target;
  109.    
  110.     obj.stopDrag(); //stop le drag
  111.    
  112.     //Si on déplace pdt l'animation ça foire, donc je désactive le listener
  113.     obj.removeEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
  114.     obj.removeEventListener(MouseEvent.MOUSE_UP, mouseUpHandler);
  115.    
  116.     fermerLesPoubelles(); //on ferme les poubelles
  117.    
  118.     // obj.dropTarget donne la référence de la forme de l´objet sur laquelle on a déposé l'objet
  119.     var target = obj.dropTarget;
  120.    
  121.     // Si l´objet existe on fais le test
  122.     if (target != null && objetsSansDrop.indexOf(target.parent) == -1 && objetsSansDrop.indexOf(target) == -1)
  123.     {
  124.         testMatch(target, obj);
  125.     }
  126.     else
  127.     {
  128.         deplacementInitial(obj, 1); //sinon on le remet sur le plateau
  129.     }
  130.  
  131. }
  132.  
  133. //Ouvre la poubelle
  134. function ouvrirPoubelle(evt : MouseEvent) : void {
  135.     var clip:MovieClip = MovieClip(evt.target);
  136.    
  137.     //Parcours les poubelles
  138.     for each (var poubelle in poubelles) {
  139.        
  140.         couvercles[poubelle].rotation = 0; //reset les couvercles
  141.        
  142.         if(clip.hitTestObject(poubelle)) // si j'ai trouvé la bonne poubelle
  143.         {
  144.             if(couvercles[poubelle].rotation == 0) //et quelle n'est pas déjà rotationnée — se dit pas -'-
  145.                 couvercles[poubelle].rotation -= 30;
  146.         }
  147.     }
  148. }
  149.  
  150. //Ferme les poubelles
  151. function fermerLesPoubelles() {
  152.     for each (var poubelle in poubelles) {
  153.         couvercles[poubelle].rotation = 0;
  154.     }
  155. }
  156.  
  157. //Petite fct aléatoire pour la fonction sort
  158. function randomize ( a : *, b : * ) : int {
  159.     return ( Math.random() > .5 ) ? 1 : -1;
  160. }
  161.  
  162. var parle = false; //Parle à false
  163.  
  164. function arreteDeParler() {
  165.     lepers.gotoAndStop(1);
  166.    
  167.     parle = false;
  168. }
  169.  
  170. function prettyTalk(phrase) {
  171.     //S'il n'est pas entrain de parler
  172.     if(!parle) {
  173.         parle = true;
  174.        
  175.         champTexte.text = phrase;
  176.    
  177.         lepers.play(); //parle avec la bouche :O
  178.         setTimeout(arreteDeParler, (phrase.length / 20) *1000); //Héhé petit calcul pour le temps de lecture
  179.     } else {
  180.         arreteDeParler();
  181.         prettyTalk(phrase);
  182.     }
  183.    
  184. }
  185.  
  186. //Fin du jeu, ça se corse je reset toutes les valeurs
  187. function speechDeFin(phrase) {
  188.    
  189.     pupitre.visible = false;
  190.     score_texte.visible = false;
  191.    
  192.     for each (var poubelle in poubelles) {
  193.         poubelle.visible = false;
  194.         poubelle.alpha = 1;
  195.         var index = this.getChildIndex(poubelle); //préserve l'index de la dernière poubelle
  196.     }
  197.    
  198.     for each(var couvercle in couvercles) {
  199.         couvercle.visible = false;
  200.     }
  201.    
  202.     for each (var items in dict)
  203.     {
  204.         for each (var item in items) {
  205.             item.alpha = 0;
  206.             setChildIndex(item, (index+2) ); //Remet l'index
  207.            
  208.              //Position aléatoire sur la scène
  209.             item.x = Math.round(Math.random()*(stage.width-stage.x+1)+(stage.x-.5));
  210.             item.y = Math.round(Math.random()*(stage.height-stage.y+1)+(stage.y-.5));
  211.         }
  212.    
  213.     }
  214.    
  215.     //On agrandi le perso
  216.     var scaleTween:Tween=new Tween(lepers,"scaleX",Regular.easeIn,1,3,1,true);
  217.     var scale2Tween:Tween=new Tween(lepers,"scaleY",Regular.easeIn,1,3,1,true);
  218.    
  219.     //On montre le bouton
  220.     rejouer.visible = true;
  221.     rejouer.addEventListener(MouseEvent.CLICK, replay);
  222.    
  223.     //Décalage de la bulle et du texte
  224.     var bulleTween:Tween = new Tween(bulle_texte, "x", Regular.easeIn, bulle_texte.x, bulle_texte.x+100, 1, true);
  225.     var textTween:Tween = new Tween(parle_texte, "x", Regular.easeIn, parle_texte.x, parle_texte.x+100, 1, true);
  226.    
  227.     prettyTalk(phrase);
  228. }
  229.  
  230. //Replay
  231. function replay(evt:MouseEvent):void {
  232.     var obj = evt.target;
  233.    
  234.     //On raptissie lepers
  235.     var scaleTween:Tween=new Tween(lepers,"scaleX",Regular.easeIn,3,1.5,1,true); //Pk 1.5 ?! 1 = trop petit % départ
  236.     var scale2Tween:Tween=new Tween(lepers,"scaleY",Regular.easeIn,3,1.5,1,true);
  237.    
  238.     //Remet la bulle à sa position initiale
  239.     var bulleTween:Tween = new Tween(bulle_texte, "x", Regular.easeIn, bulle_texte.x, bulle_texte.x-100, 1, true);
  240.     var textTween:Tween = new Tween(parle_texte, "x", Regular.easeIn, parle_texte.x, parle_texte.x-100, 1, true);
  241.    
  242.     //Hide du btn
  243.     obj.visible = false;
  244.     obj.removeEventListener(MouseEvent.CLICK, replay);
  245.    
  246.     //remet le score à 0
  247.     score = 0;
  248.     score_texte.text = "0";
  249.     objetDeplace = 0;
  250.  
  251.     //Affiche a nouveau tout
  252.     pupitre.visible = true;
  253.     score_texte.visible = true;
  254.    
  255.     for each (var poubelle in poubelles) {
  256.         poubelle.visible = true;
  257.     }
  258.    
  259.     for each(var couvercle in couvercles) {
  260.         couvercle.visible = true;
  261.     }
  262.    
  263.     //Et je lance
  264.     run();
  265.    
  266. }
  267.  
  268. /* Script */
  269.  
  270. //définition du champ de texte où apparaissent les infos
  271. var champTexte = parle_texte;
  272.  
  273. rejouer.visible = false;
  274.  
  275. var poubelles = new Array(poubelle_bleu, poubelle_vert, poubelle_gris, poubelle_jaune);
  276. var objetsSansDrop = new Array(rejouer, lepers, parle_texte, score_texte, couvercle_bleu, couvercle_vert, couvercle_gris, couvercle_jaune, pupitre, fond, bulle_texte,logo);
  277.  
  278. var dict = new Dictionary ();
  279.  
  280. //Ici on défini tous nos objets de la façon suivante :
  281. //dict[objet_arrive] = obj;
  282.  
  283. dict[poubelle_bleu] = new Array(pomme, oeuf);
  284. dict[poubelle_vert] = new Array(bouteille_verre,sauce_tomate);
  285. dict[poubelle_gris] = new Array(conserve,canette,couche);
  286. dict[poubelle_jaune] = new Array(bouteille_coca, bouteille_orange, papier);
  287.  
  288. //Définission des couvercles
  289. var couvercles = new Dictionary ();
  290.  
  291. couvercles[poubelle_bleu] = couvercle_bleu;
  292. couvercles[poubelle_vert] = couvercle_vert;
  293. couvercles[poubelle_jaune] = couvercle_jaune;
  294. couvercles[poubelle_gris] = couvercle_gris;
  295.  
  296. var maxObjets = 0; //va nous servir à la fin du jeu pour compter chaque objet déposé correctement
  297. var score = 0;
  298.  
  299. var objets:Array = new Array(); //tableau d'objets
  300.  
  301. for each (var items in dict)
  302. {
  303.     for each (var item in items) {
  304.         item.useHandCursor = true; //donne normalement le curseur de main à l'objet qui peut bouger
  305.         item.alpha = 0;
  306.         item.addEventListener(MouseEvent.MOUSE_MOVE, ouvrirPoubelle);
  307.         objetsSansDrop.push(item);
  308.         //Va stocker les objets numériquement pour qu'on puisse les faire suivre
  309.         objets[maxObjets] = item;
  310.         maxObjets++;
  311.        
  312.     }
  313.  
  314. }
  315.  
  316. objets.sort( randomize ); //Met les objets dans un ordre aléatoire
  317.  
  318. var objetDeplace = 0; //compteur des objets
  319.  
  320. run(); //lance run();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement