Foros del Web » Creando para Internet » Flash y Actionscript »

Mostrar datos de un array al oprimir un boton

Estas en el tema de Mostrar datos de un array al oprimir un boton en el foro de Flash y Actionscript en Foros del Web. Hola: Soy nueva en el foro y en el mundo del actionscript. Tengo una duda si alguien me puede ayudar le agradezco. Estoy creando un ...
  #1 (permalink)  
Antiguo 01/09/2010, 14:29
 
Fecha de Ingreso: septiembre-2010
Mensajes: 19
Antigüedad: 14 años, 2 meses
Puntos: 0
Mostrar datos de un array al oprimir un boton

Hola:
Soy nueva en el foro y en el mundo del actionscript. Tengo una duda si alguien me puede ayudar le agradezco.

Estoy creando un mapa en flash y cada pueblo es un boton. Este mapa lee datos de un xml y el ac lee y carga la data. por ejemplo:
<pueblos>
<pueblo id="1" pcolor="Amarillo" cantidad="100,000" />
<pueblo id="2" pcolor="Rojo" cantidad="45,000" />
</pueblos>

p1,p2 son los pueblos los botones. Tambien tengo una cajita que se desplega en el boton( un texto dinamico) al hacer click desplega los records de los pueblos.

El array que tengo es el siguiente:

function verPueblos() {
pueblos = "";
for (var i = 0; pueblos_array[i]; i++) {
pueblos += "<b>"+pueblos_array[i].pcolor+" "+pueblos_array[i].cantidad+"</b> - Vel. Máx </b> - id: <b>"+pueblos_array[i].id+"</b><br>";
}
}

ESto me carga bien y me desplega bien.

El problema que tengo es que solo quiero desplegar la informacion de un solo pueblo al oprimir el boton. Si oprimo el boton de p1 me salga solo los atributos de ese p1.

He buscado ejemplos y he leido pero no encuentro algo parecido
Gracias

Jennaty
  #2 (permalink)  
Antiguo 01/09/2010, 15:54
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 15 años, 2 meses
Puntos: 214
Respuesta: Mostrar datos de un array al oprimir un boton

Hola
bueno, pues necesitas enviar el id del pueblo del cual quieres obtener info, algo así

Código actionscript:
Ver original
  1. function verPueblos(var id:Number):void {
  2. pueblos += "<b>"+pueblos_array[id].pcolor+" "+pueblos_array[id].cantidad+"</b> - Vel. Máx </b> - id: <b>"+pueblos_array[id].id+"</b><br>";
  3. }
  4. }
con esto buscas en el array el id que estas pasando como parámetro, y traerá la info de dicho valor
espero te sirva
saludos
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #3 (permalink)  
Antiguo 02/09/2010, 06:43
 
Fecha de Ingreso: septiembre-2010
Mensajes: 19
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: Mostrar datos de un array al oprimir un boton

Muchas gracias

Lo voy a intentar, eso va en el array, lo que todavia no tengo claro es la instruccion para decirle al boton traeme este id en especifico con su informacion.


Gracias
  #4 (permalink)  
Antiguo 02/09/2010, 07:31
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 15 años, 2 meses
Puntos: 214
Respuesta: Mostrar datos de un array al oprimir un boton

Hola
bueno, como creaste los botones? si lo haces dinámicamente, puedes
a cada uno asignarle un id
si los tienes manuales, entonces tal vez los tengas nombrados algo así
"botonpueblo1,botonpueblo2" o algo parecido, entonces tendrías esto para
cada botón

ehm, usas as2 o as3???
voy a teorizar que usas as3

Código actionscript:
Ver original
  1. botonpueblo1.addEventListener(MouseEvent.CLICK,verpueblo);//así con todos
  2.  
  3. function verpueblo(e:MouseEvent):void{
  4. var id = e.target.name.substr(11,1); //1 en este caso
  5. //sigue lo que ya se tiene de buscar en el array
  6. }

espero se aclare un poco
saludos
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #5 (permalink)  
Antiguo 02/09/2010, 07:58
 
Fecha de Ingreso: septiembre-2010
Mensajes: 19
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: Mostrar datos de un array al oprimir un boton

Hola

