Comunidad de diseño web y desarrollo en internet online

error 1009

Citar            
MensajeEscrito el 27 May 2012 11:58 pm
Hola gente, soy nuevo en esta pagina pero creo que aqui me pueden ayudar con este problema.
lo que pasa es que estoy haciendo un juego que, cuando le pegan a un circulo azul(jugador)(frame 4), los enemigos(circulos rojos), vaya al frame # 6, pero a la hora de hacer eso me sale el error.
Este es mi codigo:

Código :


var ax:Number = 1;
var ay:Number = 1;
var vy:Number = 11;
var vx:Number = 11;
var radio:Number = a.height / 2;


stage.addEventListener(Event.ENTER_FRAME, Entrar_en_frame);

a1.visible = false;
a2.visible = false;
function Entrar_en_frame(e: Event):void
{
   vy = vy;
   vx = vx;
   a.x = a.x + vx;
   a.y = a.y + vy;
   if (a.y - radio > marco.height)
   {
      a.y = marco.height - radio;
      vy =  -  vy;

   }
   else if (a.y-radio<0)
   {
      a.y = radio;
      vy =  -  vy;

   }

   if (a.x + radio > marco.width)
   {
      a.x = marco.width - radio;
      vx =  -  vx;
   }
   else if (a.x-radio<0)
   {
      a.x = radio;
      vx =  -  vx;
   }
}
import flash.events.Event;

var aX:Number;
var aY:Number;
var bX:Number;
var bY:Number;
var distancia:Number;
var radioUno:Number = a.width / 2;
var radioDos:Number = b.width / 2;
var radios:Number = radioUno + radioDos;
stage.addEventListener(Event.ENTER_FRAME, funCalcula);

function funCalcula(e:Event):void
{
   aX = a.x;
   aY = a.y;
   bX = b.x;
   bY = b.y;
   distancia = (((bX - aX) * (bX - aX)) + ((bY - aY) * (bY - aY)));
   distancia = Math.sqrt(distancia);
   if (distancia<radios)
   {
      gotoAndPlay(6);
         }
}


var z1:Number = 7;

var fl_CountDownTimerInstance_2:Timer = new Timer(1000,z1);
fl_CountDownTimerInstance_2.addEventListener(TimerEvent.TIMER,fl_CountDownTimerHandler_2);
fl_CountDownTimerInstance_2.start();

function fl_CountDownTimerHandler_2(event:TimerEvent):void
{
   z1--;
   if (z1 == 0)
   {
      a1.x = marco.width / 3;
      a1.y = marco.height / 3;
      a1.visible = true;

   }
}
if (a1.visible = true)
{

   
   var a1x:Number = 1;
   var a1y:Number = 1;
   var vy1:Number = 11;
   var vx1:Number = 11;
   var radio1:Number = a1.height / 2;

   stage.addEventListener(Event.ENTER_FRAME, Entrar_en_frame1);
   

   function Entrar_en_frame1(e: Event):void
   {
      vy1 = vy1;
      vx1 = vx1;
      a1.x = a1.x + vx1;
      a1.y = a1.y + vy1;
      if (a1.y - radio1 > marco.height)
      {
         a1.y = marco.height - radio1;
         vy1 =  -  vy1;

      }
      else if (a1.y-radio1<0)
      {
         a1.y = radio1;
         vy1 =  -  vy1;

      }

      if (a1.x + radio1 > marco.width)
      {
         a1.x = marco.width - radio1;
         vx1 =  -  vx1;
      }
      else if (a1.x-radio1<0)
      {
         a1.x = radio1;
         vx1 =  -  vx1;
      }
   }
   import flash.events.Event;

   var aX1:Number;
   var aY1:Number;
   var bX1:Number;
   var bY1:Number;
   var distancia1:Number;
   var radioUno1:Number = a1.width / 2;
   var radioDos1:Number = b.width / 2;
   var radios1:Number = radioUno1 + radioDos1;
   stage.addEventListener(Event.ENTER_FRAME, funCalcula1);

   function funCalcula1(e:Event):void
   {
      aX1 = a1.x;
      aY1 = a1.y;
      bX1 = b.x;
      bY1 = b.y;
      distancia1 = (((bX1 - aX1) * (bX1 - aX1)) + ((bY1 - aY1) * (bY1 - aY1)));
      distancia1 = Math.sqrt(distancia1);
      if (distancia1<radios1)
      {
         gotoAndPlay(6);
      }
   }
}
var z2:Number = 16;

var fl_CountDownTimerInstance_1:Timer = new Timer(1000,z2);
fl_CountDownTimerInstance_1.addEventListener(TimerEvent.TIMER,fl_CountDownTimerHandler_1);
fl_CountDownTimerInstance_1.start();

function fl_CountDownTimerHandler_1(event:TimerEvent):void
{
   z2--;
   if (z2 == 0)
   {
      a2.x = marco.width / 3;
      a2.y = marco.height / 3;
      a2.visible = true;
   }
}


donde la instancia b es el jugador, mientras que a y a1 son enemigos.
ayúdenme por favor, e visto que la web es muy buena y también los usuarios.

Por vsnivy

27 de clabLevel



 

Estudiante Programador

chrome
Citar            
MensajeEscrito el 28 May 2012 12:43 pm
Pon el texto completo del error

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 28 May 2012 04:50 pm
mira jorge, me ahorre las funciones inecesarias que habia en cada simbolo, porque el objeto "a" tenia 2 enter frame asi como el "a1" y el "b", solo les quite el enterframe de funcion "funcalcula", y les arege "stage.removeEventListener(Event.ENTER_FRAME, Entrar_en_frame);" cuando el circulo rojo le pega al azul y me sale el siguiente error :
TypeError: Error #1009: No se puede acceder a una propiedad o a un método de una referencia a un objeto nulo.
at Juegodelcirculosobreviviente_fla::MainTimeline/Entrar_en_frame1()[Juegodelcirculosobreviviente_fla.MainTimeline::frame5:107]

Por vsnivy

27 de clabLevel



 

Estudiante Programador

chrome
Citar            
MensajeEscrito el 28 May 2012 07:57 pm
Ok, ese error quiere decir algo como "algo no está definido", es decir no ayuda demasiado. Si sabes que está en la función Entrar_en_frame1 ... puedes ir comentando todas las líneas de la función e ir descomentando de a una hasta que salga el error, así lo aislas

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 28 May 2012 10:38 pm
¿osea que debere ir checando linea por linea aver cual es el error?
antes de pedir ayuda aqui, cheque el codigo con el depurador y me marca el error en
a1.x=a1.x+vx1;
no se si de algo sirva este detalle...
saludos y grasias :)

Por vsnivy

27 de clabLevel



 

Estudiante Programador

chrome
Citar            
MensajeEscrito el 28 May 2012 10:46 pm
¿O sea que si comentas esa línea el error desaparece?

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 28 May 2012 11:17 pm
como que si comento... no entiendo(soy novato todavia)

Por vsnivy

27 de clabLevel



 

Estudiante Programador

chrome
Citar            
MensajeEscrito el 28 May 2012 11:29 pm
Comentar es hacer que una línea de código no se ejecute, y se puede usar doble barra o barra y asterisco, así

//a1.x=a1.x+vx1;

o

/* a1.x=a1.x+vx1; */

En ambos casos la línea está comentada, ya no se ejecuta y si la causante está en esa línea, el error debería dejar de salir

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 28 May 2012 11:42 pm
a ok ya entendi... pues mira, lo converti en comentario, pero me salio otro error, esta vez con el eje y,entonces hize lo mismo con el eje y, pero me aparecio otro error en los if, comente los if y me sale error ahora en una variable... no se si todo el codigo sea el problema :S.
el ultimo error que me genero fue este
TypeError: Error #1009: No se puede acceder a una propiedad o a un método de una referencia a un objeto nulo.
at Juegodelcirculosobreviviente_fla::MainTimeline/Entrar_en_frame2()[Juegodelcirculosobreviviente_fla.MainTimeline::frame5:223]

Por vsnivy

27 de clabLevel



 

Estudiante Programador

chrome
Citar            
MensajeEscrito el 28 May 2012 11:47 pm
No se trata de generar nuevos errores, sino de identificar los existentes. Si la línea de antes te generaba un error que cambio al comentarla

a1.x=a1.x+vx1;

Puede que a1 no exista, o quizás vx ... mira si ambos objetos, variables o MovieClips (no se lo que son) están definidas.

Jorge

Tip: si copypasteaste extensos trozos de código, lo primero es tratar de entenderlo, si lo has escrito entonces no será tan complicado

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 28 May 2012 11:55 pm
lo que pasa es que si esta delarado pero a1 es una instancia de un objeto tipo movie clip, es por eso que me refiero a el como a1.x para decirle que en esa posicion(x) sea igualada a vx para que este rebotando aleatoriamente, el unico codigo inservible es "vx=vx" y "vy=vy". no se si el objeto, aun teniendo instancia se deba declarar, porque el unico codigo que tengo es este:

Código :

var a1x:Number = 1;//Para calcular la posicion en que se encuentra a1 en la posicion x para detectar si colisionan
var a1y:Number = 1;//Para calcular la posicion en que se encuentra a1 en la posicion y para detectar si colisionan
var vy1:Number = 11;//velocidad y
var vx1:Number = 11;// velocidad x
var radio1:Number = a1.height / 2;


ademas que lo malo de mi codigo es que no uso clases, y todo esta mas desordenado, debido a que no se como hacer las clases..

Por vsnivy

27 de clabLevel



 

Estudiante Programador

chrome
Citar            
MensajeEscrito el 29 May 2012 12:57 pm
Entonces quizás no sea esa línea. Para comprobarlo traza los valores

trace("a1 es "+a1)
trace("vx1 es "+vx1;

Si traza los dos correctamente, entonces el error no es en la linea que indicaste

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 29 May 2012 03:44 pm
creo haber resuelto el problema Jorge, puse una funcion en la condicion de "if (distancia<radios)", una funcion exit_frame como la siguiente:

Código :

stage.addEventListener(Event.EXIT_FRAME, SalirDeFrame);
      function SalirDeFrame(e:Event):void
      {

         stage.removeEventListener(Event.ENTER_FRAME, Entrar_en_frame);
         stage.removeEventListener(Event.ENTER_FRAME, Entrar_en_frame1);
         stage.removeEventListener(Event.ENTER_FRAME, Entrar_en_frame2);
         fl_CountDownTimerInstance_1.removeEventListener(TimerEvent.TIMER,fl_CountDownTimerHandler_1);
         fl_CountDownTimerInstance_2.removeEventListener(TimerEvent.TIMER,fl_CountDownTimerHandler_2);
         fl_CountDownTimerInstance_4.removeEventListener(TimerEvent.TIMER,fl_CountDownTimerHandler_4);
      }

Ahora no sale ningun problema... pero las acciones cuando entran al frame ya no se hacen, me podrias decir como le hago con este codigo o si seria mejor encontrar el problema que tenia cuando no existia la funcion EXIT_FRAME, borrandolo y siguiendo depurandolo.
grasias y Saludos :)

Por vsnivy

27 de clabLevel



 

Estudiante Programador

chrome
Citar            
MensajeEscrito el 29 May 2012 03:55 pm
No se cual es el contexto, que quieres hacer, etc. Apuntaste un error y miramos una linea. Es como preguntar "hay una gasolinera en la ruta" y luego preguntar si estas en el mejor camino

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 29 May 2012 04:09 pm
a bueno... entonces me gustaria continuar con el de el EXIT_FRAME, considero que es mas sencillo trabajar ya sin errores, pero no se si este mal declarado eso.
No se si en el mismo tema pueda seguir esto, puesto que ya no me sale el error 1009.:S

Por vsnivy

27 de clabLevel



 

Estudiante Programador

chrome
Citar            
MensajeEscrito el 29 May 2012 10:47 pm
Jorge... creo que no podre con el codigo de EXIT_FRAME, solo toma en cuenta a un objeto, siendo que deben ser 3 (por el momento), creo que quisa debere iniciar todo desde 0 o checar el error 1009, pero no se que hacer, soy novato ... no se si tu me puedas decir que hacer, quiero hacer ese juego realmente

Por vsnivy

27 de clabLevel



 

Estudiante Programador

chrome

 

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