Comunidad de diseño web y desarrollo en internet online

generar un menu apartir de archivo php

Citar            
MensajeEscrito el 30 Dic 2006 11:49 pm
Hola chichos. Nesesito vuestra auyda que llevo 2 dias y no encuentro solucion apropiada
Nesesito generar los enlaces en forma de buttons en el menu
apartir de un archivo php
que genera los datos de siguente forma

Código :

&total=4&id_promo0=1&name_promo0=Callus&pic_promo0 =default_small.jpg &id_promo1=2&name_promo1=Vilada&pic_promo1=callus_ small.jpg &id_promo2=3&name_promo2=Gironellas&pic_promo2=vil ada_small.jpg &id_promo3=4&name_promo3=Viviendas en Terrassa&pic_promo3=default_small.jpg 


Si lo hago mediante textHTML asi

Código :

a=new LoadVars();
a.load("load_menu.php");
a.onLoad=function(){
a.news_loaded=news_loaded.htmlText;
var i=0;
var j=10;
var total=a["total"]; 
while(i<total){
news_loaded.htmlText+=
"<b>"+ i +"</b>"+
"<a href='promo.php?id_promo="+
a["id_promo"+i]+"'><u>"+
a["name_promo"+i]+
"</u></a><br>";
i++;

}
}

me genera los 4 enlaces de forma correcta , pero yo nesesito luego usar propiedades y metodos de los botonones como on rollover, onRelease etc y no se si lo puedo aplicar a enlace en un campo de texto
Por eso motivo intetento hacer un attach de botones
asi

Código :

while(i<total){
b=a["id_promo"+i];
attachMovie("but", b, this.getNextHighestDepth());
b._x=j;
b._y=j;
i++;
}
}

Pero solo me hace attach de un boton.
Pero el valor de total es ahora 5.
Si alguen me pudiera dar un ejemplo como hacer attach en un ciclo. NO entiendo la razon por la cual solo me aparece un boton en lugar 4.

[zah]Agregadas etiquetas code[/zah]

Por skywalker

28 de clabLevel



Genero:Femenino  

msie
Citar            
MensajeEscrito el 01 Ene 2007 12:39 am
resume tu post y el código encierralo dentro la etiqueta code, mientras menos letras tengas es mas probable que se te lea

Por Inyaka

Claber

3176 de clabLevel

9 tutoriales
2 articulos

Genero:Masculino   Desarrollador de GAIA

Programador y fotógrafo

firefox
Citar            
MensajeEscrito el 02 Ene 2007 09:45 am
Hola de nuevo!
Intento explicar de otro modo
Nesesito generar los botones en un bucle

Código :

var i=0;
var j=10;
while(i<5){
var nombre_boton="button"+i;
createClassObject(mx.controls.Button, nombre_boton, i);
//o bien aqui en lugar de create attach un boton de library
nombre_boton.move(10, j);
nombre_boton.label = i;
j=j+10;
i++;
}
Pero solo me crea un boton y sin propiedad label.
Y solo me attach un boton, pero nesesito que sea numero de botones "i"
No s e si asi es mas facil de entender.
Gracias a todos por auyda.

Por skywalker

28 de clabLevel



Genero:Femenino  

msie7
Citar            
MensajeEscrito el 02 Ene 2007 11:43 am
Hola skywalker; prueba de imprimir el nombre de tu boton y veras que lo hace bién:

Código :

var i=0;
var j=10;
while(i<5){
   var nombre_boton="button"+i;
   createClassObject(mx.controls.Button, nombre_boton, i);
   //o bien aqui en lugar de create attach un boton de library
   nombre_boton.move(10,j);
   nombre_boton.label = i;
   j=j+10;
   i++;
   //imprimo la varibale que contiene el nombre del boton, y me da: button0, button1...   
   trace(nombre_boton);
}


El label de tu boton es "button0" para el primero, "button1" para el segundo, etc. Si no es esto dilo, que miramos de ayudar.


Salut!

Por loisin

65 de clabLevel



Genero:Masculino  

Colonia-Castells

firefox
Citar            
MensajeEscrito el 02 Ene 2007 11:49 am
Si me imprime con trace perfectamente nombre de botones que se supone que genera el bucle, pero solo crea un boton este bucle, no aparecen 5 botones .
y este boton que genera este codigo en la escena no asigna propiedad label.
O sea este codigo me crea un boton en la escena principal y sin label.

