Comunidad de diseño web y desarrollo en internet online

Cargar el segundo COMBO, segun la eleccion del primero

Citar            
MensajeEscrito el 16 May 2004 10:00 am
hola a todos

Como podreis comprovar soy nuevo en esto del FLASH, y os pido que me hecheis una mano.

estoy tratando de cargar un segungo COMBO, segun haya sido la eleccion en el primero, pero al parecer no consigo que el valor de la variable "tipo", tenga el mismo valor que el nombre del array de carga.



otra cosa, ¿como puedo poner una imagen al lado de las etiquetas en la lista?, pues el "COMBO1.iconField = "icono" ", no me funciona.



El codigo que tengo es este :



var TIPOS_CLIP:Array = [{label:"ESCUDOS DE FUTBOL", icono:"Seleccion.png" ,data:"CLIPs_ESCUDOS_FUTBOL"}, {label:"COMPLEMENTOS-BAÑO", icono:"bañador.png"}, {label:"COMPLEMENTOS-CABEZA", icono:"gorro.png"}, {label:"COMPLEMENTOS-VARIOS", icono:"cosa.png"}];

var CLIPs_ESCUDOS_FUTBOL:Array = [{icono:"Atco_Madrid.png", label:"Atco_Madrid", data:"Atco_Madrid"}, {icono:"R_Madrid.png", label:"R_Madrid", data:"R_Madrid"}];

COMBO1.iconField = "icono"

COMBO1.dataProvider = TIPOS_CLIP;

ENVIO_TIPO_CLIP = new Object();

ENVIO_TIPO_CLIP.change = function(CARGADOR) {

var tipo = CARGADOR.target.selectedItem.data;

COMBO2.iconField = "icono"

COMBO2.dataProvider = tipo;

trace(tipo);

};

COMBO1.addEventListener("change", ENVIO_TIPO_CLIP);

stop();

Por federico

26 de clabLevel



 

unknown
Citar            
MensajeEscrito el 16 May 2004 05:09 pm
En teoria esta es la forma "puñetera" de usar dataProvider, ya que segun la referencia (Revisa la referencia de ComboBox MX2004) debes usar XML o hacerlo a solo addItem, pero bueno



En cuanto a "iconField", no funciona asi, debes crear un MovieClip que sera tu icono, pero no instanciarlo en tu escenario, sino que en tu libreria le das click derecho y buscas "Linkage", y donde te pide el nombre para ActionScript le diras "icono", luego podras hacer esto:



Código :

comboX.iconField="icono";

Por Freddie

BOFH

53 tutoriales
597 articulos
43 ejemplos

Genero:Masculino   Admin

Conserje de Cristalab

unknown
Citar            
MensajeEscrito el 16 May 2004 05:44 pm
En primer lugar, agradecerte que te hayas interesado por mi tema.

En segundo lugar, estoy de acuerdo en lo del dataProvider("puñetero").

Bien te explico, el problema que tengo, una vez que he conseguido que el dataProvider me funcione, si pongo el nombre, textualmente del array que deseo cargar, lo que pretendo es que en vez de crear secuencias de "if, else if", con los nombres de los arrys, para que coincidan uno por uno; lo que quiero es cargar el valor de "data" en una variable, la cual me servira para llamar a uno u otro dataProvider, y lo que me esta ocurriendo, es que el valor que se carga en la variable, no me lo reconoce como valido para cargar uno u otro dataProvider.

Ejemplo :

var tipo = CARGADOR.target.selectedItem.data;

COMBO2.dataProvider = tipo;

¿como puedo hacer que la variable "tipo", me la reconozca como el nombre del array, que previamente he creado; si le hago :trace(tipo);

me devuelve el mismo texto, pèro no funciona.

En cuanto a lo de los iconos, es que pretendo que cada linea de lista lleve una imagen diferente,¿el procedidimento seguiria siendo como tu me explicas?.



Gracias por ayudarme

Por federico

26 de clabLevel



 

unknown
Citar            
MensajeEscrito el 16 May 2004 06:05 pm
...tengo dudas acerca de que estes utilizando un Combo, pues la propiedad iconField pertenece es al ListoBox.



