Comunidad de diseño web y desarrollo en internet online

NO entiendo nada

Citar            
MensajeEscrito el 18 Ago 2011 11:55 am
Buenas. Escribi un mal post, pero e seguido investigando que pasa, y cada vez es mas raro.

Tengo el documento flash Lucha, cuya classe principal es Lucha, pero quise crear un menu, pero nada iba, siempre el mismo error:

TypeError: Error #1009: No se puede acceder a una propiedad o a un método de una referencia a un objeto nulo.
at Lucha/DibujarObjetos()
at Lucha()

Me lie horas a saber que era. Y al final he encontrado algo muy raro.

En la biblioteca tengo un simbolo, un clip de pelicula (Menu), con la pantalla del menu, si no le digo que lo exporte para actionscript no da error, pero si le digo que exporte a una classe que se llama Menu (que esta casi vacia,lo normal mas que extienda a movieclip) me salta el error anterior. En la classe lucha, no hay ninguna referencia de ningun tipo a la classe Menu.

Por Phyronx

41 de clabLevel



 

chrome
Citar            
MensajeEscrito el 18 Ago 2011 11:59 am
Por cierto, cree otro archivo flash con otro nombre, pero copie los simbolos, haber si el archivo estaba jodido, pero me dice lo mismo, si borro el simbolo de menu tambien funciona...

Por Phyronx

41 de clabLevel



 

chrome
Citar            
MensajeEscrito el 18 Ago 2011 12:49 pm
Podrías postear el código de la función DibujarObjetos() de la clase Lucha?

Por nestorrente

1010 de clabLevel

10 tutoriales

 

Vigo

firefox
Citar            
MensajeEscrito el 18 Ago 2011 01:06 pm

Código ActionScript :

public function DibujarObjetos() {
         
         terrain_bmp.y=200;//The terrain shouldn't be at the top of the stage!
         stage.addChild(terrain_bmp);//We can make the terrain visible
         
         pj = new Pj();
         pj.x = 200;
         pj.y = 100;
         pj.width = 10;
         pj.height = 20;
         pj.stop();
         stage.addChild(pj);
         abujero.graphics.beginFill(0x000000);//Now we draw the hole. It doesn't matter the colour.
         abujero.graphics.drawCircle(0,0,30);
      }

Esta es la funcion, que la agrego en el contructor de Lucha. En el caso de que borre el contenido de DibujarObjetos(), o no lo agregue en el contructor, el error pasa a ser el mismo de antes menos esa funcion:


TypeError: Error #1009: No se puede acceder a una propiedad o a un método de una referencia a un objeto nulo.
at Lucha()


Ya probe de todo, hasta borre todo el codigo dejando la classe "virgen", o parte del codigo solo, todo lo probe, pero solo funciona al desvincular el simbolo Menu a la classe Menu.

Por Phyronx

41 de clabLevel



 

chrome
Citar            
MensajeEscrito el 18 Ago 2011 01:59 pm
Siendo algo tan extraño, me gustaría poder manipular los archivos yo mismo. De todos modos, entiendo que no quieras dejarnos los archivos... si quieres envíamelos a mí solo por privado, o sino ya buscaremos otra manera de ayudarte sin que me los pases.

La verdad es que cuando aparecen estos errores raros... son duros de pelar! xD

Por nestorrente

1010 de clabLevel

10 tutoriales

 

Vigo

firefox
Citar            
MensajeEscrito el 18 Ago 2011 03:43 pm
Ahora mismo te lo mando a tu email! ;)

Por Phyronx

41 de clabLevel



 

chrome
Citar            
MensajeEscrito el 18 Ago 2011 05:30 pm
Ya sé dónde está el problema :D el problema viene en el constructor de la clase Lucha. Éste utiliza el atributo stage, el cual es nulo (el atributo stage sólo tiene un valor en las instancias de DisplayObject que están en el escenario). Por tanto, deberías pasarle una instancia de Stage por argumento. Quiero decir:

Código ActionScript :

public function Lucha(stage:Stage) 
{
   // aquí el código que ya tienes puesto
}

De hecho, te recomendaría que guardases esa referencia a Stage en un atributo de la clase Lucha.

Después, no pongas la clase Lucha como clase base. En lugar de eso, escribe en el primer fotograma de tu animación:

Código ActionScript :

new Lucha(this.stage);

Así debería funcionar :)

Por nestorrente

1010 de clabLevel

10 tutoriales

 

Vigo

firefox
Citar            
MensajeEscrito el 18 Ago 2011 11:36 pm
Esto.. Como te dije soy novato ;)

Hice lo que me dijiste:

public function Lucha(stage:Stage)

Código ActionScript :

{ 
  //Codigo 
} 


y

Código ActionScript :

new Lucha(this.stage);
en el primer fotograma.

El error es el siguiente:

TypeError: Error #1009: No se puede acceder a una propiedad o a un método de una referencia a un objeto nulo.
at Lucha/DibujarObjetos()
at Lucha()
at Lucha_fla::MainTimeline/frame1()