Por skywalker

28 de clabLevel



Genero:Femenino  

msie7
Citar            
MensajeEscrito el 02 Ene 2007 12:33 pm
por lo que dices pueden ser varias cosas... quizas los botones se estan sobreponiendo y solo ves el último. Puede ser que no le des la profundidad bien, puede ser que no los coloques al escenario en posiciones distintas...

Te adjunto un codigo de ejemplo, para que te funcione crea un movieclip en tu biblioteca (un recuadro mismo), con el nombre "button" y exportalo para actionscript. Pon este codigo:

Código :

this.attachMovie("button", "button", 1);
button._x=226;
button._y=60;

for (i=0; i<5; i++) {
   var buttonActual = button.duplicateMovieClip("button"+i,2*i);
   buttonActual._y=buttonActual._y+40*i;
   
   trace("La profundiad del boton: "+buttonActual+" es "+buttonActual.getDepth());
}


Primero hago un attach del movieclip, y luego lo voy duplicando. Para que funcione esto lo mas importante es la profundidad, por eso te la imprimo con ese trace. Para que se vean en el escenario y no se sobrepongan tambien es importante canviarles la posición.

Espero que sea esto; intentalo aplicar a tu fla.

Por loisin

65 de clabLevel



Genero:Masculino  

Colonia-Castells

firefox
Citar            
MensajeEscrito el 02 Ene 2007 12:50 pm
Hola Loisin, gracias por el codigo.
Usando el attach no puedo acceder a valor de propiedad LABEL del boton.
Aver si explico, he puesto nombre_boton="button"+i por hacer que funciona el codigo, pero en realidad los nombres del los botones van a coger el valor mediante loadvars de un arcivo php.
Por eso nesesito acceder a propiedad label de boton, y si lo creo yo misma en biblioteca no veo posibilidad de acceder a esta propiedad.
En relacion con el profundid, en el codigo es "i"
y si puedes ver i se cambia de manera siguiente 0,1,2,3,4,5
o sea que profundid se supone que esta bien, y coordinatas _y se cambia ya que segun el codigo es 10,20,30,40,50, y aunque las cambio igual solo se ve un boton y sin propiedad label.

Por skywalker

28 de clabLevel



Genero:Femenino  

msie7
Citar            
MensajeEscrito el 02 Ene 2007 12:58 pm
Con propiedad label te refieres al nombre para poderlo llamar, no? pues por eso te decia lo de hacer un trace al nombre del boton.

Para llamar al primer boton: _level0.button0

Por ejemplo, quiero poner acciones de boton en el boton 1:

Código :

_level0.button1.onPress=function(){
   trace("HOLA");
}


Como ves estas llamando al segundo botón, ese es su label. Lo de _level0 es porque esta en ese nivel que es el principal.


Era esto?

Por loisin

65 de clabLevel



Genero:Masculino  

Colonia-Castells

firefox
Citar            
MensajeEscrito el 02 Ene 2007 01:13 pm
No era exactamente propiedad label del boton.
Mira el archivo php tengo siguientes nombres de las promociones inmobiliarias
callus
terrassa
villa
etc
...
y nesesito que estos nombres apareciecen sobre botones como propiedad label de los mismos
button0.label=callus
button0.label=terrassa
button0.label=villa
.....
o sea lo mismo que tu aqui en foro tienes botones con nombres "enviar" , "vista preliminar" etc yo debo generar nombre de botones desde un archivo php.
el codigo es igual sino que en lugar de i va a aprecer un valor de loadvars ["nombre_promo"+i]

Por skywalker

28 de clabLevel



Genero:Femenino  

msie7
Citar            
MensajeEscrito el 02 Ene 2007 02:04 pm
Aver intentare con lo mas facil
creo 4 bonotes de modo habitual

Código :

createClassObject(mx.controls.Button, "button1", 1);
button1.move(10, 10);
button1.label = "Promo1";

createClassObject(mx.controls.Button, "button2", 2);
button2.move(10, 20);
button2.label = "Promo2";

createClassObject(mx.controls.Button, "button3", 3);
button3.move(10, 30);
button3.label = "Promo3";

createClassObject(mx.controls.Button, "button4", 4);
button4.move(10, 40);
button4.label = "Promo4";