Ahora, en la función que haces

Código :

ENVIO_TIPO_CLIP.change = function(CARGADOR) {

var tipo = CARGADOR.target.selectedItem.data;

COMBO2.iconField = "icono"

COMBO2.dataProvider = tipo;

trace(tipo);

}; 




-> tipo será la propiedad 'data', me refiero a que es un dato simplemente, lo cual se toma como una cadena (string), en ningún momento es un vector de valores, así que en lugar de decir

Código :

var tipo = CARGADOR.target.selectedItem.data;
deberías decir

Código :

var tipo = CARGADOR.target.selectedItem;


de todos modos, cuando captures el valor data, haciendo tipo.data, solo obtendrás una cadena, que así sea el nombre del vector, sólo será una cadena...y por lo menos aún no sé como convertir una cadena en nobre de variable...en cuyo caso, lo que haría yo sería más bien crear otro vector y señalar cada miembro del vector mediante un valor de índice, es decir, además de crear el primer vector, creas otro:

Código :

var lista = new Array();

lista[0] = [{icono:"cosa.gif", label:"Atco_Madrid", data:"Atco_Madrid"}, {icono:"Atco_Madrid.pngf", label:"R_Madrid", data:"R_Madrid"}];



...esto va después de

Código :

var TIPOS_CLIP:Array = ....


y en lugar de escribir

Código :