Estoy usando as2 y es un mapa que cambia de colores a leer un xml y ejecutarse por primera vez, tambien debe presentar unas cantidades al momento de oprimir un boton. Debe presentar la cantidad en una cajita de texto y solo debe presentar la informacion de ese pueblo en especifico. los pueblos son p1, p2 etc.

Yo cree un text box dinamico. y lo tengo en la accion de over ( en un frame) del botonl .

El script que tengo es este que me funciona a la mitad porque me pinta, pero no me da la informacion del pueblo.


se que la logica es que despues que cargue el arreglo de pueblos. al oprimir boton lea el id del pueblo donde estoy y muestre los valores para ese id. pero no se hacerlo en as.

estoy intentando y leyendo, no he encontrado algo parecido.

mi script es asi:

System.useCodepage = true;
XML.prototype.ignoreWhite = true;
datos_txt.autoSize = "left";
datos_xml = new XML();
datos_xml.onLoad = cargarDatos;
pueblos_array = new Array();
function cargarDatos(exito) {
if (exito) {
pueblosCargados = this.firstChild.childNodes;
for (var k = 0; pueblosCargados[k]; k++) {
pasar_a_array(pueblosCargados[k]);
}
delete pueblosCargados;
delete datos_xml;
verPueblos();
}
}
function pasar_a_array(pueblos) {
var objetoPueblo = new Object();
var atributos = pueblos.attributes;
if (atributos.pcolor == "Amarillo") {
objetoPueblo.pcolor = 0xFFFF00;
} else if (atributos.pcolor == "Rojo") {
objetoPueblo.pcolor = 0xFF0000;
} else if (atributos.pcolor == "Verde") {
objetoPueblo.pcolor = 0x00FF00;
}
objetoPueblo.cantidad = atributos.cantidad;
objetoPueblo.id = Number(atributos.id);
pueblos_array.push(objetoPueblo);
var col = new Color(this["p"+atributos.id]).setRGB(objetoPueblo.pcolor);//el nombre de instancia es "p"+ un nro de id
}

function verPueblos() {
pueblos = "";
for (var i = 0; pueblos_array[i]; i++) {
pueblos += "<b>"+pueblos_array[i].pcolor+" "+pueblos_array[i].cantidad+"</b> - Vel. Máx </b> - id: <b>"+pueblos_array[i].id+"</b><br>";
}
}

datos_xml.load("prueba.xml");
stop();

No se como decirle al boton recoje el id ejemplo 1 y traeme la informacion de p1.

Si ves algo que me ayude te agradesco
gracias por tus recomendaciones

Jennaty
  #6 (permalink)  
Antiguo 02/09/2010, 08:46
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 15 años, 2 meses
Puntos: 214
Respuesta: Mostrar datos de un array al oprimir un boton

Hola
podrías postear tu xml?
saludos
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #7 (permalink)  
Antiguo 02/09/2010, 08:51
 
Fecha de Ingreso: septiembre-2010
Mensajes: 19
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: Mostrar datos de un array al oprimir un boton

Hola:

al finar tendra en una misma fila mas cantidades pero para prueba mi xml es asi:


<?xml version="1.0" encoding="ISO-8859-1"?>
<pueblos>
<pueblo id="1" pcolor="Amarillo" cantidad="100,000" />
<pueblo id="2" pcolor="Rojo" cantidad="45,000" />
<pueblo id="3" pcolor="Verde" cantidad="564,990" />
<pueblo id="4" pcolor="Rojo" cantidad="300,000,00" />
<pueblo id="5" pcolor="Amarillo" cantidad="77" />
<pueblo id="6" pcolor="Verde" cantidad="88" />
<pueblo id="7" pcolor="Verde" cantidad="99" />
<pueblo id="8" pcolor="Verde" cantidad="70,000" />
<pueblo id="9" pcolor="Amarillo" cantidad="70,000" />
<pueblo id="10" pcolor="Verde" cantidad="70,000" />
</pueblos>
  #8 (permalink)  
Antiguo 02/09/2010, 10:30
 
Fecha de Ingreso: septiembre-2010
Mensajes: 19
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: Mostrar datos de un array al oprimir un boton

podria invocar la funcion ver pueblos y verificar si el id = al pueblo y traer solo la informacion
como lo hago en as????

necesito ayuda
  #9 (permalink)  
Antiguo 02/09/2010, 15:11
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 15 años, 2 meses
Puntos: 214
Respuesta: Mostrar datos de un array al oprimir un boton

Hola
bueno, intenta esto

Código actionscript:
Ver original
  1. //agrego listener a los botones
  2. boton1.addEventListener("click",verPueblos);
  3. boton2.addEventListener("click",verPueblos);
  4.  
  5. //ya no llamo a verPueblos luego del delete datos_xml pues
  6. //en mi caso me mostraria undefined pues esta función solo
  7. //la usare cuando se de clic en los botones
  8.  
  9. verPueblos = function(e) {
  10. //recupero cual botón presione
  11. var idboton:String = String(e.target);
  12. //en mi caso los botones se llaman boton1, boton2, pero me trae el _level0,
  13. //por eso hago uso de esta siguiente variable que me dira la posición de
  14. //la palabra botón
  15. var loc=idboton.indexOf("boton")+5;
  16. //busco la info en el array y la voy asignando a un textbox
  17. //le resto 1 pues el array que se definio empieza en 0 y no en 1, pero en mi caso
  18. //los botones empiezan en 1, si empiezan tus botones en 0, quita el -1 y listo
  19. test.text = pueblos_array[idboton.substr(loc,2)-1].cantidad;
  20.  
  21. }

espero te sirva
saludos
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #10 (permalink)  
Antiguo 03/09/2010, 06:28
 
Fecha de Ingreso: septiembre-2010
Mensajes: 19
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: Mostrar datos de un array al oprimir un boton

Muchas gracias..

Pregunto solo le anado esa rutina al boton?

Y sustituyo los nombres de los botones en vez de boton 1, seria p1.

Lo que no entiendo es si en donde dice idboton escribo id???? en mi caso

El evento puede ser on press??? l
--------------------------------------------------------------------------

on (press) {
//agrego listener a los botones
p1.addEventListener("click",verPueblos);
p2.addEventListener("click",verPueblos);

//ya no llamo a verPueblos luego del delete datos_xml pues
//en mi caso me mostraria undefined pues esta función solo
//la usare cuando se de clic en los botones

verPueblos = function(e) {
//recupero cual botón presione
var idboton:String = String(e.target);
//en mi caso los botones se llaman boton1, boton2, pero me trae el _level0,
//por eso hago uso de esta siguiente variable que me dira la posición de
//la palabra botón
var loc=idboton.indexOf("boton")+5;
//busco la info en el array y la voy asignando a un textbox
//le resto 1 pues el array que se definio empieza en 0 y no en 1, pero en mi caso
//los botones empiezan en 1, si empiezan tus botones en 0, quita el -1 y listo
test.text = pueblos_array[idboton.substr(loc,2)-1].cantidad;
}
}
  #11 (permalink)  
Antiguo 03/09/2010, 06:36
 
Fecha de Ingreso: septiembre-2010
Mensajes: 19
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: Mostrar datos de un array al oprimir un boton

comente ver pueblos en el script y sustitui los valores asi:

on (press) {
p1.addEventListener("click",verPueblos);
p2.addEventListener("click",verPueblos);

verPueblos = function(e) {

var id:String = String(e.target);

var loc=id.indexOf("p1")+5;
datos_txt.text = pueblos_array[id.substr(loc,2)-1].cantidad;
}
}


en var loc=id..... el valor es el nombre del boton o es otro. en mi caso el primer boton es p1..

solo me hace falta saber si sustitui bien.
  #12 (permalink)  
Antiguo 03/09/2010, 14:18
 
Fecha de Ingreso: septiembre-2010
Mensajes: 19
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: Mostrar datos de un array al oprimir un boton

Hice la modificacion pero al hacer click todavia no me muestra los datos.... Estoy revisando. si tienes idea de porque te agradezco me digas.

gracias he aprendido. Y gracias por tu ayuda
  #13 (permalink)  
Antiguo 04/09/2010, 04:20
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 15 años, 2 meses
Puntos: 214
Respuesta: Mostrar datos de un array al oprimir un boton

Hola
los listeners van fuera del on(press), y los botones no tienen
en mi caso código internamente, sino que precisamente para eso
hago los listeners

ahora, en tu caso como se llaman p1, etc, cambia esto

