Comunidad de diseño web y desarrollo en internet online

Event.ENTER_FRAME - Error #1009

Citar            
MensajeEscrito el 13 Nov 2011 09:52 pm
Hola,

tengo un problema, que espero explicar bien para que me ayudéis.

En una programación con AS3, en el frame 35 tengo una pelota que atraviesa el stage.

El código de ese frame es:

Código ActionScript :

addEventListener(Event.ENTER_FRAME, pelotaP3Move);

function pelotaP3Move(e:Event):void {
   p3_pelota.x +=5;
}


En esa pantalla hay un botón para pasar a la pantalla siguiente que está en el frame 36

En la pantalla del frame 36, el stage lo atraviesa un rectángulo, con este código:

Código ActionScript :

addEventListener(Event.ENTER_FRAME, p4CuadradoMove);

function p4CuadradoMove(e:Event):void {
   if (p4_cuadrado.x < stage.stageWidth) {
      p4_cuadrado.x += 9;
   } else {
      p4_cuadrado.x = 0;
   }}


Cuando pruebo la película con ctrl+Enter...

Cuando doy al botón para pasar de la pantalla del frame 35 a la pantalla del frame 36...

Sale el mensaje de error:

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

Sin embargo si exporto la peli a swf, todo parece funcionar.

---

Me gustaría saber qué signifoca ese mensaje de error cuando pruebo la peli con ctrl+Enter

Y si he de solucionar algo antes de exportar la peli en swf

Gracias por responder

Un saludo

Por PitMatson

8 de clabLevel



 

firefox
Citar            
MensajeEscrito el 14 Nov 2011 06:19 am
Ese error te dice que no encuentra al objeto que estas llamando.

El enterFrame repite las acciones de la función según tu velocidad de FPS, (si es de 12fps, entonces realiza las acciones 12 veces en 1 segundo).

Cuando pasas a otro frame (del 35 al 36), sigue repitiendo ese código, por lo que marca un error ya que en el 36 no se encuentra "p3_pelota"

Para borrar/quitar un evento usa removeEventListener

Código ActionScript :

removeEventListener(Event.ENTER_FRAME, pelotaP3Move);
addEventListener(Event.ENTER_FRAME, p4CuadradoMove);


Lo mejor es asignarle el evento a un objeto para tener control sobre éste.

Código ActionScript :

stage.addEventListener(Event.ENTER_FRAME, p4CuadradoMove);

Por nasho

Claber

908 de clabLevel

1 tutorial

Genero:Masculino  

Web Developer

chrome
Citar            
MensajeEscrito el 14 Nov 2011 11:25 am
Gracias nasho,

ahora estoy en el trabajo y no puedo mirarlo.

Esta noche cuando llegue lo probaré a ver si funciona.

Muchas gracias

Un nsaludo

Por PitMatson

8 de clabLevel



 

msie7
Citar            
MensajeEscrito el 14 Nov 2011 10:56 pm
Nasho,

he probado la solución, y, efectivamente, ya no da el error una y otra vez.

Ahora sólo lo da una vez, y se detiene, supongo porque hace efecto el removeEventListener

Gracias

:)

Por PitMatson

8 de clabLevel



 

firefox

 

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