Comunidad de diseño web y desarrollo en internet online

Problema con as3.0

Citar            
MensajeEscrito el 28 Dic 2011 07:46 pm
Hola!

No tengo mucha experiencia en flash y al hacer un trabajillo para la uni me ha surgido una duda.

Tengo en el stage una fotografía dividida en partes. Cada una de las partes es un clip de película y lo que quiero conseguir es que cada vez que haga clic sobre un clip este se vuelva negro. (pudiendo tener varios clips negros).

Esto no sería problema si tuviera unos pocos clips pero el caso es que tengo bastantes y me parece absurdo repetir el mismo código para cada uno. Cargar un clip en negro donde está el clip que se ha pulsado.

Por eso he pensado en que al pulsar cualquier clip se ejecute la misma función. El problema lo tengo en que no se cómo indicar cuál es la posición del clip que he pulsado.

Dejo un código de ejemplo por si no queda clara la pregunta:

Código ActionScript :

clip1.addEventListener(MouseEvent.CLICK,cambiar);
clip2.addEventListener(MouseEvent.CLICK,cambiar);

function cambiar(event:MouseEvent){

   var negro:Negro=new Negro();
   negro.x = ?
   negro.y = ?
   addChild(negro);   
}

También me gustaría saber cómo hacer que al volver a hacer clic sobre el clip en negro me apareciera de nuevo el clip del principio...

Para esto último estoy pensando en poner un nuevo fotograma clave dentro del clip. El fotograma 1 ser el original y el 2 el negro.. pero debido a mi poca experiencia con as3.0 creo que esto me resultaría aún más difícil.

¿Alguna sugerencia?

Gracias de antemano.

Por aran89

21 de clabLevel



 

chrome
Citar            
MensajeEscrito el 29 Dic 2011 03:39 am
Hola, con el siguiente codigo te deberia ir a la perfeccion. Primero hace falta que cada parte sea un movieclip y que todas las partes esten en un mismo movieclip llamado contenedorPartes.

Código ActionScript :

import flash.geom.ColorTransform;
import flash.events.MouseEvent;
import flash.display.MovieClip;

contenedorPartes.addEventListener(MouseEvent.CLICK, handlerClick);

function handlerClick(e:MouseEvent):void
{
   var parte:MovieClip = MovieClip(e.target);
   var colortransform:ColorTransform = new ColorTransform();
   
   if (!parte.pintado)
   {
      colortransform.color = 0x000000;
      parte.pintado = true;
   } else
   {
      parte.pintado = false;
   }
   parte.transform.colorTransform = colortransform; 

}





Saludos


eXe

Por exekiel21

Claber

164 de clabLevel



Genero:Masculino  

programador

firefox
Citar            
MensajeEscrito el 29 Dic 2011 10:29 am
Hola, creo que esta otra solución te puede dejar mas conforme, ya que lo que quieres es saber las posiciones del original al que se le hizo clic

Código ActionScript :

clip1.addEventListener(MouseEvent.CLICK,cambiar);
clip2.addEventListener(MouseEvent.CLICK,cambiar);

function cambiar(event:MouseEvent){
        var target:DisplayObject= event.currentTarget as DisplayObject
   var negro:Negro=new Negro();
   negro.x = target.x
   negro.y = target.y
   addChild(negro);
        negro.addEventListener(MouseEvent.CLICK,eliminar);   
}
function eliminar(event:MouseEvent){
        var negro:Negro= event.currentTarget as Negro
        negro.removeEventListener(MouseEvent.CLICK,eliminar);   
        negro.parent.removeChild(negro)
}


DisplayObject es la clase mas pequeña de las clases visibles que tienen x e y, pero no creo que tengas problemas si la cambias por sprite o movieclip dependiendo de que esten hechas tus clip.

Por Lord Zorel

17 de clabLevel



 

Chile

firefox
Citar            
MensajeEscrito el 29 Dic 2011 11:36 pm
Muchísimas gracias!!! era la segunda respuesta lo que realmente quería. Es genial como ayudáis a la gente a aprender y progresar.
Un saludo. :wink:

Por aran89

21 de clabLevel



 

chrome

 

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