Comunidad de diseño web y desarrollo en internet online

ASIGNAR SWF DISTINTOS A LOS ITEMS DEL COMBOBOX CON XML

Ir a página 1, 2  Siguiente

Foros de discusión > Flash

Citar            
MensajeEscrito el 18 Ago 2008 01:47 am
Hola a todos. He leido un poco aqui en cristalab y tb en la ayuda de flash pero no lo tengo
nada claro.Ok para llenar el combo a partir de un archivo xml , pero . Pregunta : sin usar la opción en parametros data, como asigno los swf a cada item, como puedo hacer para relacionar el data a cada item del xml y que el cliente pueda ir metiendo nuevos item en el xml que al ser seleccionados carguen en el clip del escenario el swf correspondiente que tambien pondra el cliente. No me aclaro . con otro xml? en el mismo xml . No sé si es una tonteria pero a mi de momento me supera. Muchisimas gracias si alguien se molesta en ayudarme.

Por klandestino

30 de clabLevel



Genero:Masculino  

lago de garda

firefox
Citar            
MensajeEscrito el 18 Ago 2008 02:23 am
Lo que debes de poner en el comboBox son datos no SWFs, tu XML debería tener en cada nodo un dato y el SWF que abre, después el XML lo conviertes a un arreglo bidimensional de objetos con los datos como "label" y los links de los SWF como "data" y y se lo asignas al comoBox como dataProvider, y ya tendrías tu problema resuelto, cada vez que cliquees un item este podría llamar a una función pasándole como parámetro el link.

Si tienes dudas en lo que te he explicado en palabras, empieza poco a poco, crea tu XML y leélo desde flash y cuando tengas esto hecho te puedo ir ayudando con lo demás.

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 18 Ago 2008 02:48 am
muchas gracias , no sé si te entendí bien pero ahora mismo empiezo a probar.

Por klandestino

30 de clabLevel



Genero:Masculino  

lago de garda

firefox
Citar            
MensajeEscrito el 18 Ago 2008 04:17 am
oye gracias por tu ayuda pero no se si estoy cansado o que debo estudiar mucho mas pero me puedes poner un ejemplo
de archivo xml en el que en el nodo este tb el link, estoy poniendo esto
<HAZIENDAS>
<NEGOZIO ='MARCOL'peli='movieA.swf'/>
<NEGOZIO ='NEGOZIO2'peli='movieB.swf'/>
<NEGOZIO ='NEGOZIO3'peli='movieC.swf'/>
<NEGOZIO ='NEGOZIO4'peli='movieD.swf'/>
<NEGOZIO ='NEGOZIO5'peli='movieE.swf'/>
</HAZIENDAS>
Y SI ESTO ESTA BIEN COMO HARIAS EL SCRIPT EN AS2.ESTOY SIGUIENDO EL EJEMPLO DE CRISTALAB
Y AHORA NO ME SALE NI LA LISTA.GRACIAS POR TU AYUDA ,ME VOY A VOLVER A LEER LA AYUDA DE FLASH PORQUE NO ME ENTERO BIEN.A ESTUDIAR TOCA

Por klandestino

30 de clabLevel



Genero:Masculino  

lago de garda

firefox
Citar            
MensajeEscrito el 18 Ago 2008 09:41 am
Esto sería un ejemplo:

Código XML :

<haciendas>
     <negocio nombre='MARCOL' peli='movieA.swf'/>
     <negocio nombre='NEGOZIO2' peli='movieB.swf'/>
     <negocio nombre='NEGOZIO3' peli='movieC.swf'/>
     <negocio nombre='NEGOZIO4' peli='movieD.swf'/>
     <negocio nombre='NEGOZIO5' peli='movieE.swf'/>
