Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import fl.transitions.Tween;
- import fl.transitions.easing.*;
- import fl.transitions.TweenEvent;
- import flash.utils.Dictionary;
- import flash.display.Sprite;
- import flash.events.MouseEvent;
- import fl.motion.MotionEvent;
- /*Définition des fontions en haut (ça plante moins) */
- /**
- * Fonction run
- * deplace l'objet suivant si le jeu n'est pas fini
- **/
- function run():void {
- //Début du jeu
- if(objetDeplace == 0) {
- prettyTalk("Bonjour et Bienvenue !\nSauras-tu jeter tes détritus dans la bonne poubelle ?");
- deplacementInitial(objets[objetDeplace]); //on déplace l'objet
- }
- else if(objetDeplace < maxObjets) {
- deplacementInitial(objets[objetDeplace]); //on déplace l'objet
- } else {
- //Speech de Fin
- if(score >= 0 && score <= 3) {
- speechDeFin("Ton score est de : " + score + "\nPollueur ! Payeur ! Tu peux vraiment faire mieux ?");
- } else if(score >= 4 && score <= 7) {
- speechDeFin("Ton score est de : " + score + "\nTu fais encore des erreurs : ce n'est pas excusable !");
- } else if(score >=8 && score <= 9) {
- speechDeFin("Ton score est de : " + score + "\nPas mal !");
- } else {
- speechDeFin("Un sans fautes !\nEnfin, quelqu'un d'éco-responsable ! Saurais-tu reproduire ce résultat à chaque fois ?");
- }
- }
- }
- /**
- * Fonction deplacementInitial
- * Déplace l'objet donné sur le plateau
- **/
- function deplacementInitial(obj, temps = 1) {
- var positionPlateau = new Array();
- /*Définition de la position sur le plateau*/
- positionPlateau['x'] = 770;
- positionPlateau['y'] = 180;
- //Référence de Tween : (http://help.adobe.com/fr_FR/FlashPlatform/reference/actionscript/3/fl/transitions/Tween.html)
- //Tween(obj:Object, prop:String, func:Function, begin:Number, finish:Number, duration:Number, useSeconds:Boolean = false)
- //Déplace l'objet sur le plateau + fadeIn smooth
- var deplacementx:Tween = new Tween(obj, "x", Regular.easeOut, obj.x, positionPlateau['x'], temps, true);
- var deplacementy:Tween = new Tween(obj, "y", Regular.easeOut, obj.y, positionPlateau['y'], temps, true);
- var fadeIn:Tween = new Tween(obj, "alpha", None.easeNone, obj.alpha, 1, temps, true);
- obj.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
- }
- /**
- * Fonction testMatch
- * Teste si l'objet à été mis dans la bonne poubelle
- **/
- function testMatch(target, obj) {
- //Si l'objet = la valeur de dict[objet_depose]
- if( dict[target.parent].indexOf(obj) != -1 ) {
- prettyTalk('Bravo ! Encore réussi !');
- score++;
- } else {
- prettyTalk('Loupé cette fois-ci : tu feras peut-être mieux une autre fois');
- }
- //passe la poubelle à 0.5 d'opacité
- target.parent.alpha = 0.5;
- //Je met l'objet derrière la poubelle :)
- setChildIndex(obj, 1);
- //On augmente le nb d'objets déplacés
- objetDeplace++;
- score_texte.text = score;
- //Et on relance le tout
- run();
- }
- // Définit l´événement mouse down handler (l´utilisateur déplace l´objet)
- function mouseDownHandler(evt:MouseEvent):void {
- var obj = evt.target;
- obj.addEventListener(MouseEvent.MOUSE_UP, mouseUpHandler);
- // limite le déplacement à l´intérieur du canevas
- obj.startDrag(true);
- }
- // Lorqu'on lache le curseur
- function mouseUpHandler(evt:MouseEvent):void {
- var obj = evt.target;
- obj.stopDrag(); //stop le drag
- //Si on déplace pdt l'animation ça foire, donc je désactive le listener
- obj.removeEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
- obj.removeEventListener(MouseEvent.MOUSE_UP, mouseUpHandler);
- fermerLesPoubelles(); //on ferme les poubelles
- // obj.dropTarget donne la référence de la forme de l´objet sur laquelle on a déposé l'objet
- var target = obj.dropTarget;
- // Si l´objet existe on fais le test
- if (target != null && objetsSansDrop.indexOf(target.parent) == -1 && objetsSansDrop.indexOf(target) == -1)
- {
- testMatch(target, obj);
- }
- else
- {
- deplacementInitial(obj, 1); //sinon on le remet sur le plateau
- }
- }
- //Ouvre la poubelle
- function ouvrirPoubelle(evt : MouseEvent) : void {
- var clip:MovieClip = MovieClip(evt.target);
- //Parcours les poubelles
- for each (var poubelle in poubelles) {
- couvercles[poubelle].rotation = 0; //reset les couvercles
- if(clip.hitTestObject(poubelle)) // si j'ai trouvé la bonne poubelle
- {
- if(couvercles[poubelle].rotation == 0) //et quelle n'est pas déjà rotationnée — se dit pas -'-
- couvercles[poubelle].rotation -= 30;
- }
- }
- }
- //Ferme les poubelles
- function fermerLesPoubelles() {
- for each (var poubelle in poubelles) {
- couvercles[poubelle].rotation = 0;
- }
- }
- //Petite fct aléatoire pour la fonction sort
- function randomize ( a : *, b : * ) : int {
- return ( Math.random() > .5 ) ? 1 : -1;
- }
- var parle = false; //Parle à false
- function arreteDeParler() {
- lepers.gotoAndStop(1);
- parle = false;
- }
- function prettyTalk(phrase) {
- //S'il n'est pas entrain de parler
- if(!parle) {
- parle = true;
- champTexte.text = phrase;
- lepers.play(); //parle avec la bouche :O
- setTimeout(arreteDeParler, (phrase.length / 20) *1000); //Héhé petit calcul pour le temps de lecture
- } else {
- arreteDeParler();
- prettyTalk(phrase);
- }
- }
- //Fin du jeu, ça se corse je reset toutes les valeurs
- function speechDeFin(phrase) {
- pupitre.visible = false;
- score_texte.visible = false;
- for each (var poubelle in poubelles) {
- poubelle.visible = false;
- poubelle.alpha = 1;
- var index = this.getChildIndex(poubelle); //préserve l'index de la dernière poubelle
- }
- for each(var couvercle in couvercles) {
- couvercle.visible = false;
- }
- for each (var items in dict)
- {
- for each (var item in items) {
- item.alpha = 0;
- setChildIndex(item, (index+2) ); //Remet l'index
- //Position aléatoire sur la scène
- item.x = Math.round(Math.random()*(stage.width-stage.x+1)+(stage.x-.5));
- item.y = Math.round(Math.random()*(stage.height-stage.y+1)+(stage.y-.5));
- }
- }
- //On agrandi le perso
- var scaleTween:Tween=new Tween(lepers,"scaleX",Regular.easeIn,1,3,1,true);
- var scale2Tween:Tween=new Tween(lepers,"scaleY",Regular.easeIn,1,3,1,true);
- //On montre le bouton
- rejouer.visible = true;
- rejouer.addEventListener(MouseEvent.CLICK, replay);
- //Décalage de la bulle et du texte
- var bulleTween:Tween = new Tween(bulle_texte, "x", Regular.easeIn, bulle_texte.x, bulle_texte.x+100, 1, true);
- var textTween:Tween = new Tween(parle_texte, "x", Regular.easeIn, parle_texte.x, parle_texte.x+100, 1, true);
- prettyTalk(phrase);
- }
- //Replay
- function replay(evt:MouseEvent):void {
- var obj = evt.target;
- //On raptissie lepers
- var scaleTween:Tween=new Tween(lepers,"scaleX",Regular.easeIn,3,1.5,1,true); //Pk 1.5 ?! 1 = trop petit % départ
- var scale2Tween:Tween=new Tween(lepers,"scaleY",Regular.easeIn,3,1.5,1,true);
- //Remet la bulle à sa position initiale
- var bulleTween:Tween = new Tween(bulle_texte, "x", Regular.easeIn, bulle_texte.x, bulle_texte.x-100, 1, true);
- var textTween:Tween = new Tween(parle_texte, "x", Regular.easeIn, parle_texte.x, parle_texte.x-100, 1, true);
- //Hide du btn
- obj.visible = false;
- obj.removeEventListener(MouseEvent.CLICK, replay);
- //remet le score à 0
- score = 0;
- score_texte.text = "0";
- objetDeplace = 0;
- //Affiche a nouveau tout
- pupitre.visible = true;
- score_texte.visible = true;
- for each (var poubelle in poubelles) {
- poubelle.visible = true;
- }
- for each(var couvercle in couvercles) {
- couvercle.visible = true;
- }
- //Et je lance
- run();
- }
- /* Script */
- //définition du champ de texte où apparaissent les infos
- var champTexte = parle_texte;
- rejouer.visible = false;
- var poubelles = new Array(poubelle_bleu, poubelle_vert, poubelle_gris, poubelle_jaune);
- var objetsSansDrop = new Array(rejouer, lepers, parle_texte, score_texte, couvercle_bleu, couvercle_vert, couvercle_gris, couvercle_jaune, pupitre, fond, bulle_texte,logo);
- var dict = new Dictionary ();
- //Ici on défini tous nos objets de la façon suivante :
- //dict[objet_arrive] = obj;
- dict[poubelle_bleu] = new Array(pomme, oeuf);
- dict[poubelle_vert] = new Array(bouteille_verre,sauce_tomate);
- dict[poubelle_gris] = new Array(conserve,canette,couche);
- dict[poubelle_jaune] = new Array(bouteille_coca, bouteille_orange, papier);
- //Définission des couvercles
- var couvercles = new Dictionary ();
- couvercles[poubelle_bleu] = couvercle_bleu;
- couvercles[poubelle_vert] = couvercle_vert;
- couvercles[poubelle_jaune] = couvercle_jaune;
- couvercles[poubelle_gris] = couvercle_gris;
- var maxObjets = 0; //va nous servir à la fin du jeu pour compter chaque objet déposé correctement
- var score = 0;
- var objets:Array = new Array(); //tableau d'objets
- for each (var items in dict)
- {
- for each (var item in items) {
- item.useHandCursor = true; //donne normalement le curseur de main à l'objet qui peut bouger
- item.alpha = 0;
- item.addEventListener(MouseEvent.MOUSE_MOVE, ouvrirPoubelle);
- objetsSansDrop.push(item);
- //Va stocker les objets numériquement pour qu'on puisse les faire suivre
- objets[maxObjets] = item;
- maxObjets++;
- }
- }
- objets.sort( randomize ); //Met les objets dans un ordre aléatoire
- var objetDeplace = 0; //compteur des objets
- run(); //lance run();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement