Tutoriels vidéo art graphique gratuits

 
Bienvenue, Invité. Merci de vous connecter ou de vous inscrire.
Pages: [1]   En bas

Auteur Sujet: Erreur #1009  (Lu 1345 fois)

AnneLise1311

  • Invité
Erreur #1009
« le: janvier 05, 2013, 11:37:35 am »

Bonjour à tous  :)

J'ai trouvé le forum par hasard et j'ai pensé que vous pourriez m'aider. Je suis débutante en as3, et j'essaye de créer un Casse Brique.
J'ai déjà un peu avancé sur le jeu en lui même, mais je bloque sur la création des niveaux. J'ai crée plusieurs niveaux, et tout fonctionne dans le niveau 1; mais dès que je passe au niveau suivant dans le jeu, les vies ne fonctionnent plus, ni le score.

J'ai une erreur de ce type : TypeError: Error #1009: Il est impossible d'accéder à la propriété ou à la méthode d'une référence d'objet nul.
   at code::CasseBriques/enterFrameHandler()

J'imagine que c'est une erreur connue, et que ce doit être un objet qui est null, ou quelque chose comme ça... Mais je ne trouve pas mon erreur. Si quelqu'un avait une piste, ça serait merveilleux!

Je vous remercie d'avance,
Anne-Lise




