Comunidad de diseño web y desarrollo en internet online

Problema con el error 1009 con un botón y una acción gotoAndStop.

Citar            
MensajeEscrito el 22 May 2012 05:21 pm
Buenas tardes comunidad cristalab, en primer lugar les quiero dar las gracias pues gracias a los post de muchos usuarios y a las respuestas de muchos otros he podido aprender un poco más cada día, sin embargo en ésta ocasión aunque he encontrado varias respuestas relacionadas con mi problema ninguna solución ha funcionado :( , ahora, a explicar que sucede:

Debo realizar un juego en flash, y en una zona de éste hay un salón con forma de octágono, y el jugador podrá moverse entre cada una de las paredes con las típicas flechas de navegación, así que la flecha siguiente en la pared 1 llevará a la 2, de la 2 a la 3, y así sucesivamente, hasta la 8, donde la flecha siguiente debe llevar de regreso a la 1, lo mismo pasa con la flecha anterior, de la 8 debe pasar a la 7, de la 7 a la 6 y luego de las demás, de la 1 debe volver a la 8 para así completar un circuito cerado.

No tengo ningún problema con aquellas flechas que llevan a un lugar que es consecutivo al que me encuentro.

Debo aclarar que cada pared se encuentra en un fotograma diferente, las flechas de navegación se ubican en otra capa por encima de éstas, y luego hay una capa de acciones, la cual me ejecuta una función que está en un archivo .as.

el código que se encuentra en cada uno de los fotogramas de el .fla es el siguiente:

Código ActionScript :

stop();
activarbotonesnavegacion();



Y luego el código completo del .as es el siguiente:

Código ActionScript :

package  {
   import flash.display.*
   import flash.display.MovieClip; // importa el movie clip de flash
   import flash.events.MouseEvent; // importa los eventos mouseEvent desde el flash
   import flash.display.SimpleButton; // evita algunos errores con botones simples
   import flash.utils.Timer; // importa el timer
   import flash.events.TimerEvent; // importa los eventos del timer
   import flash.system.fscommand; // importa eventos de comandos sencillos
   
   public class juego extends MovieClip {
      
      
      
      public function activarbotonesnavegacion():void{
         flechahallfinal.addEventListener("click",hallfinal);
         flechahallsiguiente.addEventListener("click",hallsiguiente);
         flechahallinicio.addEventListener("click",hallinicio);
         
         }
      
      public function hallfinal(event:MouseEvent):void{
      gotoAndStop(8,"Hall");      
   }
   
   public function hallsiguiente(event:MouseEvent):void{
      nextFrame();      
   }
   
   public function hallinicio(event:MouseEvent):void{
      gotoAndStop(1,"Hall");      
   }
   

   
   //Menu Principal
   
   //Activar botones
   
   public function activarbotonesmenu():void{
      botoniniciar.addEventListener("click",iniciar);
      botonayuda.addEventListener("click",ayuda);
      botoncreditos.addEventListener ("click",creditos);
      botonsalir.addEventListener ("click",salir);
   }
   
   //funciones de botones
   
   public function iniciar(event:MouseEvent):void{
      gotoAndStop(1,"Hall");
      import flash.media.SoundMixer;
      SoundMixer.stopAll();
   }
   
      public function ayuda(event:MouseEvent):void{
      gotoAndStop(2);
      import flash.media.SoundMixer;
      SoundMixer.stopAll();
   }
   
      public function creditos(event:MouseEvent):void{
      gotoAndStop(3);
      import flash.media.SoundMixer;
      SoundMixer.stopAll();
   }
   
      public function salir(event:MouseEvent):void{
      import flash.media.SoundMixer;
      SoundMixer.stopAll();
      fscommand("quit");
   }

      

   }
   
}



Casi todo el código funciona bien, aunque da errores como los siguientes:

TypeError: Error #1009: No se puede acceder a una propiedad o a un método de una referencia a un objeto nulo.
at juego/activarbotonesnavegacion()[C:\Users\Jorge\Desktop\Juego casa del terror\Casa del Terror\Flash\Flash\FLA\juego.as:15]
at juego/frame11()[juego::frame11:2]
at flash.display::MovieClip/gotoAndStop()
at juego/hallfinal()[C:\Users\Jorge\Desktop\Juego casa del terror\Casa del Terror\Flash\Flash\FLA\juego.as:22]



Sin embargo, la sección de flechahallinicio, y de la función hallinicio no dan error y no activa la función que me debe volver desde el fotograma 8 al 1. :(

Lo he intentado todo, desde reescribir todo el código, a revisar cada una de las instancias, revisar mayúsculas y minúsculas, copiar el mismo botón con la misma instancia en el fotograma uno con un alfa en 0%, pero sencillamente nada funciona...

Agradecería mucho la ayuda de ustedes,

muchas gracias

jorge77401

Por jorge77401

1 de clabLevel



 

chrome
Citar            
MensajeEscrito el 22 May 2012 06:38 pm
as3?

el listener se pone

Código ActionScript :

obj.addEventListener(MouseEvent.CLICK, funcion);


otra cosa... importa la clase soundMixer 1 sola vez hasta arriba igual que las demás

*según dice el error, importas el .as antes de crear los botones.

Por nasho

Claber

908 de clabLevel

1 tutorial

Genero:Masculino  

Web Developer

chrome
Citar            
MensajeEscrito el 22 May 2012 06:46 pm
Hola nacho muchas gracias por tus consejos sobre importar la clase de soundmixer una sóla vez y de decirme como se poner el listener correctamente, ya corregí eso.


En cuanto a lo de importar el .as antes de crear los botones, la verdad no entendí muy bien esa parte...

no sé si te refieras a ésto, pero los botones ya están en su lugar correspondiente, en el fotograma 8 hay un botón llamado "flechahallinicio", el cual según la función "hallinicio" me debe llevar al fotograma 1 de la escena hall...

los demás botones funcionan a la perfcción, pero éste en específico no.

Me estoy volviendo loco por ese error

Por jorge77401

1 de clabLevel



 

chrome
Citar            
MensajeEscrito el 23 May 2012 05:20 pm
El botón "flechahallinicio" lo tienes en el frame 8... si en el frame 1 le pones listeners a este botón que hace el programa?

Da error porque no encuentra a ese botón... aun no esta creado o insertado en escena

Una de 2...

Pones el botón desde el principio, lo escondes de algún modo para que no sea visible pero que esté presente.

O le agregas su listener hasta el frame 8 donde existe.

Por nasho

Claber

908 de clabLevel

1 tutorial

Genero:Masculino  

Web Developer

chrome
Citar            
MensajeEscrito el 24 May 2012 07:21 am
Excelente!, no sabes como te agradezco, muchisimas gracias!

Por jorge77401

1 de clabLevel



 

chrome

 

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