var loc=id.indexOf("p")+1;

con ese cambio debería funcionarte, prueba
y comentas
saludos
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #14 (permalink)  
Antiguo 07/09/2010, 06:49
 
Fecha de Ingreso: septiembre-2010
Mensajes: 19
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: Mostrar datos de un array al oprimir un boton

Hola.

Escribi el codigo en el frame1 y quedo asi: Me gustaria si es posible veas si puse el codigo en el lugar correcto. En el boton no tengo nada.

Cuando oprimo el boton no pasa nada. No me escribe el valor cantidad.

sera que hice algo incorrecto?

System.useCodepage = true;
XML.prototype.ignoreWhite = true;
datos_txt.autoSize = "left";
datos_xml = new XML();
datos_xml.onLoad = cargarDatos;
pueblos_array = new Array();
function cargarDatos(exito) {
if (exito) {
pueblosCargados = this.firstChild.childNodes;
for (var k = 0; pueblosCargados[k]; k++) {
pasar_a_array(pueblosCargados[k]);
}
delete pueblosCargados;
delete datos_xml;
//verPueblos();
}
}
function pasar_a_array(pueblos) {
var objetoPueblo = new Object();
var atributos = pueblos.attributes;
if (atributos.pcolor == "Amarillo") {
objetoPueblo.pcolor = 0xFFFF00;
} else if (atributos.pcolor == "Rojo") {
objetoPueblo.pcolor = 0xFF0000;
} else if (atributos.pcolor == "Verde") {
objetoPueblo.pcolor = 0x00FF00;
}
objetoPueblo.cantidad = atributos.cantidad;
objetoPueblo.id = Number(atributos.id);
pueblos_array.push(objetoPueblo);
//trace(pueblosCargados)
// trace(this["p"+atributos.id])
//trace(atributos.cantidad)
var col = new Color(this["p"+atributos.id]).setRGB(objetoPueblo.pcolor);//el nombre de instancia es "p"+ un nro de id
}


//agrego listener a los botones
p1.addEventListener("click",verPueblos);
p2.addEventListener("click",verPueblos);


verPueblos = function(e) {

var id:String = String(e.target);

var loc=id.indexOf("p")+1;

datos_txt.text = pueblos_array[id.substr(loc,2)-1].cantidad;

}

function verPueblos() {
pueblos = "";
for (var i = 0; pueblos_array[i]; i++) {
pueblos += "<b>"+pueblos_array[i].pcolor+" "+pueblos_array[i].cantidad+"</b> - Vel. Máx </b> - id: <b>"+pueblos_array[i].id+"</b><br>";
}
}
datos_xml.load("prueba.xml");
stop();
  #15 (permalink)  
Antiguo 07/09/2010, 07:01
 
Fecha de Ingreso: septiembre-2010
Mensajes: 19
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: Mostrar datos de un array al oprimir un boton

Tengo otra pregunta podria yo escribir una logica que diga si el id = 1 (igual al boton que oprimo) pues presentame el record de ese id? Con if anidados, porque tu logica no la entiendo muy bien... no habria algo mas simple que yo pueda intentar...

lo intente pero me sigue presentando la linea completa UUUUFffffffffffff!!!!!!!!!!!!!!!!!!!!!!!
  #16 (permalink)  
Antiguo 07/09/2010, 08:10
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 15 años, 2 meses
Puntos: 214
Respuesta: Mostrar datos de un array al oprimir un boton

Hola
bueno, lo más simple es lo que te pase
ahora, veo que tienes 2 funciones verPueblos (la que te pase, y la que tenías)
así que intenta poner en comentario la que tenías,
y prueba de nuevo
saludos
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #17 (permalink)  
Antiguo 07/09/2010, 08:37
 
Fecha de Ingreso: septiembre-2010
Mensajes: 19
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: Mostrar datos de un array al oprimir un boton

Bueno:

Muchas gracias por tu paciencia.

Hice todo tal como me lo estas explicando, ahora pregunto en el boton en el modo de over le anadi un frame con el dynamic text (una cajita para desplegar) donde el nombre de la instancia es datos_txt y la variable es pueblos. porque pueblos es el nodo mayor.