Je vous donne le code à la suite; il est assez long mais en gros il y a deux fonctions principales onJeu et moveBall, et des plus petites fonctions de réglages des boutons et du jeu. C'est certainement la fonction enterFrameHandler qui ne fonctionne pas.


   public class CasseBriques extends MovieClip {
      
      public var started: Boolean = false;
      public var balle: Ball;
      public var mur:Array=new Array;
      public var raquette: Raquette;
      public var briques : Array = new Array;
      public var vie : Array = new Array;
      public var score : int;
      public var niveau : int;
      

      public function CasseBriques()
      {
         stop();
         Btn_start.addEventListener(MouseEvent.CLICK, onJeu);
         niveau=0;
      }
      
      

      public function onJeu(e:MouseEvent):void
      {
         gotoAndStop("Jeu");
         score=0;
                  
         balle = new Ball();
         balle.place(330,320,1.3);
         raquette = new Raquette();
         raquette.place(300,350);
         
         
         addChild (balle);
         addChild (raquette);
         
         var t;
         var i;
         t = 570;
         for (i=0; i<4;i++){
            vie = new Vie();
            vie.place(t, 40);
            t = t + 20;
            addChild (vie);
         }
         
         mur[0]=[new Point(658,8), new Point(658,392)];
         mur[1]=[new Point(8,8), new Point(8,392)];
         mur[2]=[new Point(8,8), new Point(658,8)];
         mur[3]=[new Point(8,392), new Point(658,392)];
         
         if (niveau==0){
            var n0;
            for (n0=0; n0<2;n0++){
               briques[n0]=new Brique();
               briques[n0].place(75+briques[n0].width*(n0%10), 90+50*(Math.floor(n0/5)));
               addChild(briques[n0]);
            }
         }
         
         if (niveau==1){
            var n1;
            for (n1=0; n1<20;n1++){
               briques[n1]=new Brique();
               briques[n1].place(75+briques[n1].width*(n1%10), 90+50*(Math.floor(n1/10)));
               addChild(briques[n1]);
            }
         }
         
         if (niveau==2){
            var n2;
            for (n2=0; n2<40;n2++){
               briques[n2]=new Brique();
               briques[n2].place(75+briques[n2].width*(n2%10), 70+50*(Math.floor(n2/10)));
               addChild(briques[n2]);
            }
         }
            
         
         addEventListener(Event.ENTER_FRAME,enterFrameHandler);
         stage.focus=this;
         stage.addEventListener(KeyboardEvent.KEY_DOWN, moveRaquette); // appuyer sur un bouton
         stage.addEventListener(KeyboardEvent.KEY_UP, moveRaquette);
         started = true;
      }   
      
      
      
      
      public function moveBall(b:Ball):void {
         
         var arebondi:Boolean = false;
            var j:int; //Numéro du coté
            var p:Point;
            var d: int;
            var dmin:int;
            var numbrique: int;
            var numcote:int;
            
         
         do{
            var obstacle:Boolean = false;
         
         
            for (var i:int=0; i<3; i++){
               
               // Tester les murs
               if (b.isrebound(mur[0], mur[1])) { // si la balle rebondi sur l’obstacle defini par le mur
                  arebondi=true;
                  obstacle=true;  // on note qu’il y a eu un rebond
               }
            }
         
            //Tester la raquette
            if (b.isrebound(new Point(raquette.x,raquette.y), new Point(raquette.x + raquette.width,raquette.y),0.7)) { // si la balle rebondi sur l’obstacle defini par le mur
                  arebondi=true;
                  obstacle=true;  // on note qu’il y a eu un rebond
               }
         
         //Tester des briques

            
               //Pour ne pas que les balles ne rentrent dans les cases :
            dmin= 100000;
            
            for(i=0;i<briques.length;i++){
               for (j=0; j<4;j++){   
                  p=Ball.intersectsegments(new Point(b.x,b.y),b.nextpos(), briques.cote[j][0], briques.cote[j][1]);
                  if (p){
                     d=(p.x-b.x)*(p.x-b.x)+(p.y-b.y)*(p.y-b.y);
                     if (d<dmin){
                        dmin = d;
                        numbrique=i;
                        numcote=j;
                     }
                  }
               }
            }
            
            if (dmin<100000 && b.isrebound(briques[numbrique].cote[numcote][0],briques[numbrique].cote[numcote][1])){
                     obstacle = true;
                     arebondi=true;
                     removeChild(briques[numbrique]);
                     briques.splice(numbrique,1);
                     score=score+10;
                  }
            
            } while(obstacle)
         
            if (arebondi)
               b.findeplace(); // s'il y a eu au moins un rebond, finir le deplacement
            else
            b.deplace(); // avance la balle simplement
         
         
         //Plus de briques
         if (briques.length == 0){
            started = false;
            niveau = niveau + 1;
            gotoAndStop("Suivant");
            removeChild(raquette);
            removeChild(balle);
            Btn_next.addEventListener(MouseEvent.CLICK, onJeu);
         }
         
         
         //Plus de vies
         if (vie.length == 0){
            started = false;
            score = 0;
            gotoAndStop("Restart");
            Btn_again.addEventListener(MouseEvent.CLICK, onJeu);
            removeChild(raquette);
            removeChild(balle);
         }
         
         if (vie == 0){
            started = false;
            gotoAndStop("Fin");
         }
            
         
         //Fin des niveaux
         if (niveau == 2){
            started = false;
            gotoAndStop("Fin");
         }
         
         //Balle sortie du cadre
         if (b.y>400){
            if (vie.length>0)
            {
               removeChild(vie[0]);
               vie.splice(0,1);
               b.speed= 5;
            }
            else
            {
               started = false;
            }
            started = false;
            removeChild (balle)
            balle = new Ball();
            balle.place(330,320,1.3);
         
            addChild (balle);
            
            started = true;
         }            
         
      }
      
      
      
      
      protected function enterFrameHandler(event:Event):void {
         
         // Si la partie a commencé, faire déplacer la balle
         if (started)
         { // test de l’état de la partie
         moveBall(balle);
         monscore.text = String(score);
         }
         
      }
      
      
      
      
      public function moveRaquette(event:KeyboardEvent):void
      {
         switch(event.keyCode)
         {
            case Keyboard.LEFT:            
            raquette.deplace(-10);
            break;
         
            case Keyboard.RIGHT:
            raquette.deplace(10);
            break;
            
            case Keyboard.SPACE:
               started = true;
         }
      
      }
      
   }
IP archivée
 



Wisibility est un sité dédié à la formation aux métiers l’image. Vous y trouverez différentes ressources vous aidant à maîtriser les logiciels graphiques tels que Photoshop, Lightroom, Illustrator, InDesign, Flash… Aujourd’hui, Wisibility réunie plus d'une vingtaine d’experts, intervenant en Entreprise pour former graphistes, webdesigners, développeurs web, photographes, monteurs, trucistes…
Depuis 2006 nous nous sommes spécialisés dans les tutoriels vidéos permettant de se former à distance. Notre forum très actif, géré par une équipe de bénévoles répondra à vos demandes. Vous pourrez également profiter de nos émissions et reportages sur la Wisi TV.

Nos partenaires

         
Contact - Wisibility est une marque déposée

Blog - Tutoriels - Wisi TV - Forum