Me aparecen en la escena 4 botones de forma correcta con los labes correspondientes.
Ahora lo que nesesito crear los mismos 4 botones con las mismas propiedades pero mediante un bucle

Código :

var i=0;
var j=10;
while(i<5){
nombre_boton="button"+i;
createClassObject(mx.controls.Button, nombre_boton, i);
nombre_boton.move(10, j);
nombre_boton.label = nombre_boton;
j=j+10;
i++;
}

Y resulta que con este codigo solo aparece un boton en la escena y sin label.
Donde esta el error?

[zah]Usa las etiquetas code para postear código :swat: [/zah]

Por skywalker

28 de clabLevel



Genero:Femenino  

msie7
Citar            
MensajeEscrito el 02 Ene 2007 02:42 pm
Vale, perdona pero "sóc un cap de soca" jeje, no me habia fijado en que utilizabas botones de componentes mx.. yo nunca lo hago y quizas por eso no me he percatado.

Probando tu codigo, manualmente uno por uno funciona correctamente, y efectivamente con tu bucle no; por eso te decia antes lo de imprimir el nombre de tu boton para saber que estaba haciendo. Te lo he simplificado todo dentro la variable nombre_boton:

Código :

var i=0;
var j=0;

while(i<5){
   var nombre_boton=createClassObject(mx.controls.Button, "button"+i, i);
   nombre_boton.move(10, j);
   nombre_boton.label = "nombre_promo";
   j=j+10;
   i++;
}


Y en el label me imagino que le pasaras tu valor con loadvars.


Salut!

Por loisin

65 de clabLevel



Genero:Masculino  

Colonia-Castells

firefox
Citar            
MensajeEscrito el 02 Ene 2007 02:59 pm
Gracias loisin por auyda.
Uso componente boton de mx porque no veo otra posibilidad de hacer lo que quiero.
Me refiero a mi me gustaria con todo corazon crear mis propios botones y hacer les attach en un bucle, pero no veo como puedo acceder a propiedad label de estos botones.
Puedo poner por encima un dinamic textfield donde puedo grabar estos labels, pero si pongo texto dinamico por encima de boton, el campo del ultimo se desactiva y no lo puedes presionar.

Por skywalker

28 de clabLevel



Genero:Femenino  

msie7
Citar            
MensajeEscrito el 02 Ene 2007 03:09 pm
Te funcionó con la corrección que te he puesto?

Referente a que preferirias utilizar tus propios botones, te diria que adelante y que lo intentes. Vas muy bien encaminada con lo del campo dynamic por encima, te adjunto otro ejemplo. Para que funcione solo tienes que tener en tu biblioteca un movieclip con nombre button en actionscript, y dibujate un rectangulo mismo:

Código :

this.attachMovie("button", "button", 1);
button._x=226;
button._y=60;

var formaFont = new TextFormat();
formaFont.color = 0xFFFFFF;

for (i=0; i<5; i++) {
   var buttonActual = button.duplicateMovieClip("button"+i,2*i);
   buttonActual._y=buttonActual._y+40*i;
   
   buttonActual.createTextField("label_boton", 3*i, 0, 0, 250, 16);
   buttonActual.label_boton.wordWrap = true;
   buttonActual.label_boton.multiline = false;
   buttonActual.label_boton.length = 36;
   buttonActual.label_boton.type = "dynamic";
   buttonActual.label_boton.text = "Botón numero "+i;
   buttonActual.label_boton.setTextFormat(formaFont);
   
}
_level0.button1.onPress=function(){
   trace("ep");
}


Veras que los "labels" van variando según la "i", y puedes presionar al button1 aunqué tenga texot por encima.

Si te compensa hacerlo asi seguro que te traera menos problemas, aunque reazerlo si es mucha cosa puede ser muy pesado!


Un saludo!

Por loisin

65 de clabLevel



Genero:Masculino  

Colonia-Castells

firefox
Citar            
MensajeEscrito el 03 Ene 2007 10:07 am
Gracias de nuevo Loisin.
He probado los dos codigos y el me mayor utilidad tiene en mi caso es con componente boton.
El codigo no me funcionaba porque no asignava var nombre_boton=createClassObject(mx.controls.Button, "button"+i, i);

o sea el codigo final seria algo asi

Código :

