Foros del Web » Creando para Internet » Flash y Actionscript »

Mostrar un MovieClipo cuando se da click a un boton

Estas en el tema de Mostrar un MovieClipo cuando se da click a un boton en el foro de Flash y Actionscript en Foros del Web. Hola, si puedo hacer que se muestre el movie clip con el contenido que yo deseo, el problema es que cuando vuelvo a dar click ...
  #1 (permalink)  
Antiguo 17/12/2011, 14:25
 
Fecha de Ingreso: mayo-2003
Ubicación: Lima
Mensajes: 938
Antigüedad: 15 años, 6 meses
Puntos: 8
Mostrar un MovieClipo cuando se da click a un boton

Hola, si puedo hacer que se muestre el movie clip con el contenido que yo deseo, el problema es que cuando vuelvo a dar click en ese mismo boton se crea una nueva instancia del mismo movie clip con todo el contenido, lo que debería suceder es que al dar clik nuevamente en el mismo boton es que no suceda nada o que elimine la instancia que ya se creó y que vuelva a crearla.

De esta manera es como tengo el código, esta es la funcion cuando le doy click al boton:
Código AS3:
Ver original
  1. function accion(e:MouseEvent):void
  2. {
  3.     if ( mcContenidoContacto ) {
  4.         stage.removeChild(mcContenidoContacto);
  5.     }
  6.    
  7.     var mcContenidoContacto:MovieClip = new MovieClip();
  8.     var txtTitulo:TextField = new TextField();
  9.     var fmtTexto:TextFormat = new TextFormat();
  10.    
  11.     mcContenidoContacto.graphics.beginFill(0x000000, 0.9);
  12.     mcContenidoContacto.graphics.drawRoundRect(50, 30, 890, 450, 10, 10);
  13.     mcContenidoContacto.graphics.endFill();
  14.     stage.addChild(mcContenidoContacto);
  15.    
  16.     new Tween(mcContenidoContacto, "alpha", Strong.easeOut, 0, 1, 1, true);
  17.    
  18.     var Close:btnCerrar = new btnCerrar();
  19.     Close.x = 830;
  20.     Close.y = 45;
  21.     mcContenidoContacto.addChild(Close);
  22.    
  23.     Close.addEventListener(MouseEvent.CLICK, Cerrar);
  24.    
  25.     txtTitulo.x = 80;
  26.     txtTitulo.y = 60;
  27.     txtTitulo.width = 600;
  28.     txtTitulo.embedFonts = false;
  29.    
  30.     fmtTexto.color = 0xFFFFFF;
  31.     fmtTexto.size = 30;
  32.     txtTitulo.defaultTextFormat = fmtTexto;
  33.    
  34.     mcContenidoContacto.addChild(txtTitulo);
  35.    
  36.     txtTitulo.htmlText = "Contáctenos";
  37.    
  38.     var formulario:mcFormularioContacto = new mcFormularioContacto();
  39.     formulario.x = 80;
  40.     formulario.y = 120;
  41.     mcContenidoContacto.addChild(formulario);
  42.    
  43.     function Cerrar(e:MouseEvent):void
  44.     {
  45.         stage.removeChild(mcContenidoContacto);
  46.     }
  47. }

Espero que me puedan ayudar.
__________________
El aprendiz.
  #2 (permalink)  
Antiguo 17/12/2011, 20:06
Avatar de ocesitaro  
Fecha de Ingreso: diciembre-2011
Ubicación: Carabayllo
Mensajes: 274
Antigüedad: 6 años, 11 meses
Puntos: 36
Respuesta: Mostrar un MovieClipo cuando se da click a un boton

puedes usar singleton para tener una sola intancia de una objeto;
te mando un ejemplo:

creas una clase de tu instancia en este caso mi instacnia es circulo

package{
import flash.display.MovieClip

public class circulo extends MovieClip{
public var variableunica:String = "algo";



private static var instance:circulo;
private static var creatingSingleton:Boolean = false;
public function circulo() {
if( !creatingSingleton ) throw new Error( "una sola instancia" );
}
public static function getInstance():circulo {
if( !instance ){
creatingSingleton = true;
instance = new circulo();
creatingSingleton = false;
}
return instance;
}
}

}

y lo llamas
var unico:circulo = circulo.getInstance();
trace (unico.variableunica)
unico.variableunica="lo que quieras"

bueno tu lo acomodas a tus necesidades, y si tienes dudas, nunca dejes de investigar el patrón singleton te perimite solo crear una instancia de una clase, esto es muy varios lenguajes como es php para crear una cadena de conexion que es unica por ejemplo
  #3 (permalink)  
Antiguo 10/04/2012, 12:49
 
Fecha de Ingreso: abril-2004
Ubicación: Barcelona
Mensajes: 242
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: Mostrar un MovieClipo cuando se da click a un boton

Si pruebas a poner un else.. tipo..


Código:
function accion(e:MouseEvent):void
{
if ( mcContenidoContacto ) {
stage.removeChild(mcContenidoContacto);
} else {

var mcContenidoContacto:MovieClip = new MovieClip();
var txtTitulo:TextField = new TextField();
var fmtTexto:TextFormat = new TextFormat();

mcContenidoContacto.graphics.beginFill(0x000000, 0.9);
mcContenidoContacto.graphics.drawRoundRect(50, 30, 890, 450, 10, 10);
mcContenidoContacto.graphics.endFill();
stage.addChild(mcContenidoContacto);

new Tween(mcContenidoContacto, "alpha", Strong.easeOut, 0, 1, 1, true);

var Close:btnCerrar = new btnCerrar();
Close.x = 830;
Close.y = 45;
mcContenidoContacto.addChild(Close);

Close.addEventListener(MouseEvent.CLICK, Cerrar);

txtTitulo.x = 80;
txtTitulo.y = 60;
txtTitulo.width = 600;
txtTitulo.embedFonts = false;

fmtTexto.color = 0xFFFFFF;
fmtTexto.size = 30;
txtTitulo.defaultTextFormat = fmtTexto;

mcContenidoContacto.addChild(txtTitulo);

txtTitulo.htmlText = "Contáctenos";

var formulario:mcFormularioContacto = new mcFormularioContacto();
formulario.x = 80;
formulario.y = 120;
mcContenidoContacto.addChild(formulario);

}

function Cerrar(e:MouseEvent):void
{
stage.removeChild(mcContenidoContacto);
}
}
No lo he probado pero a simple vista.. podrías probar.. :)

Etiquetas: as3
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 10:30.