No se si me decias que lo escribiera textualmente. Tampoco entiendo en que debe afectar esto, a que cree y extienda un nuevo simbolo a Main.

He probado de hacer lo que me decias, desde la classe "control", que es la classe del documento ahora, para desde ella ir creando lo que se ve. Aun asi, me da error.

Código ActionScript :

package 
{
   
   import flash.display.MovieClip;
      
      
   /**
    * ...
    * @author Phyron
    */
   public class Control extends Movieclip
   {
      public var lucha:Lucha;
      
      
      public function Control() 
      {
         
         lucha = new Lucha(this.stage)
         addChild (lucha);
         
         }
         
   
}}


El Error:

TypeError: Error #1009: No se puede acceder a una propiedad o a un método de una referencia a un objeto nulo.
at Lucha/DibujarObjetos()
at Lucha()
at Control()

Sumando funciones ;)
En un tutorial hace tiempo, vi un error que lo sucionaba extendiendo la classe del documento a otra, o alguan de las otras, no lo recuerdo, para que no hubiera un conficto. ¿Podria ser eso?

Gracias por echarme una mano nestorrente

Por Phyronx

41 de clabLevel



 

chrome
Citar            
MensajeEscrito el 20 Ago 2011 03:24 pm
El caso es que tienes como clase principal (en el documento .fla) la clase Lucha. Esta clase lucha accede a un atributo stage que es nulo, y ese es el problema. Por eso debes quitar esa clase como principal, y en lugar de eso crearla en el primer fotograma con el código que te dije:

Código ActionScript :

new Lucha(this.stage))

De esa manera, le pasas un stage válido a Lucha, y ya no da error.

Si sigue sin salirte, te vuelvo a enviar tus archivos, pero con el fallo corregido.

Por nestorrente

1010 de clabLevel

10 tutoriales

 

Vigo

firefox
Citar            
MensajeEscrito el 21 Ago 2011 01:51 am
Llamame tonto, pero no me sale... ;)

He puesto el
new Lucha(this.stage);
En el primer fotograma, y he quitado la classe principarl del .fla
Si en el contructor de la clase Lucha pongo el: public function Lucha(stage:Stage)
El error es el siguiente:

TypeError: Error #1009: No se puede acceder a una propiedad o a un método de una referencia a un objeto nulo.
at Lucha/DibujarObjetos()
at Lucha()
at Lucha_fla::MainTimeline/frame1()


Te suena? ;)

Si quito el stage:Stage, el error es:
Classes\Lucha.as:1: 1180: Llamada a un método addFrameScript posiblemente no definido.

No se si sera que son las 4 de la mañana, y acabo de cerrar mi bar... ;)

Por Phyronx

41 de clabLevel



 

chrome
Citar            
MensajeEscrito el 21 Ago 2011 02:09 am
Espera, creo que el problema es el hecho de llamar "stage" a la variable. Prueba con:

Código ActionScript :

public function Lucha(escenario:Stage) {

   DibujarObjetos();//This function draws the character, the terrain and the hole.

   escenario.addEventListener(Event.ENTER_FRAME,mover_pj);
   escenario.addEventListener(MouseEvent.MOUSE_UP,mouse_up);
   escenario.addEventListener(KeyboardEvent.KEY_DOWN,key_down);
   escenario.addEventListener(KeyboardEvent.KEY_UP,key_up);
}


Acabo de probarlo y así me funciona sin problemas (al menos con los archivos que tú me pasaste... puedo reenviártelos si quieres).

Por nestorrente

1010 de clabLevel

10 tutoriales

 

Vigo

firefox
Citar            
MensajeEscrito el 21 Ago 2011 02:32 pm
Sigo sin entender nada, no me funciona...
Cambie lo que me has dicho, en vez de escenario puse "Pantalla" por eso. El error fue el de siempre:

TypeError: Error #1009: No se puede acceder a una propiedad o a un método de una referencia a un objeto nulo.
at Lucha/DibujarObjetos()
at Lucha()
at Lucha_fla::MainTimeline/frame1()

Copiando y pegando lo que me dijiste tambien sigue igual, no fuese que la cagara en alguna letra o simbolo...

Todo igual,no? el new Level en el 1er fotograma, y sin ninguna classe de documento,no?

Si me lo pudieses enviar y aclararme de una vez en que la cago... Ya te informare de mi error ;)

Por Phyronx

41 de clabLevel



 

chrome
Citar            
MensajeEscrito el 21 Ago 2011 10:54 pm
Te lo envío, te lo envío. Lo curioso es que a mí nunca me da error en DibujarObjetos. Sólo me da error en Lucha(), por los addEventListener. De hecho, en el documento que me pasaste, DibujarObjetos no tiene código.

Igualmente, te lo envío arreglado por correo :)

Por nestorrente

1010 de clabLevel

10 tutoriales

 

Vigo

firefox

 

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