Forums Développement Multimédia

Aller au contenu

Jeu flash - erreur 2071 ✔

as3 flash jeu erreur 2071 CODE

1 réponse à ce sujet

#1 Elegias

    Ceinture Blanche

  • Members
  • Pip
  • 2 messages

Posté 15 December 2013 - 00:30 AM

Salut tout le monde ! Je suis actuellement en train de coder un petit jeu flash (semblable à celui-ci : http://www.koreus.co...elicoptere.html) pour un travail de fin semestre et j'aurais besoin de votre aide pour résoudre une erreur. Lorsque je compile mon jeu et que je lance la partie après avoir sélectionner un niveau, j'ai cette fameuse erreur 2071 :Error #2071: La classe Stage ne met en oeuvre ni cette propriété, ni cette méthode.
Apparemment ça viendrait de mon event.target mais je ne vois pas pourquoi :/

Voilà l'endroit où le code bug :
La fonction RockTimer marche, addEnemy aussi car je peux voir apparaitre les sprite mais ceux-ci ne bougent pas car les event.target font planté la dernière fonction.

//timer du générateur d'obstacle
  private function RockTimer(e:Event):void
  {
   enemyTimer += 1;
   if(enemyTimer > 60)
   {
        enemyTimer = 0;
        stage.addEventListener(Event.ENTER_FRAME, addEnemy);
   }
   trace (enemyTimer);
  }


  //générateur d'obstacle
  private function addEnemy(event:Event):void{
   var newEnemy:Sprite = new rock();
   newEnemy.x = 500;
   newEnemy.y = Math.random()*300;
   stage.addChild(newEnemy);
 
   stage.addEventListener(Event.ENTER_FRAME, moveEnemy);
  }
  //mouvement des obstacles
  private function moveEnemy(event:Event):void{
   event.target.x -= 10;
   if(event.target.x < 0) {
        event.target.removeEventListener(Event.ENTER_FRAME, moveEnemy);
        event.target.parent.removeChild(event.target);
   }
  }
 


Et le code complet (attention aux yeux):

package
{

import flash.display.DisplayObject;
import flash.display.MovieClip;
import flash.display.Sprite;
import flash.events.Event;
import flash.events.KeyboardEvent;
import flash.events.MouseEvent;
import flash.filters.DisplacementMapFilter;
import flash.geom.Point;
import flash.media.Sound;
import flash.media.SoundChannel;
import flash.net.URLRequest;
import flash.ui.Keyboard;
import flash.display.BlendMode;
import flash.events.TimerEvent;
import flash.text.TextField;
import Key;


/**
  * ...
  * @author AColard
  */

public class ActionNarvhal extends MovieClip
{

  /**
   * Déclaration de toutes les variables
   */


  //variable des sections
  private var intro:MovieClip;
  private var choixlvl:MovieClip;
  private var instruction:MovieClip;
  private var option:MovieClip;
  private var jeu:MovieClip;
  private var fin:MovieClip;

  //variables Hors jeu
  private var score:Number;
  private var sonMA:Number;
  private var sonES:Number;
  private var maintheme:Sound;
  private var ingame1:Sound;
  private var ingame2:Sound;
  private var ingame3:Sound;
  private var endgame:Sound;
  private var channel:SoundChannel;

  //Variable In Game
  //perso
  private var gravity:Number = 0.4;
  private var vy:Number = 0;
  private var vx:Number = 0;

  private var maxspeedG:Number = 9;
  private var maxspeed:Number = 6;

  private var friction:Number = 0.92;

  //obstacle
  private var enemyTimer:Number = 0;

  public function ActionNarvhal():void
  {
   /**
        * IMPORTANT !!!!!!!
        */

   if (stage)
        init()
   else
        addEventListener(Event.ADDED_TO_STAGE, init);
  }

  private function init(e:Event = null):void
  {
 
   removeEventListener(Event.ADDED_TO_STAGE, init);
   Key.initialize(stage);
 
   //initialisation du score et du son
   score = 0;
   sonMA = 0; // son on si son = 0 ; son off si son = 1 ;
   sonES = 0;
 
   //récupération du clip d'intro depuis la bibliothèque
   intro = new Intro();
   intro.btnJouer.buttonMode = true;
   intro.btnInstruction.buttonMode = true;
   intro.btnOption.buttonMode = true;
 
   //ajout de l'écouteur de clic sur les boutons
   // pour aller au choix du niveau
   intro.btnJouer.addEventListener(MouseEvent.MOUSE_DOWN, Choixlvl);
   // pour lancer les instructions
   intro.btnInstruction.addEventListener(MouseEvent.MOUSE_DOWN, Instruction);
   // pour lancer les options
   intro.btnOption.addEventListener(MouseEvent.MOUSE_DOWN, Option);
 
 
   //ajout de l'intro à la scene
   addChild(intro);
 
   //creation des sons
   maintheme = new MainTheme();
   ingame1 = new InGame1();
   ingame2 = new InGame2();
   /*pas encore défini
   ingame3 = new InGame3();*/

   endgame = new EndGame();
 
 
 
   if(channel != null ){
   }
   else {
   // Objet permettant de contrôler le son
   channel = new SoundChannel();
   // Lecture du son et stockage dans le canal
   channel = maintheme.play();
   }
 
  }


  private function SoundOff(e:MouseEvent):void
  {
   channel.stop();
  }


  private function Rejouer(e:MouseEvent):void
  {
 
   if (instruction && contains(instruction)) {
        removeChild(instruction);
   }
   if (option && contains(option)) {
        removeChild(option);
   }
 
 
   //mise à jour du score
   score = 0;
 
   //récupération du clip d'intro depuis la bibliothèque
   intro.btnJouer.buttonMode = true;
   intro.btnInstruction.buttonMode = true;
   intro.btnOption.buttonMode = true;
 
   //ajout de l'écouteur de clic sur les boutons
   // pour aller au choix du niveau
   intro.btnJouer.addEventListener(MouseEvent.MOUSE_DOWN, Choixlvl);
   // pour lancer les instructions
   intro.btnInstruction.addEventListener(MouseEvent.MOUSE_DOWN, Instruction);
   // pour lancer les options
   intro.btnOption.addEventListener(MouseEvent.MOUSE_DOWN, Option);
 
 
   //ajout de l'intro à la scene
   addChild(intro);
 
   if (channel.position == 0 && sonMA == 0 ) {
        channel = maintheme.play();
   }
   else {
   // Objet permettant de contrôler le son
   //channel = new SoundChannel();
   // Lecture du son et stockage dans le canal
 
   }
 
  }


  private function Choixlvl(e:MouseEvent):void
  {
   intro.btnJouer.removeEventListener(MouseEvent.MOUSE_DOWN, Choixlvl);
   removeChild(intro);
 
   choixlvl = new ChoixLvl ();
 
   choixlvl.btnNiveau1.buttonMode = true;
   choixlvl.btnNiveau2.buttonMode = true;
   choixlvl.btnNiveau3.buttonMode = true;
 
   choixlvl.btnNiveau1_2.buttonMode = true;
   choixlvl.btnNiveau2_2.buttonMode = true;
   choixlvl.btnNiveau3_2.buttonMode = true;
 
 
   //pour lancer le niveau 1
   choixlvl.btnNiveau1.addEventListener(MouseEvent.MOUSE_DOWN, startGameFrame);
   choixlvl.btnNiveau1_2.addEventListener(MouseEvent.MOUSE_DOWN, startGameFrame);
   //pour arrêter la musique
   choixlvl.btnNiveau1.addEventListener(MouseEvent.MOUSE_DOWN, SoundOff);
   choixlvl.btnNiveau1_2.addEventListener(MouseEvent.MOUSE_DOWN, SoundOff);
 
   //pour lancer le niveau 2
   choixlvl.btnNiveau2.addEventListener(MouseEvent.MOUSE_DOWN, startGameFrame);
   choixlvl.btnNiveau2_2.addEventListener(MouseEvent.MOUSE_DOWN, startGameFrame);
   //pour arrêter la musique
   choixlvl.btnNiveau2.addEventListener(MouseEvent.MOUSE_DOWN, SoundOff);
   choixlvl.btnNiveau2_2.addEventListener(MouseEvent.MOUSE_DOWN, SoundOff);
 
   //pour lancer le niveau 3
   choixlvl.btnNiveau3.addEventListener(MouseEvent.MOUSE_DOWN, startGameFrame);
   choixlvl.btnNiveau3_2.addEventListener(MouseEvent.MOUSE_DOWN, startGameFrame);
   //pour arrêter la musique
   choixlvl.btnNiveau3.addEventListener(MouseEvent.MOUSE_DOWN, SoundOff);
   choixlvl.btnNiveau3_2.addEventListener(MouseEvent.MOUSE_DOWN, SoundOff);
 
 
   addChild(choixlvl);
 
  }

  //DEBUT NIVEAU 1
  private function startGameFrame(e:MouseEvent):void
  {
 
   choixlvl.btnNiveau1.removeEventListener(MouseEvent.MOUSE_DOWN, startGameFrame);
   choixlvl.btnNiveau2.removeEventListener(MouseEvent.MOUSE_DOWN, startGameFrame);
   choixlvl.btnNiveau3.removeEventListener(MouseEvent.MOUSE_DOWN, startGameFrame);
   choixlvl.btnNiveau1_2.removeEventListener(MouseEvent.MOUSE_DOWN, startGameFrame);
   choixlvl.btnNiveau2_2.removeEventListener(MouseEvent.MOUSE_DOWN, startGameFrame);
   choixlvl.btnNiveau3_2.removeEventListener(MouseEvent.MOUSE_DOWN, startGameFrame);
 
 
   removeChild(choixlvl);
   jeu = new Jeu();
   stage.focus = stage;
 
   //lance la musique du niveau
   if (channel.position == 0 && sonMA == 0 ) {
        channel = ingame1.play();
   }
 
 
   this.addEventListener(Event.ENTER_FRAME, gameLoop);
   this.addEventListener(Event.ENTER_FRAME, map);
   this.addEventListener(Event.ENTER_FRAME, RockTimer);
 
 
 
 
   addChild(jeu);

  }

  //timer du générateur d'obstacle
  private function RockTimer(e:Event):void
  {
   enemyTimer += 1;
   if(enemyTimer > 60)
   {
        enemyTimer = 0;
        stage.addEventListener(Event.ENTER_FRAME, addEnemy);
   }
   trace (enemyTimer);
  }


  //générateur d'obstacle
  private function addEnemy(event:Event):void{
   var newEnemy:Sprite = new rock();
   newEnemy.x = 500;
   newEnemy.y = Math.random()*300;
   stage.addChild(newEnemy);
 
   stage.addEventListener(Event.ENTER_FRAME, moveEnemy);
  }
  //mouvement des obstacles
  private function moveEnemy(event:Event):void{
   event.target.x -= 10;
   if(event.target.x < 0) {
        event.target.removeEventListener(Event.ENTER_FRAME, moveEnemy);
        event.target.parent.removeChild(event.target);
   }
  }


  //mouvement du fond
  private function map(e:Event):void
  {
   jeu.map1.x -= 10;
   jeu.map2.x -= 10;
 
   if (jeu.map1.x == -1500)
        {
        jeu.map1.x = 1500;
        }
 
   if (jeu.map2.x == -1500)
        {
         jeu.map2.x = 1500;
        }
  }
  //FIN NIVEAU 1


  private function gameLoop(e:Event):void
  {
   //ramene le personnage au sol avec la gravité
   vy += gravity;
 
   //ajoute la velocité a la pos du personnage
   jeu.perso.y += vy;
   jeu.perso.x += vx;

   //pour que le personnage ai une vitesse max
   if (vy > maxspeedG)
        vy = maxspeedG;
   else if (vy < -maxspeed)
        vy = -maxspeed;
 
   /* Pas utile
   if (vx > maxspeed)
        vx = maxspeed;
   else if (vx < -maxspeed)
        vx = -maxspeed;
   */

 
   //pose le personnage sur le sol
   if (y > jeu.stageHeight)
   {
        y = jeu.stageHeight;
        vy = 0;
   }
 
   //fais monter ou descendre le personnage
   if (Key.isDown(Keyboard.UP))
        vy -= 1;
   else if (Key.isDown(Keyboard.DOWN))
        vy += 0.5;
 
 
 
  }

  private function Instruction(e:MouseEvent):void
  {
   intro.btnInstruction.removeEventListener(MouseEvent.MOUSE_DOWN, Instruction);
   removeChild(intro);
   if (instruction == null){
   instruction = new Instructions (); }
 
 
   instruction.btnRetour.buttonMode = true;
   instruction.btnRetour.addEventListener(MouseEvent.MOUSE_DOWN, Rejouer);
 
 
   if (!contains (instruction)){
   addChild(instruction);}
 
  }


  private function Option(e:MouseEvent):void
  {
 
   intro.btnInstruction.removeEventListener(MouseEvent.MOUSE_DOWN, Option);
   removeChild(intro);
   if (option == null){
   option = new Options ();}
 
   option.btnRetour.buttonMode = true;
   option.btnRetour.addEventListener(MouseEvent.MOUSE_DOWN, Rejouer);
 
 
   if (sonMA == 0) {
 
        var MAOn:String = "Desactiver la musique";
        option.MAText.text = MAOn.toString();
 
        option.MA2.buttonMode = true;
 
        option.MA2.addEventListener(MouseEvent.MOUSE_DOWN, SonOffMA);
 
        option.MA1.gotoAndStop(1);
        option.MA2.gotoAndStop(1);
 
   }else {
 
        var MAOff:String = "Activer la musique";
        option.MAText.text = MAOff.toString();
 
        option.MA1.buttonMode = true;
 
        option.MA1.addEventListener(MouseEvent.MOUSE_DOWN, SonOnMA);
 
        option.MA1.gotoAndStop(2);
        option.MA2.gotoAndStop(2);
   }
 
   if (sonES == 0) {
 
        var ESOn:String = "Desactiver les effets sonores";
        option.ESText.text = ESOn.toString();
 
        option.ES2.buttonMode = true;
 
        option.ES2.addEventListener(MouseEvent.MOUSE_DOWN, SonOffES);
 
        option.ES1.gotoAndStop(1);
        option.ES2.gotoAndStop(1);
 
 
   }else {
 
        var ESOff:String = "Activer les effets sonores";
        option.ESText.text = ESOff.toString();
 
        option.ES1.buttonMode = true;
 
        option.ES1.addEventListener(MouseEvent.MOUSE_DOWN, SonOnES);
 
        option.ES1.gotoAndStop(2);
        option.ES2.gotoAndStop(2);
 
   }
 
 
   if (!contains (option)){
   addChild(option);}
 
  }



  private function SonOffMA(e:MouseEvent):void
  {
   var MAOff:String = "Activer la musique";
   option.MAText.text = MAOff.toString();
 
   option.MA2.buttonMode = false;
   option.MA1.buttonMode = true;
 
   option.MA1.addEventListener(MouseEvent.MOUSE_DOWN, SonOnMA);
   option.MA2.removeEventListener(MouseEvent.MOUSE_DOWN, SonOffMA);
 
   option.MA1.gotoAndStop(2);
   option.MA2.gotoAndStop(2);
 
   sonMA = 1;
   channel.stop();
  }

  private function SonOnMA(e:MouseEvent):void
  {
   var MAOn:String = "Desactiver la musique";
   option.MAText.text = MAOn.toString();
 
   option.MA1.buttonMode = false;
   option.MA2.buttonMode = true;
 
   option.MA2.addEventListener(MouseEvent.MOUSE_DOWN, SonOffMA);
   option.MA1.removeEventListener(MouseEvent.MOUSE_DOWN, SonOnMA);
   option.MA1.gotoAndStop(1);
   option.MA2.gotoAndStop(1);
 
   sonMA = 0;
   channel = maintheme.play();
  }

  private function SonOffES(e:MouseEvent):void
  {
   var ESOn:String = "Activer les effets sonores";
   option.ESText.text = ESOn.toString();
 
   option.ES2.buttonMode = false;
   option.ES1.buttonMode = true;
 
   option.ES1.addEventListener(MouseEvent.MOUSE_DOWN, SonOnES);
   option.ES2.removeEventListener(MouseEvent.MOUSE_DOWN, SonOffES);
 
   option.ES1.gotoAndStop(2);
   option.ES2.gotoAndStop(2);
 
   sonES = 1;
 
  }

  private function SonOnES(e:MouseEvent):void
  {
   var ESOff:String = "Desactiver les effets sonores";
   option.ESText.text = ESOff.toString();
 
   option.ES1.buttonMode = false;
   option.ES2.buttonMode = true;
 
   option.ES2.addEventListener(MouseEvent.MOUSE_DOWN, SonOffES);
   option.ES1.removeEventListener(MouseEvent.MOUSE_DOWN, SonOnES);
   option.ES1.gotoAndStop(1);
   option.ES2.gotoAndStop(1);
 
   sonES = 0;
  }


}

}
 


#2 Elegias

    Ceinture Blanche

  • Members
  • Pip
  • 2 messages

Posté 15 December 2013 - 05:09 AM

Problème résolu !
Il ne falait pas que j'ajoute l'enemy sur le stage mais sur mon clip jeu. Puis que j'ajoute l'event sur l'enemy qui venait d'être créer.



1 utilisateur(s) li(sen)t ce sujet

0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)

authorised training centre

Centre de Formation Mediabox - Adobe et Apple Authorised Training Center.

Déclaré auprès de la Direction du Travail et de la Formation Professionnelle

Mediabox : SARL au capital de 62.000€ - Numéro d'activité : 11 75 44555 75 - SIRET : 49371646800035

MEDIABOX, 23, rue de Bruxelles, 75009 PARIS

FFP