Necesito crear enlaces dinámicos en la botonera para que carguen los mc de las distintas secciones de la web.
Tengo un mc menu con este código:
Código :
/* Importamos la clase de boton */
import Boton
/* Declaramos y creamos el array que contiene el nombre de las opciones de cada botón*/
var opcionesMenu:Array = new Array();
opcionesMenu=["BIO","GALERÍA", "MÚSICA", "CUENTOS", "SERVICIOS","TIENDA","CONTACTO"];
/* Declaramos y creamos el array que contiene el nombre de los mc que cargará cada botón */
var enlacesMenu:Array = new Array();
enlacesMenu=["bio_mc","bio_mc", "bio_mc", "bio_mc", "bio_mc","bio_mc","bio_mc"];
/* Declaramos y creamos el array que contiene el nombre de las clases correspondientes a cada mc */
var clasesMenu:Array = new Array();
clasesMenu=["Bio","Bio", "Bio", "Bio", "Bio","Bio","Bio"];
/* Declaramos y creamos el sprite que contendrá a los botones. Definimos su posición y lo añadimos a escena */
var menu:Sprite = new Sprite();
menu.x=62;
menu.y=235;
addChild(menu);
/* Declaramos la instancia clip de la clase Boton. Definimos un bucle creará un botón con las distintas opciones de array opcionesMenu.
Definimos el color que mostrará al situar el ratón encima, definimos su posición y lo añadimos a escena */
var clip:Boton;
for (var i:uint = 0; i<opcionesMenu.length; i++) {
clip= new Boton(151,41,0x000000,0xFFFFFF,opcionesMenu[i],enlacesMenu[i],clasesMenu[i])
clip.x=170*i;
menu.addChild(clip);
}
Como veis he creado un array enlacesMenu con el nombre de los mc que tendrán el contenido y otro clasesMenu donde viene el nombre de las clases de cada mc (como es de ejemplo he puesto el mismo).
Estoy usando la clase Boton.as.
Entonces en la clase Boton.as tendré que crear una función que recorra estos array y me añada a escena el mc correspondiente. La función es
// Asocia a cada botón su link correspondiente
function link (e:MouseEvent):void {
var enlace:clase = new clase();
caja.addChild(enlace);
}
y la clase me queda así:
Código :
package{
import flash.display.Sprite;
import flash.display.Graphics;
import flash.text.TextField;
import flash.text.TextFormat;
import flash.text.TextFormatAlign;
import flash.events.MouseEvent;
public class Boton extends Sprite{
private var caja:Sprite=new Sprite();
private var texto:TextField=new TextField();
private var formato:TextFormat=new TextFormat();
private var _ancho:uint;
private var _alto:uint;
public var estado:Boolean;
//Constructor
public function Boton(ancho:uint,alto:uint,color:uint,colorHover:uint,textoBoton:String,enlace:String,clase:String){
_ancho=ancho;
_alto=alto;
estado=false;
caja.graphics.beginFill(color);
caja.graphics.drawRect(0,0,ancho,alto);
addChild(caja);
// Texto
texto.width=ancho;
texto.height=alto;
texto.y=9;
texto.text=textoBoton;
formato.size=18;
formato.color=0xFFFFFF;
formato.align=TextFormatAlign.CENTER;
formato.font="Arial";
//Aplicamos el formato
texto.setTextFormat(formato);
caja.addChild(texto);
caja.buttonMode=true;
caja.mouseChildren=false;
caja.addEventListener(MouseEvent.MOUSE_OVER,activar);
caja.addEventListener(MouseEvent.MOUSE_OUT,desactivar);
caja.addEventListener(MouseEvent.CLICK,link);
}//Fin constructor
// El botón se hace transparente
public function activar(e:MouseEvent){
caja.alpha=0;
}
// El botón se hace opaco
public function desactivar(e:MouseEvent){
caja.alpha=1;
}
// Asocia a cada botón su link correspondiente
function link (e:MouseEvent):void {
var enlace:clase = new clase();
caja.addChild(enlace);
}
}// fin clase
}// fin package¿A nivel de planteamiento sería asi o debería generar los enlaces dinámicos de otra forma?
Me está dando errores, alguna idea de qué estoy haciendo mal?
gracias