hola, acabo de responder un tema parecido
http://www.forosdelweb.com/f16/como-hacer-campo-dinamicos-367977/
pero akí te pongo un ejemplo de cómo podría ser lo que quieres
usaremos XML para cargar los datos
y attachMovie para agregar los botones
lo primero es saber cómo estarán dispuestos los datos en nuestro XML
Código HTML:
<?xml version="1.0" encoding="UTF-8"?>
<menu>
<categoria id="inicio.html" titulo="Inicio" />
<categoria id="nosotros.html" titulo="Nosotros" />
<categoria id="servicios.php" titulo="Servicios" />
<categoria id="galeria.asp" titulo="Galería" />
<categoria id="portafolio.phtml" titulo="Portafolio" />
<categoria id="contacto.htm" titulo="Contacto" />
</menu>
esta es la cadena que debemos generar con php, claro con los datos de la DB
ahora bien... este sería el código para generar esa cadena
Código PHP:
<?php
//conexion a la DB
$SQL = "SELECT * FROM categorias WHERE idioma_categoria=$idioma ORDER BY id_categoria DESC LIMIT 0,5";
$RESULTADO = mysql_query($SQL);
//aquí comenzamos con la cabecera del XML
echo '<?xml version="1.0" encoding="UTF-8"?>'."\n";
echo "<menu>\n";
//aquí exploramos cada registro y lo imprimimos dándole las etiquetas y atributos que requiere nuestro XML
while($CATEGORIA = mysql_fetch_array($RESULTADO)){
//debe tener este formato: <categoria id="" titulo="" />
echo "\n\t".'<categoria id="'.$CATEGORIA['id_categoria'].'" titulo="'.$CATEGORIA['titulo_categoria'].'" />';
}
//finalmente terminamos nuestro XML
echo "\n</menu>";
?>
espero no haberme equivocado xD
guarda este archivo con nombre
menu_datos.php y pruébalo
debe generarte un código XML como el de la muestra anterior (ver código fuete)
si es así, ya podemos pasar a la parte flash
sino, tendrás que ver que es lo que falla, y conseguir que se genere una cadena como esa :P
en flash:
lo único que necesitaremos sera un MovieClip (nombre de vinculacion:
boton) con un campo de texto dinámico dentro de él (nombre de instanci:
info), cómo? Así:
- crea un campo de texto dinámico y desde el panel de propiedades ponle nombre de instancia '
info'
- selecciona ese campo de texto y conviértelo en MovieClip (F8) y ponle cualquier nombre...
- abre la biblioteca (CTRL+L) y verás allí el MovieClip creado, dale click derecho sobre ese elemento en la biblioteca y luego en la opción
Vinculación... activa la opcion
Exportar para ActionScript y en el cuado
Identificador pones
boton
uff... creo que muy detallado xD
El escenario debe estar vacío, borra todo (ya que agregaremos los botones sacando una dúplica del que tenemos en biblioteca)
ahora en el primer fotograma de _root pones este código
Código PHP:
/*CODIGO ACTION SCRIPT*/
//creamos nuestro objeto XML y definimos las acciones para cuando se invoque la carga de datos
var menu_xml:XML = new XML();
menu_xml.ignoreWhite = true;
menu_xml.onLoad = function(ok){
if(ok) crear_botones(this.firstChild.childNodes);
else trace('no se pudo cargar los datos');
}
//hará el trabajo de agregar los botones y asignarle acciones
crear_botones = function(lista:Array){
for(n=0;n<lista.length;n++){
var boton_ref:MovieClip = this.attachMovie('boton','b'+n,this.getNextHighestDepth(),{_x:20,_y:n*22+20});
boton_ref.info.text = lista[n].attributes.titulo;
boton_ref.id = lista[n].attributes.id;
boton_ref.onRelease = function(){ getURL('http://nombre.dominio/'+this.id);}
}
}
//cargamos los datos
menu_xml.load('datos_menu.xml');
stop();
explicar este código no es tan sencillo, pero los resumiré
creamos un objeto xml:
menu_xml
invocamos la carga de datos y si se cargan correctamente
ejecutamos la funcion crear_botones
ahora guarda
el archivo .FLA (cualquier nombre)
el archivo .PHP (menu_datos.php)
el archivo .XML (menu_datos.xml)
en la misma carpeta
bien...
si seguiste los pasos solo queda cruzar los dedos y probar si funciona :P
jeje funcionará
si ya comprobaste que
menu_datos.php genera el XML mencionado
entonces ya puuedes reemplazar la carga por este archivo
menu_xml.load('datos_menu.
php');
y puedes borrar ya
menu_datos.xml :P
en esta consulta dejo un par de links sobre el tema
http://www.forosdelweb.com/showthread.php?t=367977