</haciendas>

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 18 Ago 2008 09:43 am
Intenta siguiendo los tutoriales leer este XML en flash y acceder a sus nodos y después cuando tengas esto hecho postea las dificultades que vayas teniendo para realizar la otra parte.

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 19 Ago 2008 05:01 pm
Hola Elchininet , me estoy volviendo loco con esto pero a ver si mi tenacidad y tu ayuda van consiguiendo salvar un poco mi falta de conocimiento.estudiando la ayuda de flash comienzo a comprender un poco más esto.pero no mucho por lo que veo porque mira que lio:



video = new XML();
obj_xml.ignoreWhite = true;
video.onLoad = function(exito) {
if(exito) {
valido = video.firstChild.childNodes[0].length;//aqui le digo que explore el xml ,es correcto?
nombress = new Array(valido);
pelicc = new Array(valido);


for (i=0; i<valido; i++){
nombress[i] = video.firstChild.childNodes[i].attributes.nombre;//aqui se supone que guardo en una variable el contenido de label?
pelicc[i] = video.firstChild.childNodes[i].attributes.peli;//" " ... el contenido data ?
}

llenarCombo();
}
else{
trace("No se pudo cargar el XML");
}
}
video.load("video.xml"); // cargo el objeto xml creado antes


function fullCombo(){ // pongo el combo en escenario

attachMovie("ComboBox", "micombo", 1);


micombo.setSize(170, 22);
micombo.dropdownWidth = 200;

losDatos = new Array(); // relleno la lista ?
micombo.dataProvider = losDatos;

for (i=0; i<valido.length; i++){
losDatos.addItem({ label: nombre[i], data: peli[i] }); // declaro un bucle para examinar el xml y actualizar cte el combo? deberia poner el nombre de las variables nombress, pelicc ?
}
}
// aqui deberia ver el combo en pantalla . Pero no. ¿?

micombo.addEventListener("change", alSeleccionar);
listener = {}
listener.change = function (evt:Object) {

micombo.addItem({ label: "i" , data: "i"})
holder.loadmovie(+evt.target.selectedItem.data)
}
// aqui no entiendo ya nada . ¿?


GRACIAS por tu ayuda, te lo pongo asi para realmente explicar lo que creo que hago y que me digas que estoy haciendo en realidad. DESESPERADO YA, me dá script correcto pero no asoma ni el combo. ¿ esta todo mal?

Por klandestino

30 de clabLevel



Genero:Masculino  

lago de garda

firefox
Citar            
MensajeEscrito el 19 Ago 2008 07:31 pm
Dale formato a los códigos para que sean legibles, son muy difícil de leer si no lo haces.

Tienes que seguir mi consejo e ir poco a poco, no trates de hacer todo de una sola vez, sino que haces una parte pruebas a ver si todo va bien y entonces pasas al siguiente paso.

No se por qué le pones la propiedad de ignoreWhite a una variable obj_xml que ni siquiera has creado, debes ponérsela al xml que habías creado en la línea anterior:

Código ActionScript :

var video:XML = new XML();

video.ignoreWhite = true;

video.onLoad = function(success:Boolean):Void{

    if(success){

        trace(this);

    }

}

video.load("video.xml")



Prueba con el anterior código y serciórate de que el XML ha sido cargado sin problemas, entonces pasaremos al próximo paso, que será guardar todos los datos en un arreglo bidimensional.

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 20 Ago 2008 10:43 am
Elchininet , por fin entendí. Estoy muy contento. en un ratito te pongo lo que hice y si te parece bien continuamos,,ja ja ja . AL FIN aparece el combo tal y como has puesto los item .

Por klandestino

30 de clabLevel



Genero:Masculino  

lago de garda

firefox
Citar            
MensajeEscrito el 20 Ago 2008 02:09 pm
HOLA Elchinimet , he seguido tu consejo. con los tutoriales de cristal. y con la ayuda de flash para saber porque se pone lo que se pone. Te pongo lo que he puesto y lo que creo que significa , si te parece bien continuamos.

video = new XML();
video.ignoreWhite = true;
video.onLoad = function (success:Boolean){
if (success){

largo = video.firstChild.childNodes.length;
nombres = new Array(largo);
pelis = new Array(largo);


for (i=0; i<largo; i++){
nombres[i] = video.firstChild.childNodes[i].attributes.nombre;
pelis[i] = video.firstChild.childNodes[i].attributes.peli;
}

llenarCombo();
}
else{
trace("No se pudo cargar el XML");
}
}
video.load("video.xml");




function llenarCombo(){

attachMovie("ComboBox", "micombo", 1);


micombo.setSize(170, 22);





losDatos = new Array();
micombo.dataProvider = losDatos;


for (i=0; i<nombres.length; i++){
losDatos.addItem({ label: nombres[i], data: pelis[i] });
}
}


a ver como arreglamos lo demas ,

Por klandestino

30 de clabLevel



Genero:Masculino  

lago de garda

firefox
Citar            
MensajeEscrito el 20 Ago 2008 02:31 pm
Bueno entonces pasamos a crear un arreglo bidimensional con todos los datos:

Código ActionScript :

//---Declarar el objeto XML

var video:XML = new XML();

video.ignoreWhite = true;

video.onLoad = function(success:Boolean):Void  {

   if (success) {

      var datos:Array = new Array();
      var nodos:Array = this.firstChild.childNodes;
      var total:Number = nodos.length;
      
      for(var i:Number = 0; i < total; i++){
         
         datos.push({nombre:nodos[i].attributes.nombre, peli:nodos[i].attributes.peli});
         
      }
      
      //---Probar si se cargaron bien los datos en el arreglo bidimensional
      trace(datos[0].nombre);
      trace(datos[1].peli);
   }
};
video.load("video.xml");


He situado al final dos trace para comprobar si el arreglo ha cargado los datos correctamente, si todo está bién seguimos con el próximo paso insertar los datos en el comboBox.

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 20 Ago 2008 11:42 pm
Bueno , primero de todo gracias por tu paciencia .Debo de ser desesperante .
ok , ahora consigo poner el combo pero se queda en blanco. asi que no le llegan los datos , pero no entiendo pq.
Ahora estaba probando en relacion a lo anterior pero no lo consigo. pongo esto:

function llenarcombo() {

attachMovie("ComboBox" , "micombo", 1);

micombo.setsize (170,22);


losDatos = new Array(),
micombo.dataprovider = losDatos;

for (i=0 ; i<datos ; i++){
losDatos.addItem({ label: nombre[i] , data: peli[i] });
}

He probado un monton de variantes en las dos ultimas lineas pero sin el resultado esperado

Por klandestino

30 de clabLevel



Genero:Masculino  

lago de garda

firefox
Citar            
MensajeEscrito el 20 Ago 2008 11:45 pm
Recuerda que todo es paso a paso, necesito saber que hasta donde llegamos que fue hacer el arreglo no hay problemas, por eso situé el trace, si te llegan los datos del xml podemos continuar.

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 20 Ago 2008 11:59 pm
te agradezco la paciencia, y sobretodo que de esta manera es como se aprende, lo sé . Lo que pasa es que es mi primer trabajo y viendo que no me entero de mucho todavia me desespero pq deberia entregar esto el lunes. Y eso pq unna vez resuelto esto aún tenia que preguntar otra cuestión de la que no he visto nada en crist. Disculpa mi prisa. me voy a hacer una larga taza de café y sigo.ahora estaba leyendo la ayuda de flash para saber pq habias puesto push antes. ahora regreso.Gracias otra vez

Por klandestino

30 de clabLevel



Genero:Masculino  

lago de garda

firefox
Citar            
MensajeEscrito el 21 Ago 2008 11:41 am
Push inserta un valor en una arreglo en la última posición, así que es lo mismo que decir:

Código ActionScript :

datos[i] = new Object();
datos[i].nombre = nodos[i].attributes.nombre
datos[i].peli = nodos[i].attributes.peli;


De la otra forma con push es mucho más cómodo, ahora necesito que cambies una cosa que no tuve en cuenta, en vez de:

Código ActionScript :

datos.push({nombre:nodos[i].attributes.nombre, peli:nodos[i].attributes.peli});


Escribe:

Código ActionScript :

datos.push({label:nodos[i].attributes.nombre, data:nodos[i].attributes.peli});


Esta es la correcta estructura que debe tener.

Todavía no me has dicho si tu XML se guarda bien en el arreglo, necesito saber si no hay ningún problema para continuar.

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 21 Ago 2008 11:52 am
tb he probado asi entre mil formas mas pero nada
for(i =0; i< total.childnodes. lenght o push ; i++) {
var datos:childnodesArray = total.childnodes[i];
label[i]= nodos.attributes ("nombre");
data[i]= nodos.attributes ("peli");
losDatos.additem (label ("nombre", data("peli" )}; }

Por klandestino

30 de clabLevel



Genero:Masculino  

lago de garda

firefox
Citar            
MensajeEscrito el 21 Ago 2008 11:58 am
antes en salida el trace marcaba lo que has puesto pero ahora me da undefined. esto sin poner el combo en escenario

Por klandestino

30 de clabLevel



Genero:Masculino  

lago de garda

firefox
Citar            
MensajeEscrito el 21 Ago 2008 12:03 pm
si pongo el combo como antes delc arreglo se pone en escena vacio pero ahora el trace no es como has puesto sino que ambos dan undefined

Por klandestino

30 de clabLevel



Genero:Masculino  

lago de garda

firefox
Citar            
MensajeEscrito el 21 Ago 2008 12:06 pm
primero lo haciamos como una carga normal de xml . ok
lo sustitui todo por el arreglo.
ahora modificando la linea da undefined en salida . pero esto no deberia salir solo si es editable?

Por klandestino

30 de clabLevel



Genero:Masculino  

lago de garda

firefox
Citar            
MensajeEscrito el 21 Ago 2008 12:51 pm
Claro, como cambiamos lo siguiente:

Código ActionScript :

datos.push({label:nodos[i].attributes.nombre, data:nodos[i].attributes.peli});  


Ahora se debe acceder a los datos de esta manera:

Código ActionScript :

trace(datos[0].label);  
trace(datos[1].data);


No se puede acceder a "nombre" y "peli" porque no existen, pruébalo y me dices.

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 21 Ago 2008 01:04 pm
toda la razón tienes elchininet. pero sigo con el combo en el escenario vacio.Sigo probando.

Por klandestino

30 de clabLevel



Genero:Masculino  

lago de garda

firefox
Citar            
MensajeEscrito el 21 Ago 2008 01:16 pm
function llenarCombo(){}

attachMovie("ComboBox", "micombo", 1);


micombo.setSize(170, 22);





losDatos = new Array();
micombo.dataProvider = losDatos;

for(var i:Number = 0; i < total; i++){
losDatos.addItem({label:nodos[i].attributes.nombre, data:nodos[i].attributes.peli});
}


Me sale el combo al escenario vacio. estoy muy equivocado?

Por klandestino

30 de clabLevel



Genero:Masculino  

lago de garda

firefox
Citar            
MensajeEscrito el 21 Ago 2008 01:18 pm
pq me dá error si

function llenarCombo(){} si no cierro aqui el corchete me dice error

attachMovie("ComboBox", "micombo", 1);

Por klandestino

30 de clabLevel



Genero:Masculino  

lago de garda

firefox
Citar            
MensajeEscrito el 21 Ago 2008 01:29 pm
Vuelvo a hacer una pregunta que estoy haciendo hace rato y no me has respondido y mientras tanto seguimos parados:


Todavía no me has dicho si tu XML se guarda bien en el arreglo, necesito saber si no hay ningún problema para continuar.


Si no se si esto ha salido bien no podemos continuar, no vamos a entrar en nada con el combo si aún no se si el XML se ha leído correctamente.

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 21 Ago 2008 01:38 pm
perdona , con si se carga bien el arreglo que quieres decir, si es si obtengo de salida los traces corrects ,si. el primer label y el seg data.si

Por klandestino

30 de clabLevel



Genero:Masculino  

lago de garda

firefox
Citar            
MensajeEscrito el 21 Ago 2008 02:10 pm
Entonces pasamos a insertar el comboBox y darle acciones:

Código ActionScript :

//---Declarar el objeto XML

var video:XML = new XML();

video.ignoreWhite = true;

video.onLoad = function(success:Boolean):Void  {

   if (success) {

      var datos:Array = new Array();
      var nodos:Array = this.firstChild.childNodes;
      var total:Number = nodos.length;
      
      for(var i:Number = 0; i < total; i++){
         
         datos.push({label:nodos[i].attributes.nombre, data:nodos[i].attributes.peli});
         
      }
      
      //---Situar el combo en el escenario
      var myCombo = _root.attachMovie("ComboBox", "micombo", _root.getNextHighestDepth());
      
      //---Darle las medidas y coordenadas deseadas
      
      myCombo.setSize(170, 22);
      myCombo.move(100, 100);
      
      myCombo.dataProvider = datos;
      
      //---Darle acciones al comboBox
      
      var listener:Object = new Object();
      
      listener.change = function(obj:Object) {
         
         trace("puedes mandar a abrir el movie " + obj.target.selectedItem.data);
       
      };
      
      myCombo.addEventListener("change", listener)
      
   }
};
video.load("video.xml");


Pruébalo y si no funciona me lo dices para detectar el problema.

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 21 Ago 2008 03:14 pm
gracias,ahora debo salir pero por la noche tengo mi cita ineludible con cristal. si me sale bien con tu codigo te pongo ya mi siguiente pregunta que voy a postear al acabar esto , y es que no he visto tutor. y supongo que como yo seremos muchos novatos con dudas , he utilizado el componente photoflow y quiero saber si es posible hacer una especie de carrito de compra, solo para que elarticulo de determinadas fotos seleccionadas por el usuario queden registradas en el formulario que debo hacer para que envien .pero primero probaar tu codigo.GRACIAS elchininet. no sé sin ti que haria con todo esto.hasta la noche pues.

Por klandestino

30 de clabLevel



Genero:Masculino  

lago de garda

firefox
Citar            
MensajeEscrito el 21 Ago 2008 09:21 pm
Bueno un par de dudas ; porque mycombo .move(100,100) ,notifica a los detectores que el combo se ha movido. esto se pone en prevision de los distintos tamaños en que puede ser reproducido?

no acabo de entender pq has puesto getnexthighestdepth ,

cuando se pone listener.change ... pq +obj.target... no acabo de entender su funcion. gracias

Por klandestino

30 de clabLevel



Genero:Masculino  

lago de garda

firefox
Citar            
MensajeEscrito el 22 Ago 2008 02:09 am
Solo te puse un ejemplo, lo más seguro es que no quieras tu combo en las coordenadas (0, 0) por lo tanto si quieres ponerlo es unas coordenadas específicas utilizas move(x, y).

getNextHighestDepth() toma el valor de nivel (depth) más alto que hay dentro de un MovieClip, de esta manera no hay que estar cuidando de si este nivel está siendo utilizado, sino que cada vez que añadas un clip utilizando este parámetro el clip se situará en el nivel superior.

Y la tercera pregunta, cuando en el comboBox se presiona un item la función del objeto que está sirviendo como listener al combo se ejecuta, ahora esta función captura un parámetro que es un objeto que entre sus propiedades está target que es el combo que ejecuta la función, bueno con decir obj.target se está refiriendo a la instancia del comboBox, por lo tanto es lo mismo que decir myCombo.selectedItem.data.

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 22 Ago 2008 06:53 am
hola he puesto un clip vacio "holder" en escena pero nada.
que le digo para que salga el video del item seleccionado en holder
estaba probando +obj.target.selectedItem.data.holder; pero nada.

Por klandestino

30 de clabLevel



Genero:Masculino  

lago de garda

firefox
Ir a página 1, 2  Siguiente
Foros de discusión > Flash

 

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