Comunidad de diseño web y desarrollo en internet online

Mostrar y ocultar MovieClips en as3

Citar            
MensajeEscrito el 21 Ago 2011 04:41 pm
Tengo unas dudas sobre el mostrar y ocultar una serie de Movieclips.
Tengo una variable boolean dentro de una función que al pulsar un botón me lleva a un fotograma determinado con varios clips de pelicula con visual=true. Pongo esta variable tipo boolean para que luego en el fotograma al que ve dirijo me indique si boton 1 esta pulsado(boton1==true) entonces me ponga en true cierto moviclip y el resto se mandenga en false. Muchas gracias

Aquí dejo el codigo que he creado:
En el fotograma que se encuntran los botones tengo el siguiente código:

Código ActionScript :

btn_zonaSur.addEventListener(MouseEvent.CLICK,pulsado);
function pulsado(e:MouseEvent):void{
   gotoAndPlay(225);   
   var pulsadobtn:Boolean=true;   
}
btn_Madri.addEventListener(MouseEvent.CLICK,pulsar);
function pulsar(e:MouseEvent):void{
   gotoAndPlay(322);
   var pulsadobtn=true;   
}
stop();


Aqui tengo el fotograma donde se encuentran los movieclips:

Código ActionScript :

if (pulsadobtn==true) {
      anim_sur.visible=true;
      
}else{
      anim_sur.visible=false;
      
   };



y me saltan los siguientes errores:

Código HTML :

Escena 1, Capa 'Capa 20', Fotograma 225, Línea 6   1120: Acceso a una propiedad pulsadobtn no definida.
Escena 1, Capa 'Capa 20', Fotograma 225, Línea 3   1120: Acceso a una propiedad pulsadobtn no definida.
Escena 1, Capa 'Capa 20', Fotograma 225, Línea 1   1120: Acceso a una propiedad pulsadobtn no definida.

Por igonfil

8 de clabLevel



 

firefox
Citar            
MensajeEscrito el 21 Ago 2011 11:05 pm
Ese error es porque has definido la variable pulsadobtn dentro de una función y, por tanto, es una variable local a la función. Prueba con esto:

Código ActionScript :

var pulsadobtn:Boolean=false;
btn_zonaSur.addEventListener(MouseEvent.CLICK,pulsado); 
function pulsado(e:MouseEvent):void{ 
   gotoAndPlay(225);    
   pulsadobtn=true;    
} 
btn_Madri.addEventListener(MouseEvent.CLICK,pulsar); 
function pulsar(e:MouseEvent):void{ 
   gotoAndPlay(322); 
   pulsadobtn=true;    
} 
stop();


Debería funcionar, De todos modos, sería más eficiente si reutilizases la misma función para los 2 clicks. Algo así:

Código ActionScript :

var pulsadobtn:Boolean=false;
btn_zonaSur.addEventListener(MouseEvent.CLICK,pulsado);
btn_Madri.addEventListener(MouseEvent.CLICK,pulsar);

function pulsado(e:MouseEvent):void{
    if(e.currentTarget == btn_zonaSur){
        gotoAndPlay(225);
        pulsadobtn=true;
    }else if(e.currentTarget == btn_Madri){
        gotoAndPlay(322);
        pulsadobtn=true;
    }
}

stop();


La propiedad currentTarget de los MouseEvent indica cuál ha sido el clip sobre el cual se ha realizado el click.

Por nestorrente

1010 de clabLevel

10 tutoriales

 

Vigo

firefox
Citar            
MensajeEscrito el 22 Ago 2011 04:45 pm
Ok, Muchas gracias ante todo. Esto ya me funciona correctamente pero ahora me ha surgido otro problema, el cual es: He creado otro fotograma al lado de este donde tengo los moviclips a mostrar que en cuanto pasa por ese fotograma me tiene que hacer la siguiente operación.
ah en lugar de ser una variable boolean la he creado string y dentro de la función he puesto lo que corresponde, pero lo que sucede que cuando pulso el botón y va al fotograma correspondiente esta variable me va como null (como si no pasase nada) por lo cual siempre muestra todo ¿Cómo soluciono esto?

Código ActionScript :

if (pulsadobtn=="ZonaSur") {
      anim_sur.visible=true;
      anim_madrid.visible=false;
      trace(pulsadobtn);
}else if(pulsadobtn=="Madrid") {
      anim_sur.visible=false;      
      anim_madrid.visible=false;
      animmadrid.visible=false;
      trace(pulsadobtn);
   };

Código ActionScript :

btn_zonaSur.addEventListener(MouseEvent.CLICK ,pulsado);
btn_Madri.addEventListener(MouseEvent.CLICK, pulsado);
function pulsado(e:MouseEvent):void{
   if(e.currentTarget == btn_zonaSur){
      gotoAndStop(225); 
      pulsadobtn="ZonaSur";
      trace(pulsadobtn);
}else if(e.currentTarget == btn_Madri){
   gotoAndPlay(322);
   pulsadobtn="Madrid";
   trace(pulsadobtn);
   }
   } 
stop();

Por igonfil

8 de clabLevel



 

firefox
Citar            
MensajeEscrito el 22 Ago 2011 10:09 pm
¿En qué lugar declaras la variable pulsadobtn? Porque la verdad es que no veo dónde puede estar el error :?

Por nestorrente

1010 de clabLevel

10 tutoriales

 

Vigo

firefox
Citar            
MensajeEscrito el 23 Ago 2011 06:09 am
Lo declaro en otro movieclick justo en el anterior de donde va el código

Código ActionScript :

if (pulsadobtn=="ZonaSur") {
      anim_sur.visible=true;
      anim_madrid.visible=false;
      trace(pulsadobtn);
}else if(pulsadobtn=="Madrid") {
      anim_sur.visible=false;      
      anim_madrid.visible=false;
      animmadrid.visible=false;
      trace(pulsadobtn);
   };

Por igonfil

8 de clabLevel



 

msie8
Citar            
MensajeEscrito el 23 Ago 2011 12:56 pm
En otro MovieClip o en otro frame?

Si es en otro frame es posible que, cuando vuelve a pasar por ese frame, se ponga a null (aunque no lo sé a ciencia cierta). Prueba a hacer un trace(...) justo antes de ese fotograma, a ver qué sale :?

Por nestorrente

1010 de clabLevel

10 tutoriales

 

Vigo

firefox
Citar            
MensajeEscrito el 23 Ago 2011 03:39 pm
Nada al puse el trace en el botón y en el frame en el que se encuentra el resto del codigo
en el botón al hacer click devuelve correctamente el valor (si pulso el boton btn_Madri me devuelve Madrid) pero luego al pasar por el otro frame me devuelve null. No entiendo el motivo de esto :(

Por igonfil

8 de clabLevel



 

msie
Citar            
MensajeEscrito el 23 Ago 2011 03:49 pm
No entiendo nada, he colocado la condición en otro frame y ahora si que funciona. Antes me gustaba algo mas action script pero esta version as3 con tanta modificación que han realizado no me gusta nada no se si sera cosa mia :( . Muchas gracias ^^

Por igonfil

8 de clabLevel



 

msie

 

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