Comunidad de diseño web y desarrollo en internet online

Timer

Citar            
MensajeEscrito el 27 Feb 2009 06:13 pm
Hola a todos.
Estoy empezando con el AS3 y me debe de fallar algo en la lógica pues no consigo sacar algo que debe ser una tontería.

Tengo un Bitmap que es cuadrado rojo(rojoBM) dentro de un movieClip(rojoMC) y le pongo un Bitmap encima(rojoIluBM), de un rojo mas claro, para que parezca que se ha iluminado. Debe permanecer "iluminado" durante dos segundos y volver a su estado normal (rojoMC.removeChild(rojoIluBM).

Código :

var tiempoIlu:Timer = new Timer(1, 2000);
stage.addEventListener(MouseEvent.CLICK, maquina);

function maquina(e:MouseEvent){
        rojoMC.addChild(rojoIluBM); 
   tiempoIlu.addEventListener(TimerEvent.TIMER, rojoQuitaMaquina);
   tiempoIlu.start();
}

function rojoQuitaMaquina(e:TimerEvent){    
   rojoMC.removeChild(rojoIluBM); 
}

Según intento probar cosas me da distintos problemas: el DisplayObject tiene que se un objeto secundario del llamador, se ilumina y no se apaga, no se ilumina.

Creo que es un problema de que no se usar correctamente el Timer.

Muchas gracias a todos :wink:

Por xkrlozx

3 de clabLevel



 

firefox
Citar            
MensajeEscrito el 27 Feb 2009 07:12 pm
Hola xkrlozx, el error esta en como declaras el timer,en vez de poner:

Código ActionScript :

var tiempoIlu:Timer = new Timer(1, 2000);

Debes cambiar el orden asi:

Código ActionScript :

var tiempoIlu:Timer = new Timer(2000, 1);

porque ahi decias que contara cada 1 milesima de segundo, 2000 veces, es al reves, ahi deberia funcionar bien. :)

Por puga

44 de clabLevel



Genero:Masculino  

En un computador, muy muy lejano...

firefox
Citar            
MensajeEscrito el 27 Feb 2009 07:29 pm
Muchas gracias puga ya he corregido el fallo pero.... :oops:

Debo tener algún otro error con el orden de los Bitmaps, mc, etc.

Están del siguiente modo

movieClip < Sprite < Bitmap < BitmapData
rojoMC < rojoSp < rojoBM < rojoBMP
rojoMC < rojoIluSp < rojoIluBM < roloIluBMP


ArgumentError: Error #2025: El objeto DisplayObject proporcionado debe ser un elemento secundario del llamador.
at flash.display::DisplayObjectContainer/removeChild()
at AENCHANT_fla::MainTimeline/rojoQuitaMaquina()
at flash.utils::Timer/_timerDispatch()
at flash.utils::Timer/tick()

Puede ser que me este haciendo una paja mental con a quien estoy llamando pero en otro apartado en el que rojoMC hacia de botón y se iluminaba al MOUSE_DOWN y se apagaba al MOUSE_UP me funcionaban los addChild y removeChild estos :?

Alguna idea?

Gracias de nuevo

Por xkrlozx

3 de clabLevel



 

firefox
Citar            
MensajeEscrito el 27 Feb 2009 08:53 pm
Mmmm, tal vez las rutas sean el problema, prueba usando rutas absolutas.

Por puga

44 de clabLevel



Genero:Masculino  

En un computador, muy muy lejano...

firefox
Citar            
MensajeEscrito el 27 Feb 2009 08:59 pm
mande?

En html entiendo como hacerlo pero en AS3 aunque lo intuyo no lo tengo del todo claro

stage.rojoMC.addChild(rojoBM);

algo así?

Por xkrlozx

3 de clabLevel



 

firefox
Citar            
MensajeEscrito el 27 Feb 2009 09:07 pm
Para hacerlo facil en el panel acciones hay un circulo con unas lineas, como una mira, seleccionalo y en la ventana que se habre seleccionas el objeto y selecciona abajo absoluto, y ahi te creara la ruta.

Por puga

44 de clabLevel



Genero:Masculino  

En un computador, muy muy lejano...

firefox
Citar            
MensajeEscrito el 27 Feb 2009 09:45 pm
Las he puesto como deberían ser y tampoco.

Alguien tiene alguna idea más? el error tiene que residir o en las rutas o en que es la primera vez que intento hacer todo por código y meto las cosas mal y no tienen esas propiedades o algo así.

Gracias again

Por xkrlozx

3 de clabLevel



 

firefox
Citar            
MensajeEscrito el 27 Feb 2009 09:59 pm
como declaraste rojoIluBM, esta en la libreria, es creado 100% por as, no se.

Por puga

44 de clabLevel



Genero:Masculino  

En un computador, muy muy lejano...

firefox
Citar            
MensajeEscrito el 27 Feb 2009 10:09 pm
Ese error que tira es porque simplemente el objeto que quieres remover no esta dentro del que ejecuta el removeChild().
Revisa bien como tienes ordenados tus movieclips y tus bitmaps.

Puede ser xq esta ejecutando el removeChild() ya cuando el objeto ha sido removido.

Por Lunaty

Claber

118 de clabLevel



Genero:Femenino  

Flash Developer & RM Email Support for Google

firefox
Citar            
MensajeEscrito el 28 Feb 2009 01:48 pm
Me gustaría pode daros una explicación de como lo he arreglado pero simplemente esta mañana ya iba...
Lo que se que tuve que hacer después fue declarar un timer distinto para cada color de los que tenía.


Muchas gracias por todo :)
Os sigo leyendo

Por xkrlozx

3 de clabLevel



 

firefox

 

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