Comunidad de diseño web y desarrollo en internet online

Detectar colisiones en Array.

Citar            
MensajeEscrito el 01 Jun 2011 06:12 pm
No puedo detectar colision en Array,muestro el código:

Código ActionScript :

package 
{
   import flash.display.*;
   import flash.events.*;
   import flash.utils.*;
   
   public class documento extends MovieClip 
   
{   
   public function documento()
{
      var mc2x=200;   //ubicacion de bolas rojas

      var enemyArray:Array = new Array;  //crea array para bolas rojas
      enemyArray.length=40;
      
      var mimc1:mc1=new mc1;  //bola azul
      addChild (mimc1);
      mimc1.x=200;
      mimc1.y=200;
      
      for(var i:Number = 0; i<6; i++) //agrega 6 bolas rojas a array
         {
         var mimc2:mc2=new mc2;
         addChild(mimc2);
         mimc2.x=mc2x;
         mc2x+=40;   //aleja 40 pixeles cada mimc2
         enemyArray.push(mimc2);
      }
      
      
      addEventListener(Event.ENTER_FRAME,mueve); 

      function mueve(e:Event)//mueve bola azul con mouse
      {
         mimc1.x=mouseX;
         mimc1.y=mouseY;
         
      }
         
      addEventListener(Event.ENTER_FRAME,colision);//recorre el array 
      function colision(e:Event)              //e intenta detectar colision
      
      {
      
      
         for (var a:int=0;a<enemyArray.length;a++)
            {   
          
          if (mimc1.hitTestObject(enemyArray[a]))
            {trace("colision");} 
          }
       }
      
      
         
}
}
}
   


Lo que yo hice es meter 6 bolas rojas (mimc2) dentro de un array.Despúes tengo una bola azul (mimc1) que controlo con el mouse.Y al final hay una función que a cada frame recorre el array "enemyArray" (donde están las bolas rojas) intentando detectar la colision con mimc1.
Esa última parte no funciona,los mc2 los crea y los pone en pantalla,la bola azul (mimc1) también la crea y la puedo controlar con el mouse.
Pero me da este mensaje de error:

TypeError: Error #2007: El valor del parámetro hitTestObject debe ser distinto de null.
at flash.display::DisplayObject/_hitTest()
at flash.display::DisplayObject/hitTestObject()
at MethodInfo-2()


No sé que es lo que no funciona.
Saludos.

Por Gus__

3 de clabLevel



 

firefox
Citar            
MensajeEscrito el 01 Jun 2011 06:52 pm
Error en el for, debe ser así>

Código ActionScript :

for (var a:int=0;a<enemyArray.length-1;a++) 


Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 01 Jun 2011 08:12 pm
Gracias,lo probé tal como me dijiste pero me sigue dando el mismo mensaje de error.

Por Gus__

3 de clabLevel



 

firefox
Citar            
MensajeEscrito el 01 Jun 2011 08:16 pm
Ok, tu code no está bien indentado, así que no veo claramente que el array se llene y se haga el addChild, parece que el loop no encuentra el target (el elemento de tu array), trázalo a ver si sale>

Código ActionScript :

for (var a:int=0;a<enemyArray.length;a++) 
            {  
                  trace("Enemigo > "enemyArray[a])


Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 01 Jun 2011 08:33 pm
Ahora me dice este error:
TypeError: Error #1006: value no es una función.
at MethodInfo-2()


Lo tuve que modificar agregando paréntesis para que me lo compile:

Código ActionScript :

for (var a:int=0;a<enemyArray.length;a++)  
            {   
                  trace("Enemigo > "(enemyArray[a])) 
       }

Por Gus__

3 de clabLevel



 

firefox
Citar            
MensajeEscrito el 01 Jun 2011 08:38 pm
Ok, tiens problemas de llaves, no cierras el constructor y declaras la función mueve, mira que todas las llaves cierren bien, sino recibirás errores de todo tipo

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 01 Jun 2011 08:51 pm
Las encontré todas bien las llaves: :(


Código ActionScript :

package 

//package
{ 
   import flash.display.*;
   import flash.events.*;
   import flash.utils.*;
   
   public class documento extends MovieClip 
   
//clase
{   
   public function documento()

//constructor
{
      var mc2x=200;   //ubicacion de bolas rojas

      var enemyArray:Array = new Array;  //crea array para bolas rojas
      enemyArray.length=5;
      
      var mimc1:mc1=new mc1;  //bola azul
      addChild (mimc1);
      mimc1.x=200;
      mimc1.y=200;
      
      for(var i:Number = 0; i<6; i++)   //agrega 6 bolas rojas a su array
      
      //for
      {
         var mimc2:mc2=new mc2;
         addChild(mimc2);
         mimc2.x=mc2x;
         mc2x+=40;
         enemyArray.push(mimc2);
      //for
      }
      
      
      addEventListener(Event.ENTER_FRAME,mueve); //mueve bola azul con mouse
      function mueve(e:Event)
      
      //funcion mueve
      {
         mimc1.x=mouseX;
         mimc1.y=mouseY;
      
      //funcion mueve
      }
         
      addEventListener(Event.ENTER_FRAME,colision);
      function colision(e:Event)
      
      //funcion colision
      {
        for (var a:int=0;a<enemyArray.length;a++)  
            //for
         {   
                  trace("Enemigo > "(enemyArray[a])) 
          //for
          }
      //funcion colision
       }
      
      
//contructor         
}
//clase
}
//package
}
   

Por Gus__

3 de clabLevel



 

firefox
Citar            
MensajeEscrito el 01 Jun 2011 08:51 pm
Ok, entonces tu error es de concepto. No puedes declarar los métodos dentro del constructor, tienes que hacer una tarea X en el constructor, generalmente inicialización, y luego ejecutar otros métodos, refactoriza un poco la clase

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.