Fabricio, se puede hacer de muchos modos,
A Bote pronto podemos pensar en dos clases
1.-La Clase de la película principal, donde estarían los botones
2.-La Clase que muestra la imaagen ampliada
O bien
1.-La Clase principal
2.-Una Clase "Menu" donde estarían tus botones
3.-La Clase de la imagen ampliada.
(Para gustos están los colores)
Puesto que la Clase que muestra la imagen ampliada es seguro que la vamos a tener, veamos qué es loq ue tiene que hacer y/o tener
Yo tendría dos métodos
1.-Mostar una imagen
2.-Cerrar la imagen
Así que vamos para allá
¡IMPORTANTE! el código SEGURO que tiene ERRORES, es sólo para que se vea la lógica de la aplicación
Código ActionScript :
package{
public class ImagenGrande extends Sprite{
var ldr:Loader;
public funcion ImagenGrande(){
botonCerrar.addEventListener(MouseEvent.MOUSE_DOWN, cerrarImagen)
}
public function mostrarImagen(string:url):void{
ldr= new Loader();
var urlReq:URLRequest = new URLRequest(url);
ldr.load(urlReq);
addChild(ldr);
}
private function cerrarImagen():void{
parent.removeChild(this);
}
}
La película principal tendría algo como
Código ActionScript :
var imagenGrande:ImagenGrande=new ImagenGrande()
addChild(imagenGrande);
imagenGrande.mostrarImagen("imagen.jpg")
Vemos que, cuando cerramos la imagen, la película principal NO se entera de que se ha cerrado. ¿cómo lo hacemos? pues con un dispathEvent.
Cambiemos la función cerrarImagen() por algo como
Código ActionScript :
private function cerrarImagen():void{
parent.removeChild(this)
dispatchEvent(new Event("CERRAR"));
}
Vemos que, cuando se cierra, además de cerrarse "dispacha" un evento. Así, en nuestra película principal podemos recoger ese evento.
Código ActionScript :
var imagenGrande:ImagenGrande=new ImagenGrande()
addChild(imagenGrande);
imagenGrande.addEventListener("CERRAR",cerrarImagen)
private function cerrarImagen(e:Event){
trace("Se cerró la imagen")
}
imagenGrande.mostrarImagen("imagen.jpg")
Vemos que, desde la película principal, se controla el evento igual que con cualquier evento, tenemos que añadir el listener y creamos una función, dentro de la función podemos hacer lo que queramos ("enablar" nuevamente los botones de un menú, por ejemplo)
Si tuviéramos una Clase Menu con los botones, deberíamos tenr una función pública enablarBotones y podríamos escribir en nuestra función main
Código ActionScript :
var imagenGrande:ImagenGrande=new ImagenGrande()
var menu:Menu=new Menu();
addChild(imagenGrande);
addChild(menu)
menu.enablarBotones(false);
imagenGrande.addEventListener("CERRAR",cerrarImagen)
private function cerrarImagen(e:Event){
menu.enablarBotones(true);
}
imagenGrande.mostrarImagen("imagen.jpg")
Vemos que ImagenGrande NO sabe nada de Menu, que la comunicación entre ellas es siempre a través de la película principal. Vamos
ImagenGrande dispacha un evento -->Main lo recoge y ejecuta un método de Menu
Igualmente, la Clase Menu debería dispachar un evento con el argumento de la "url", pero NO haría nada más. Sería la clase Main la que, una vez recogido ese evento ejecutara el método de la Clase ImagenGrande