Comunidad de diseño web y desarrollo en internet online

cerrar un mc con un boton situado en el mismo

Citar            
MensajeEscrito el 04 Oct 2009 01:58 pm
Hola a todos.
Estoy creando un proyecy en flash en donde al presionar un boton se abre y coloca un segundo movieclip sobre el primero (una pantalla de información). este segundo clip tiene un boton para rerrarse el mismo.

Algo tan sumamente facil no consigo realizarlo

El movieclip que llamo "uno" lo agrego muy simplemente mediante:

[color=]this.abrir.addEventListener(MouseEvent.CLICK, ABRIRMC);

function ABRIRMC(event:MouseEvent):void

{
if (event.target == abrir)
{addChild(this.uno)
this.uno.x=1;
this.uno.y=1;
}
[/color]

Este movieclip "uno" tiene un boton que llamo cerrar que debería funcionar cerrandolo, pero cada vez que intento crear el código que lo haga me da un error.

Se que debería ser sencillisimo pero perece ser que soy demasiado torpe

Gracias por vuestro tiempo
sinbatm

Por sinbatm

10 de clabLevel



 

firefox
Citar            
MensajeEscrito el 04 Oct 2009 04:43 pm
hola, mi pregunta es la siguiente, por que ese this, bueno es que soy algo torpe también.
lo que te entiendo es que hay un clip digamos le "clip1" sera la instancia, al presionar clip1 aparecerá "clip2" dentro de clip1,
a su ves clip2 tiene otro clip digamos "clip3", si yo presiono clip3 se me cerrara clip2 o clip1 el que uno decida si es asi te puedo ayudar

Por tuxianof

48 de clabLevel



 

chrome
Citar            
MensajeEscrito el 04 Oct 2009 05:29 pm
vamos por parte.
el this que tienes en el boton no sirve para nada, con solo pasarle el nombre de instancia "abrir" sirve.
pero la verdad no entiendo la forma en q lo haces, por lo q te dare, algunas impresiones de como yo lo haria.
1-suponiendo que trabajas sobre la linea de tiempo
en el fotograma 1 colocas un boton con nombre de instancia "abrir"
y le cargas la siguiente funcion:

Código ActionScript :

abrir.addEventListener(MouseEvent.CLICK, ABRIRMC);

function ABRIRMC(event:MouseEvent):void
{
gotoAndStop(2);
cerrar.alpha=1;
}

donde en el fotograma 2 tienes tu nuevo mc y un boton de nombre instancia "cerrar" que lo haces visible
y encontes ahi el boton cerrar seria:

Código ActionScript :

cerrar.addEventListener(MouseEvent.CLICK, CerrarMC);

function CerrarMC(event:MouseEvent):void

{
gotoAndStop(1);
cerrar.alpha=0;
}

Esto por supuesto no es lo mas recomendado.
2-Otra cosa q puedes hacer es abrirlo, de forma remota
3-Pero viendo tu codigo, veo que creas el MC "uno" dinamicamente, por lo que haremos lo siguiente:
a- crea un boton de nombre de instancia abrir
y luego programas lo siguiente

Código ActionScript :


var cerrar:Button=new Button();
var uno:MovieClip=new MovieClip();
cerrar.x=100;
cerrar.y=100;

abrir.addEventListener(MouseEvent.CLICK, ABRIRMC);
function ABRIRMC(event:MouseEvent):void

{
/*Lo que hacemos es agregar el boton Cerrar y el Mc "uno"*/
addChild(cerrar)
uno.x=1;
uno.y=1;
addChild(uno)
}
cerrar.addEventListener(MouseEvent.CLICK, cerrarMC);
function cerrarMC(event:MouseEvent):void

{
/*Lo que hacemos es quitar el boton Cerrar y el Mc "uno"*/
removeChild(cerrar);
removeChild(uno);
}

Fijate si funciona y me avisas.
saludos

Por bubudrc

Claber

591 de clabLevel

1 tutorial

 

mayo 2006

firefox
Citar            
MensajeEscrito el 04 Oct 2009 09:08 pm
Muchas gracias bubudrc

He escrito de nuevo con tu codigo y solo tres elementos simples.
Un rectangulo que transformo en movieClip e instancio como "uno" (sin comilla2)
Un circulo que transformo en Button e instancio cono "cerrar"
Otro circulo que transformo en Button e instancio como "abrir"

y tu código:

var cerrar:Button=new Button();
var uno:MovieClip=new MovieClip();
cerrar.x=100;
cerrar.y=100;

abrir.addEventListener(MouseEvent.CLICK, ABRIRMC);
function ABRIRMC(event:MouseEvent):void

{
/*Lo que hacemos es agregar el boton Cerrar y el Mc "uno"*/
addChild(cerrar)
uno.x=1;
uno.y=1;
addChild(uno)
}
cerrar.addEventListener(MouseEvent.CLICK, cerrarMC);
function cerrarMC(event:MouseEvent):void

{
/*Lo que hacemos es quitar el boton Cerrar y el Mc "uno"*/
removeChild(cerrar);
removeChild(uno);
}

Cuando testeo la pelicula me muestra el siguiente error:


1151: A conflict exists with definition cerrar in namespace internal.
1151: A conflict exists with definition uno in namespace internal.

Por sinbatm

10 de clabLevel



 

firefox
Citar            
MensajeEscrito el 04 Oct 2009 09:59 pm
hola, antes que nada disculpa si no me entendiste.
tienes que tratar de poner todo lo que es codigo dentro de las etiquetas

Código ActionScript :

 o [code][/code), de esa forma es mas legible leerlo.

para que esto funciones, debes agregar un componente Button al escenario, a cualquier parte, no importa si esta fuea o debes crear un boton, y darle en el panle de biblioteca la vinculacion:
*Exportar para ActionScript
*Exportar en el primer fotograma
Ambos deben estar tildados
y luego en ese fotograma escribes lo siguiente:

Código ActionScript :

import flash.display.Sprite;
import flash.events.MouseEvent;
import fl.controls.Button;

var abrir:Button=new Button();
var cerrar:Button=new Button();
var uno:MovieClip=new MovieClip();

abrir.x=100;
abrir.y=100
abrir.label="ABRIR";
addChild(abrir);

cerrar.label="CERRAR";



abrir.addEventListener(MouseEvent.CLICK, abrirUno)

function abrirUno(event:MouseEvent):void
{
   cerrar.x=300;
   cerrar.y=300;
   addChild(cerrar);
   
   uno.height=300;
   uno.width=300;
   uno.x=0;
   uno.y=0;
   addChild(uno);
   
   removeChild(abrir);
}
cerrar.addEventListener(MouseEvent.CLICK, cerrarUno)

function cerrarUno(event:MouseEvent):void
{

   removeChild(cerrar);
   removeChild(uno);
   abrir.x=100;
   abrir.y=100
   addChild(abrir);
}


si queires puedes ver este tutorial en donde se hace algo parecido, pero ya hablando de clases.
saludos

Por bubudrc

Claber

591 de clabLevel

1 tutorial

 

mayo 2006

firefox
Citar            
MensajeEscrito el 05 Oct 2009 08:04 am
bubudrc, gracias de nuevo, pero continúa dandome error.

Tengo un boton (un circulo verde) en el escenario que es una instancia de abrir_Btt de nombre abrir. Esta exportado para ActionScript, y en el primer frame y he nombrado la Clase como Abrir_Btt.

Otro boton (un circulo azul) fuera del escenario que es una instancia de cerrar_Btt de nombre cerrar. Esta exportado para ActionScript, y en el primer frame y he nombrado la Clase como Cerrar_Btt

Un movieclio fuera del escenario (un rectangulo verde) que es una instancia de unoMC de nombre uno. Esta exportado para ActionScript, y en el primer frame y he nombrado la Clase como Panel.

Con el código:

Código :

import flash.display.Sprite; 
import flash.events.MouseEvent; 
import fl.controls.Button; 
 
var abrir:Abrir_Bt=new Abrir_Bt(); 
var cerrar:CerrarBtt=new CerrarBtt(); 
var uno:Panel=new Panel(); 
 
abrir.x=100; 
abrir.y=100 
abrir.label="abrir"; 
addChild(abrir); 
 
cerrar.label="cerrar"; 
 
 
 
abrir.addEventListener(MouseEvent.CLICK, abrirUno) 
 
function abrirUno(event:MouseEvent):void 
{ 
   cerrar.x=300; 
   cerrar.y=300; 
   addChild(cerrar); 
    
   uno.height=300; 
   uno.width=300; 
   uno.x=0; 
   uno.y=0; 
   addChild(uno); 
    
   removeChild(abrir); 
} 
cerrar.addEventListener(MouseEvent.CLICK, cerrarUno) 
 
function cerrarUno(event:MouseEvent):void 
{ 
 
   removeChild(cerrar); 
   removeChild(uno); 
   abrir.x=100; 
   abrir.y=100 
   addChild(abrir); 
}



me aparece el siguiente error:
[code]1151: A conflict exists with definition abrir in namespace internal.

Por sinbatm

10 de clabLevel



 

safari
Citar            
MensajeEscrito el 05 Oct 2009 08:04 am
bubudrc, gracias de nuevo, pero continúa dandome error.

Tengo un boton (un circulo verde) en el escenario que es una instancia de abrir_Btt de nombre abrir. Esta exportado para ActionScript, y en el primer frame y he nombrado la Clase como Abrir_Btt.

Otro boton (un circulo azul) fuera del escenario que es una instancia de cerrar_Btt de nombre cerrar. Esta exportado para ActionScript, y en el primer frame y he nombrado la Clase como Cerrar_Btt

Un movieclio fuera del escenario (un rectangulo verde) que es una instancia de unoMC de nombre uno. Esta exportado para ActionScript, y en el primer frame y he nombrado la Clase como Panel.

Con el código:

Código :

import flash.display.Sprite; 
import flash.events.MouseEvent; 
import fl.controls.Button; 
 
var abrir:Abrir_Bt=new Abrir_Bt(); 
var cerrar:CerrarBtt=new CerrarBtt(); 
var uno:Panel=new Panel(); 
 
abrir.x=100; 
abrir.y=100 
abrir.label="abrir"; 
addChild(abrir); 
 
cerrar.label="cerrar"; 
 
 
 
abrir.addEventListener(MouseEvent.CLICK, abrirUno) 
 
function abrirUno(event:MouseEvent):void 
{ 
   cerrar.x=300; 
   cerrar.y=300; 
   addChild(cerrar); 
    
   uno.height=300; 
   uno.width=300; 
   uno.x=0; 
   uno.y=0; 
   addChild(uno); 
    
   removeChild(abrir); 
} 
cerrar.addEventListener(MouseEvent.CLICK, cerrarUno) 
 
function cerrarUno(event:MouseEvent):void 
{ 
 
   removeChild(cerrar); 
   removeChild(uno); 
   abrir.x=100; 
   abrir.y=100 
   addChild(abrir); 
}



me aparece el siguiente error:
[code]1151: A conflict exists with definition abrir in namespace internal.

Por sinbatm

10 de clabLevel



 

safari
Citar            
MensajeEscrito el 05 Oct 2009 08:07 am
perdon el error que aparece es el siguiente

1151: A conflict exists with definition abrir in namespace internal var abrir:Abrir_Bt=new Abrir_Bt();

Por sinbatm

10 de clabLevel



 

safari
Citar            
MensajeEscrito el 05 Oct 2009 09:08 am
perdon el error que aparece es el siguiente

1151: A conflict exists with definition abrir in namespace internal var abrir:Abrir_Bt=new Abrir_Bt();

Por sinbatm

10 de clabLevel



 

safari
Citar            
MensajeEscrito el 05 Oct 2009 12:19 pm

Por bubudrc

Claber

591 de clabLevel

1 tutorial

 

mayo 2006

firefox

 

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