Pues como todos estoy empezando a desarrollar mis proyectos con AS3 pero eh topado cn un problemita, le explico.
Tengo una pelicula llamada index.swf al cual me crea un menu dinamico desde un xml con una clase de AS3, al finalizar la aparicion del menu mando a cargar un swf llamado inicio.swf dentro un objeto loader creado atraves de una clase que llamada PreCargador, ese archivo (inicio.swf) contiene un slideShow de fotos (el cual funciona con un interval), hasta ahi todo bien el problema que tengo es que cuando le pico a un boton para que me cargue otra seccion si lo hace, pero no remueve el interval que se encuentra en el swf "inicio.swf".
Espero haber sido lo suficiente explicito. les dejo los codigos para ver que se puede hacer de ante mano gracias
En el archivo index.swf
Código :
var ruta:String = "../includes_xml/menugral.xml"; var posX:int = 215; var posY:int = 47; var miMenuXML:CargaMenuXML = new CargaMenuXML(ruta,posX,posY); miMenuXML.name = "mcMenu"; this.addChild(miMenuXML); stop();
La clase CargaMenuXML
Código :
package includes_as{
import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.text.TextField;
import flash.display.*;
import flash.events.*;
import flash.utils.*;
import fl.transitions.*;
import fl.transitions.easing.*;
import includes_as.TipoFuente;
import includes_as.PreCargador;
public class CargaMenuXML extends Sprite {
private var miCargaXML:URLLoader;
private var miIntervaloMenu:uint;
private var movimiento:Tween;
private var miMenu:MovieClip;
private var mascaraMenu:mascaraMenuMc;
public var posXMenu:int;
private var posYMenu:int;
private var noNodos:int;
private var botonActual:String;
private var botonAnterior:String;
private var rutaSeccionCargar:String;
public function CargaMenuXML(ruta:String, posx:int, posy:int) {
posXMenu = posx;
posYMenu = posy;
rutaSeccionCargar = "";
var miRutaXML:URLRequest = new URLRequest(ruta);
miCargaXML = new URLLoader(miRutaXML);
miCargaXML.addEventListener(Event.COMPLETE,xmlCargado);
}
private function xmlCargado(eventObj:Event):void {
try {
var miXML:XML = new XML(miCargaXML.data);
noNodos = miXML.elements("*").length();
miMenu = new MovieClip();
mascaraMenu = new mascaraMenuMc();
mascaraMenu.x = miMenu.x = posXMenu;
mascaraMenu.y = miMenu.y = posYMenu;
this.addChild(miMenu);
this.addChild(mascaraMenu);
var formato:TipoFuente = new TipoFuente(13, false);
var posXBoton:int = 0;
for (var i:int=0; i<noNodos; i++) {
var miBoton:MovieClip = new botonMc();
miBoton.txtNombre.defaultTextFormat = formato.miFormato;
miBoton.txtNombre.embedFonts = true;
miBoton.txtNombre.text = miXML.elemento[i].@nombre;
miBoton.txtNombre.selectable = false;
miBoton.x = posXBoton;
miBoton.y = -miBoton.height;
miBoton.name = miXML.elemento[i].@nombre
miBoton.seccion = miXML.elemento[i].@secc
miBoton.addEventListener(MouseEvent.MOUSE_OVER, menuOver);
miBoton.addEventListener(MouseEvent.MOUSE_OUT, menuOut);
miBoton.addEventListener(MouseEvent.MOUSE_DOWN, menuRelease);
miBoton.buttonMode = true;
miBoton.mouseChildren = false;
posXBoton = posXBoton+miBoton.width+2;
this.miMenu.addChild(miBoton);
}
this.miMenu.mask = this.mascaraMenu;
iniMovBoton(0);
} catch (e:TypeError) {
trace("No se encontró el fichero de XML!!!");
trace(e.message);
}
}
private function iniMovBoton(idboton:int):void {
miIntervaloMenu = setInterval(movBoton, 300, idboton);
}
private function movBoton(idboton:int):void {
clearInterval(miIntervaloMenu);
if (idboton<noNodos) {
var boton:String = this.miMenu.getChildAt(idboton).name;
var alturaBoton:int = this.miMenu.getChildAt(idboton).height;
movimiento = new Tween(this.miMenu.getChildByName(boton), "y", Regular.easeInOut, -alturaBoton, 0, .6, true);
idboton++;
iniMovBoton(idboton);
} else {
botonActual = "Inicio";
botonAnterior = "";
botonSeleccionado();
var cargadorSeccion:PreCargador = new PreCargador(rutaSeccionCargar,"inicio.swf");
cargadorSeccion.name = "mcContenedorSecc";
this.parent.addChild(cargadorSeccion);
}
}
private function botonSeleccionado():void{
var btnActual:MovieClip = this.miMenu.getChildByName(botonActual) as MovieClip;
btnActual.txtNombre.textColor = 0xFFCC00;
btnActual.removeEventListener(MouseEvent.MOUSE_OVER, menuOver)
btnActual.removeEventListener(MouseEvent.MOUSE_OUT, menuOut)
btnActual.removeEventListener(MouseEvent.MOUSE_DOWN, menuRelease)
btnActual.buttonMode = false;
if(botonAnterior!=""){
var btnAnterior:MovieClip = this.miMenu.getChildByName(botonAnterior) as MovieClip;
btnAnterior.txtNombre.textColor = 0xFFFFFF;
btnAnterior.addEventListener(MouseEvent.MOUSE_OVER, menuOver)
btnAnterior.addEventListener(MouseEvent.MOUSE_OUT, menuOut)
btnAnterior.addEventListener(MouseEvent.MOUSE_DOWN, menuRelease)
btnAnterior.buttonMode = true;
}
}
private function menuOver(eventObj:MouseEvent):void {
var boton:MovieClip = eventObj.target as MovieClip;
boton.txtNombre.textColor = 0xFFCC00;
}
private function menuOut(eventObj:MouseEvent):void {
var boton:MovieClip = eventObj.target as MovieClip;
boton.txtNombre.textColor = 0xFFFFFF;
}
private function menuRelease(eventObj:MouseEvent):void {
var boton:MovieClip = eventObj.target as MovieClip;
botonAnterior = botonActual;
botonActual = boton.name;
botonSeleccionado();
var seccionActual:Sprite = this.parent.getChildByName("mcContenedorSecc") as Sprite;
var contenedor:Loader = seccionActual.getChildByName("mcCargadorSecc") as Loader;
contenedor.unload();
var cargadorSeccion:PreCargador = new PreCargador(rutaSeccionCargar, boton.seccion);
cargadorSeccion.name = "mcContenedorSecc";//getChildAt(5)
this.parent.addChild(cargadorSeccion);
}
}
}
La clase PreCargador
Código :
package includes_as{
import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.display.*;
import flash.events.*;
import flash.utils.*;
public class PreCargador extends Sprite {
private var preCargador:precargadorMc;
public function PreCargador(ruta:String, archivo:String){
var seccionSwf:URLRequest = new URLRequest(ruta+archivo);
var contSeccion:Loader = new Loader();
contSeccion.x = 25;
contSeccion.y = 140;
contSeccion.load(seccionSwf);
contSeccion.name = "mcCargadorSecc";
contSeccion.contentLoaderInfo.addEventListener(Event.OPEN, inicioCargador);
contSeccion.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, progresoCargador);
contSeccion.contentLoaderInfo.addEventListener(Event.COMPLETE, terminoCargador);
this.addChild(contSeccion);
}
private function inicioCargador(eventObj:Event):void{
preCargador = new precargadorMc();
preCargador.x = stage.width/2-preCargador.width/2;
preCargador.y = stage.height/2-preCargador.height/2;
preCargador.name = "cargador";
this.addChild(preCargador);
}
private function terminoCargador(eventObj:Event):void{
this.removeChild(preCargador);
}
private function progresoCargador(eventObj:ProgressEvent):void{
var bytesTotales:uint = eventObj.bytesTotal;
var bytesCargados:uint = eventObj.bytesLoaded;
var porcentaje:uint = 100*(bytesCargados/bytesTotales);
preCargador.txtCargador.text = "Cargando "+porcentaje+"%";
}
}
}
En el archivo inicio.swf
Código :
import includes_as.SlideShow; var miRuta:String = "../includes_xml/principal.xml"; var slideShow:SlideShow = new SlideShow(miRuta); slideShow.name = "mcBannerImg"; this.addChild(slideShow);
La clase SlideShow
Código :
package includes_as{
import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.display.*;
import flash.events.*;
import flash.utils.*;
import fl.transitions.*;
import fl.transitions.easing.*;
public class SlideShow extends Sprite {
private var miCargaXML:URLLoader;
//private var imagenCargar:URLRequest;
private var preCargador:precargadorMc;
public var intervaloImagen:uint;
private var apareceImagen:Tween;
private var rutaImagenCargar:String;
private var noImagen:int;
private var posXContenedorImg:int;
private var posYContenedorImg:int;
private var contImagen:Loader;
private var noNodos:int;
private var misImagenes:Array;
public function SlideShow(ruta:String){
noImagen = 0;
rutaImagenCargar = "../images/";
posXContenedorImg = 10;
posYContenedorImg = 10;
var miRutaXML:URLRequest = new URLRequest(ruta);
miCargaXML = new URLLoader(miRutaXML);
miCargaXML.addEventListener(Event.COMPLETE,xmlCargado);
}
private function xmlCargado(eventObj:Event):void {
try {
var miXML:XML = new XML(miCargaXML.data);
noNodos = miXML.elements("*").length();
misImagenes = new Array(noNodos);
for (var i:int=0; i<noNodos; i++) {
misImagenes[i] = miXML.elemento[i].@foto;
}
cargarImagen();
} catch (e:TypeError) {
trace("No se encontró el fichero de XML!!!");
trace(e.message);
}
}
private function cargarImagen():void{
var imagenCargar:URLRequest = new URLRequest(rutaImagenCargar+misImagenes[noImagen]);
contImagen = new Loader();
contImagen.load(imagenCargar);
contImagen.x = posXContenedorImg;
contImagen.y = posYContenedorImg;
contImagen.name = "mcCargadorImg"
contImagen.contentLoaderInfo.addEventListener(Event.OPEN, inicioCargador);
contImagen.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, progresoCargador);
contImagen.contentLoaderInfo.addEventListener(Event.COMPLETE, terminoCargador);
this.addChild(contImagen);
}
private function inicioCargador(eventObj:Event):void{
preCargador = new precargadorMc();
preCargador.x = stage.width/2-preCargador.width/2;
preCargador.y = stage.height/2-preCargador.height/2;
this.addChild(preCargador);
}
private function terminoCargador(eventObj:Event):void{
apareceImagen = new Tween(contImagen, "alpha", Regular.easeOut, 0.1, 1.0, 2, true);
this.removeChild(preCargador);
if(noNodos>1){
inicioCambioImagen();
}
}
private function progresoCargador(eventObj:ProgressEvent):void{
var bytesTotales:uint = eventObj.bytesTotal;
var bytesCargados:uint = eventObj.bytesLoaded;
var porcentaje:uint = 100*(bytesCargados/bytesTotales);
preCargador.txtCargador.text = "Cargando "+porcentaje+"%";
}
private function cambioImagen():void{
clearInterval(intervaloImagen);
if(noImagen<noNodos-1){
noImagen++
cargarImagen();
}else{
noImagen = 0
cargarImagen();
}
}
private function inicioCambioImagen():void{
intervaloImagen = setInterval(cambioImagen, 15000);
}
}
}