var i=0;
var j=0;
while(i<5){
   var nombre_boton=createClassObject(mx.controls.Button,  "button"+i, i);   
   nombre_boton.move(10, j);   
   nombre_boton.label = nombre_boton;  
   nombre_boton.toggle = true;
    var listenerObject:Object = new Object();
    listenerObject.click=function(){
      trace("BYE");}
      listenerObject.f[b]ocusIn[/b]=function(){
         trace("HELLO");}
         nombre_boton.addEventListener("click", listenerObject);
         nombre_boton.addEventListener("focusIn", listenerObject);
   j=j+20;   
   i++;
   }

sigo sin entender porque hay que asignar una variable a un boton, pero si es asi, mejor.
LA duda que tengo es como acceder a propiedad onrollover del componente boton MX.
ya que si puedes ver en el codigo metodo "clic" funciona pero el metodo "focusIn" no.
Si alguien sabe cual es el metodo o propiedad del componente MX que coresponde a metodo onRollOver del bton estandart en flash.?
Gracias de nuevo a todos.

Por skywalker

28 de clabLevel



Genero:Femenino  

msie7
Citar            
MensajeEscrito el 03 Ene 2007 10:52 am
Buenas skywalker.

De tu código dices que no te funciona lo del focusIn, fijate que lo tienes mal escrito:

Código :

listenerObject.f[b]ocusIn[/b]=function(){


Te pego el código con este arreglo (te recomiendo que lo tabules o te harás un lio):

Código :

var i=0;
var j=0;
while(i<5){
   var nombre_boton=createClassObject(mx.controls.Button,  "button"+i, i);   
   nombre_boton.move(10, j);   
   nombre_boton.label = nombre_boton;  
   nombre_boton.toggle = true;
   
   var listenerObject:Object = new Object();
   listenerObject.click=function(){
      trace("BYE");
   }
   listenerObject.focusIn=function(){
       trace("HELLO");
   }
   nombre_boton.addEventListener("click", listenerObject);
   nombre_boton.addEventListener("focusIn", listenerObject);
   
   j=j+20;   
   i++;
}


Como ya te dije antes yo no suelo utilizar componentes, y menos el de boton, y por eso tampoco entiendo mucho porqué utilizas un listener (en todo caso es correctisimo!). Te pego mi humilde "versión" que en vez de utilizar un listener, utiliza los metodos onRollover y onPress clasicos:

Código :

var i=0;
var j=0;
while(i<5){
   var nombre_boton=createClassObject(mx.controls.Button,  "button"+i, i);   
   nombre_boton.move(10, j);   
   nombre_boton.label = nombre_boton;  
   nombre_boton.toggle = true;
   nombre_boton.onPress=function(){
      trace("BYE");
   }
   nombre_boton.onRollOver=function(){
      trace("HELLO");
   }
   j=j+20;   
   i++;
}


Lo de crear una variable y asignarle el nombre del boton es como hacer un eval. Como esta dentro de un bucle, esta variable va canviando de valor según "i". De esta manera si quieres llamar el valor del boton solo tendras que poner el nombre de la variable y no toda la ruta del botón. Es para ordenar código y aclararse uno al programar.


Como lo ves? Si sigues con dudas, pregunta sin miedo!


Salut!

Por loisin

65 de clabLevel



Genero:Masculino  

Colonia-Castells

firefox
Citar            
MensajeEscrito el 03 Ene 2007 11:28 am
Gracias de nuevo!
No sabia que componente soporta onPress y onRollOver.
EStaba leyendo el manual del componente boton MX y no aparece estos metodos.
Con el codigo que me has dado funciona perfectamente, aun asi que soy cabeza cuadrada quiero saber a porque no funciona focusIn, el error sintatico ha sido correjido pero si intentas probar el codigo no funciona focusIn.
Pienso a lo mejor no hay que usar focusIn si no otra cosa.
Seguire probado .
Saludos y mucas gracias!

Por skywalker

28 de clabLevel



Genero:Femenino  

msie7
Citar            
MensajeEscrito el 03 Ene 2007 11:44 am
Ok, me alegro que porfin te funcionara!

Si finalmente encuentras como solucionar lo del focusIn, postealo; por mi parte si lo encuentro también lo postearé.

Saludos!

Por loisin

65 de clabLevel



Genero:Masculino  

Colonia-Castells

firefox

 

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