[{label:"ESCUDOS DE FUTBOL", icono:"imagen.pngf" ,data:"CLIPs_ESCUDOS_FUTBOL"}, ....
escribes

Código :

[{label:"ESCUDOS DE FUTBOL", icono:"imagen.png" ,data:"0"}, .....




..así cuando llames a la propiedad "dataProvider", lo harás de la sgte manera:

Código :

ENVIO_TIPO_CLIP.change = function(CARGADOR) {

var tipo = CARGADOR.target.selectedItem;

COMBO2.dataProvider = lista[tipo.data];

};




....te sirve así ? ...de todos modos recuerda que el combo no tiene la propiedad iconField.



Te quedo debiendo la de mostrar el gráfico...pues nunca he cargado gráficos en un List....pero con lo poquito que sé haría lo que dice F, crearía un MC y cargaría la imagen a él.



Suerte

Por gersonm

Claber

2238 de clabLevel

12 tutoriales
1 articulo
5 ejemplos

Genero:Masculino   Desarrollador de GAIA

Al otro lado de la mira

unknown
Citar            
MensajeEscrito el 16 May 2004 06:05 pm
Bueno, hay un detalle y es que viendo tu codigo en ninguna part hay una variable llamada "tipo", solmente cuando la asignas



¿?¿?

Por Freddie

BOFH

53 tutoriales
597 articulos
43 ejemplos

Genero:Masculino   Admin

Conserje de Cristalab

unknown
Citar            
MensajeEscrito el 16 May 2004 06:12 pm

freddie® escribió:

Bueno, hay un detalle y es que viendo tu codigo en ninguna part hay una variable llamada "tipo", solmente cuando la asignas



¿?¿?




-> si te fijas

Código :

ENVIO_TIPO_CLIP.change = function(CARGADOR) {

var tipo = CARGADOR.target.selectedItem.data; ....
hay está la variable.

Por gersonm

Claber

2238 de clabLevel

12 tutoriales
1 articulo
5 ejemplos

Genero:Masculino   Desarrollador de GAIA

Al otro lado de la mira

unknown
Citar            
MensajeEscrito el 17 May 2004 07:04 am
Bueno al final he decidido que me es mas sencillo,para mi, hacer una secuencia de "if, else if", comparando la variable "tipo", con los ditintos nombres de los arrays, uno por uno, pues tengo que escribir practicamente lo mismo, y a mi me queda mas claro; yo vengo de una programacion mas tradicional.

En cuanto a lo de los iconos, tienes razon es un combobox, lo cambiare por un listbox, pero aun asi, como yo tengo flash mx 2004, no encuentro lo de "links", en el boton derecho del raton, ¿como lo resuelvo?

un saludo

Por federico

26 de clabLevel



 

unknown
Citar            
MensajeEscrito el 17 May 2004 07:43 am
lo del linkaje es:

Abres la librería: CTRL + L, F11, etc...

Seleccionas el símbolo que quieres adjuntar al nuevo MC (es decir, tu icono)

Le das clic contrario desde la librería y seleccionas "Linkaje" (Vinculación)

Te aparece una ventana con 2 cajas de texto y algunas opciones

Seleccionas Exportar para ActionScript

Con eso se te activa la caja de arriba y allí escribes el nombre o cadena que lo identificará, por ejemplo, "icono" -> sin las comillas :D.

....ahora sí, escribes lo que te dijo F

Código :

comboX.iconField="icono";
Suerte

Por gersonm

Claber

2238 de clabLevel

12 tutoriales
1 articulo
5 ejemplos

Genero:Masculino   Desarrollador de GAIA

Al otro lado de la mira

unknown
Citar            
MensajeEscrito el 17 May 2004 08:48 am
Gracias tio, lo provare, y mas adelante ya te molestare con alguna otra cosa.

Un saludo.

Por federico

26 de clabLevel



 

unknown
Citar            
MensajeEscrito el 17 May 2004 03:06 pm
aquí estaremos esperando

Por gersonm

Claber

2238 de clabLevel

12 tutoriales
1 articulo
5 ejemplos

Genero:Masculino   Desarrollador de GAIA

Al otro lado de la mira

unknown
Citar            
MensajeEscrito el 17 May 2004 03:56 pm
Bueno pues ya estoy aqui de nuevo.

Te pongo todo el codigo que llevo creado hasta ahora, como puedes ver ahora estoy intentando que cuando se seleccione un elemento de la lista, me aparezca una copia del icono en el escenario, el cual pretendo manipular con _rotation, y con startDrag()



var TIPOS_CLIP:Array = [{label:"ESCUDOS DE FUTBOL", data:"ESCUDOS_FUTBOL"}, {label:"COMPLEMENTOS DE BAÑO", data:"COMPLEMENTOS_BAÑO"}, {label:"COMPLEMENTOS DE CABEZA", data:"COMPLEMENTOS_CABEZA"}, {label:"COMPLEMENTOS VARIOS", data:"COMPLEMENTOS_VARIOS"}];

var CLIPs_ESCUDOS_FUTBOL:Array = [{label:"Atco_Madrid", icono:"Atco_Madrid", data:"Atco_Madrid"}, {label:"R_Madrid", icono:"R_Madrid", data:"R_Madrid"}];

var COMPLEMENTOS_BAÑO:Array = [{label:"Bañador", icono:"Objetos_Complementos/Bañador", data:"Bañador"}, {label:"Biquini", icono:"Objetos_Complementos/Biquini", data:"Biquini"}];

COMBO.dataProvider = TIPOS_CLIP;

COMBO.open();

ENVIO_TIPO_CLIP = new Object();

ENVIO_TIPO_CLIP.change = function(CARGADOR) {

var tipo = CARGADOR.target.selectedItem.data;

LISTA.iconField = "icono";

if (tipo == "ESCUDOS_FUTBOL") {

LISTA.dataProvider = CLIPs_ESCUDOS_FUTBOL;

} else if (tipo == "COMPLEMENTOS_BAÑO") {

LISTA.dataProvider = COMPLEMENTOS_BAÑO;

}

};

COMBO.addEventListener("change", ENVIO_TIPO_CLIP);

INSERTADOR_CLIP = new Object();

INSERTADOR_CLIP.change = function(INSERTADOR) {

var clip = INSERTADOR.target.selectedItem;

mc = _root.createEmptyMovieClip("clip", 1);

mc._x = 250;

mc._y = 300;

mc.loadMovie("clip");

};

LISTA.addEventListener("change", INSERTADOR_CLIP);



Pero esto no funcion.

¿Puedes decirme por que?

Un saludo

Por federico

26 de clabLevel



 

unknown

 

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