lo que tengo duda es si coloque bien la cajita. porque a pesar de toda tu magnifica explicacion y ayuda no me muestra nada en la cajita. al oprimir el boton no sale el cuadro del dynamic text.

gracias
  #18 (permalink)  
Antiguo 07/09/2010, 08:52
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 15 años, 2 meses
Puntos: 214
Respuesta: Mostrar datos de un array al oprimir un boton

bueno, de nada
en cuanto a lo que dices del text, pues yo lo puse en el escenario sin over ni nada, y funciona asignandole uno de los subnodos (como te postee anteriormente)
así tampoco te asigna nada?
si persiste, intenta con un dynamic text en el stage solamente
saludos
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #19 (permalink)  
Antiguo 07/09/2010, 12:00
 
Fecha de Ingreso: septiembre-2010
Mensajes: 19
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: Mostrar datos de un array al oprimir un boton

Puse el dynamic text en el stage lo que hace que el cuadro se me pinta del color que el pueblo se pinto...... esto me esta volviendo loca....


y no me desplega valor..... todavia. He movido el dynamic text a varios sitios y nada
  #20 (permalink)  
Antiguo 08/09/2010, 14:12
 
Fecha de Ingreso: septiembre-2010
Mensajes: 19
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: Mostrar datos de un array al oprimir un boton

Hola!

Todavia lo de extraer un dato no me ha salido, pero tengo otra pregunta diferente,

el mapa me pinta muy bien los botones, pero al pintar me pinta los bordes del boton (pueblos en mi caso) y si hay varios pueblos con el mismo color no se distinguen cual es cual porque se ven sin el borde.

Yo hize la misma imagen del boton pero sin el fondo solo el borde para el up y over del boton pero no me funciona bien......

que idea me das para que el boton no pierda su borde o como se le agrega??????
  #21 (permalink)  
Antiguo 08/09/2010, 14:56
 
Fecha de Ingreso: julio-2009
Mensajes: 52
Antigüedad: 15 años, 4 meses
Puntos: 4
Respuesta: Mostrar datos de un array al oprimir un boton

Saludos.

Yo hice algo parecido a lo que estas haciendo, y me pasaba lo mismo, lo que yo hice fue dibujar en otra capa los contornos de los botones, la puse sobre la capa donde aparecen los botones y me resulto bien, no se si sea lo correcto pero funciono.

para los botones yo utilizo el siguiente codigo, la verdad no recuerdo de donde saque la idea y yo lo adapte a mis necesidades. yo tengo un array declarado con todos los botones, ya que son estaticos y se llaman b1.b2,b3,b4,b5.........

Código as:
Ver original
  1. for (i=0; i<=btn_array.length; i++) {
  2.     var miBoton:MovieClip = this["b"+i];
  3.     miBoton.onPress = function() {
  4.         botonActual.enabled = true;
  5.     };
  6.     miBoton.onRelease = function() {
  7.         this.enabled = false;
  8.         botonActual = this;
  9.         _global.btnLocal = this._name;
  10.         //_root.menu_mc.gotoAndPlay("locales");
  11.         descripLocales();
  12.     };
  13. }


Espero y te sirva la ayuda.
__________________
- franjalafa en el mundo del web -
  #22 (permalink)  
Antiguo 09/09/2010, 06:44
 
Fecha de Ingreso: septiembre-2010
Mensajes: 19
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: Mostrar datos de un array al oprimir un boton

Saludos Franjalafa y gracias por tu ayuda.

pregunto este codigo va en el frame 1 donde esta el codigo principal o lo pongo el el boton?

Cuando dices que dibujastes sobre la capa es que hicistes un grafico y lo pusistes en el layer encima del layer del boton?
  #23 (permalink)  
Antiguo 09/09/2010, 07:19
 
Fecha de Ingreso: julio-2009
Mensajes: 52
Antigüedad: 15 años, 4 meses
Puntos: 4
Respuesta: Mostrar datos de un array al oprimir un boton

Saludos.

si va en el primer frame, en mi caso yo llamo a los botones b1,b2,b3, en el tuyo seria p1,p2,p3,etc...

Lo del grafico, lo hice como dices, en un layer sobre donde estan los botones, pero te recuerdo que mis botones son estaticos.

Espero y te sea de ayuda.
__________________
- franjalafa en el mundo del web -

Etiquetas: botones
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:00.