Comunidad de diseño web y desarrollo en internet online

Ayuda scroll con textos xml

Citar            
MensajeEscrito el 16 May 2008 11:16 am
Hola a todos,

tengo un pequeño problemilla que no logro resolver. Lo que pretendo hacer es que se me muestren una serie de cursos que recojo de un xml, pero como son muchos necesito un scroll, entonces, basándome en el tutorial:
http://www.cristalab.com/tutoriales/185/flash-con-base-de-datos-access-y-asp---parte-2

He hecho lo siguiente:

Código :

datos_bd.onLoad=function(exito){
   if(exito){
      trace(\"principio\");
      var raiz=this.firstChild;
      var hijos=this.firstChild.childNodes.length;
      if(hijos!=0){
      _root.for_cursos.createEmptyMovieClip(contenedor,300);
      for(var n=0;n<hijos;n++){
           _root.for_cursos.contenedor[curso].duplicateMovieClip(\"curso\"+n,n);
          _root.for_cursos.contenedor[\"curso\"+n]._x = _root.for_cursos.contenedor[\"curso\"+(n-1)]._x+(separacionHorizontal);
          _root.for_cursos.contenedor[\"curso\"+n]._y = _root.for_cursos.contenedor[\"curso\"+(n-1)]._y+(separacionVertical);
            
          _root.for_cursos.contenedor[\"curso\"+n].nombre.text=raiz.childNodes[n].attributes.nombre;
          _root.for_cursos.contenedor[\"curso\"+n].fechaI.text=raiz.childNodes[n].attributes.fechaI;
          _root.for_cursos.contenedor[\"curso\"+n].fechaF.text=raiz.childNodes[n].attributes.fechaF;
         trace(raiz.childNodes[n].attributes.nombre);
         //textoCurso.fechas.text=raiz.childNodes[n].attributes.fechas;
         /*noti.onRelease = function (){
            this._parent.obtenerDetalle(this.id);
         }   */         
      }
      }else{//no tiene hijos
      }
      //detalles.htmlText=\"Elija un usuario en el menú de la izquierda.\";
      //_root.for_cursos.scroll_mc.contenedor.duplicateMovieClip(\"contenedor2\",hijos-1);
   }else{
      detalles.htmlText=\"<b>Error al cargar los datos</b>\";
   }
}

// acceso a la base de datos para obtener un listado de usuarios
datos_bd.load(\"http://localhost/valores/cargaCursos.php\");



Pero no logro que me aparezcan los datos. El error está al meter el clip contenedor, pq antes si conseguía que se vieran los datos. Alguien sabe dónde puede estár el error?
Gracias por vuestra colaboración.

Por merce

15 de clabLevel



 

firefox
Citar            
MensajeEscrito el 16 May 2008 05:06 pm
Te faltan las comillas en el nombre de instancia de la película nueva:

Código :

root.for_cursos.createEmptyMovieClip("contenedor",300);

Por The Fricky!

Presidente

6168 de clabLevel

3 tutoriales
8 articulos

Genero:Masculino   Bastard Operators From Hell Héroes

Piccola Venezia...

firefox
Citar            
MensajeEscrito el 18 May 2008 06:18 pm
Gracias The Fricky, ya lo he cambiado, pero sigue sin funcionar...

Creo que no lo que no hago bien es o duplicar el clip o meter los clips q duplico en el contenedor.

Explico esto un poco: El clip curso contiene tres textos dinámicos y este clip se duplica según el número de registros de la tabla xml. Estos clips duplicados tengo que meterlos en un contenedor para aplicarle un scroll. La carga de datos es correcta hasta que intento crear el clip contenedor y meter los duplicados dentro.

Alguien puede ver donde me estoy equivocando?

Por merce

15 de clabLevel



 

firefox
Citar            
MensajeEscrito el 18 May 2008 10:00 pm
En una matriz asociativa (del tipo Matriz[nombre_de_elemento]) debes pasar como parámetro el nombre del elemento. Tú estás enviando la referencia:

Código :

_root.for_cursos.contenedor[curso].duplicateMovieClip("curso"+n,n);

Como "curso" es el nombre de instancia del objeto, no le estás esnviando el nombre sino la referencia.
En otras palabras, también te faltan comillas allí, así que (al menos en teoría) no debería estarte duplicando el movieclip. Prueba con:

Código :

_root.for_cursos.contenedor["curso"].duplicateMovieClip("curso"+n,n);

Por The Fricky!

Presidente

6168 de clabLevel

3 tutoriales
8 articulos

Genero:Masculino   Bastard Operators From Hell Héroes

Piccola Venezia...

firefox
Citar            
MensajeEscrito el 19 May 2008 08:52 am
Gracias, siempre se aprenden cosas, pero lo he arreglado y sigue igual.

La verdad es que ya no se muy bien por donde seguir dándole vueltas... No se si esta es la forma en que debo hacerlo...

No se si el fallo puede estar quizás en la parte en que recogo los datos desde el php, se puede hacer esto?:

_root.for_cursos.contenedor[\"curso\"+n].nombre.text=raiz.childNodes[n].attributes.nombre;

_root.for_cursos.contenedor[\"curso\"+n].fechaI.text=raiz.childNodes[n].attributes.fechaI;

_root.for_cursos.contenedor[\"curso\"+n].fechaF.text=raiz.childNodes[n].attributes.fechaF;

Alguien puede proponerme si no, otra forma de hacerlo?

Por merce

15 de clabLevel



 

firefox
Citar            
MensajeEscrito el 19 May 2008 11:40 am
Vale, ya he conseguido cargar los duplicados en el contenedor, pongo el código más abajo por si alguien lo necesita. Pero ahora no me funciona la máscara ni los botones del scroll, me da el siguiente error:

Error: No se pudo efectuar la acción \'with\' porque el objeto especificado no existe.


Este es el código de la máscara:

Código :

_root.createEmptyMovieClip(\"mc_msk\", 301);
mc_msk._x = 180;
mc_msk._y = 320;

with (mc_msk) {
beginFill(0xff0000,50);
lineStyle(1,0x00ff00,100);
lineTo(200,0);
lineTo(200,200);
lineTo(0,200);
lineTo(0,0);
endFill();
}

_root.contenedor.setMask(mc_msk);
}


Y este el de los botones:

Código :

on (release) {
if (_root.contenedor._y < _root.mc_msk._y) {
_root.contenedor._y += _root.intSeparar;
}
}


Código :

on (release) {
if (_root.contenedor._y > _root.mc_msk._height - _root.contenedor._height) {
_root.contenedor._y -= _root.intSeparar;
}
}

Puede alguien ayudarme, sé que os estoy pidiendo mucho pero como os dije, estoy empezando y me resulta un poco complicado. Muchas gracias por vuestra paciencia.

Este es el código que a mi me ha funcionada, por si alguien lo necesita, para cargar los datos en el contenedor:

Código :

System.useCodepage = true;
// Creamos el objeto que guardará los datos del archivo XML
cursosXML = new XML();
cursosXML.ignoreWhite = true;
//Cargamos el archivo XML en el objeto recién creado
cursosXML.load(\"http://localhost/valores/cargaCursos.php\");
// Cuando termina de cargar lo mandamos a organizar para poder mostrar los datos
cursosXML.onLoad = organizarXML;
stop();
// Esta es la función encargada de armar los Arrays a partir de los datos
function organizarXML() {

curso = new Array();

for (yy=0; yy<cursosXML.firstChild.childNodes.length; yy++) {

obj = new Object();
obj.nombre = cursosXML.firstChild.childNodes[yy].attributes.nombre;
obj.fechaI = cursosXML.firstChild.childNodes[yy].attributes.fechaI;
obj.fechaF = cursosXML.firstChild.childNodes[yy].attributes.fechaF;

curso.push(obj);
delete obj;
}
// Mandamos los datos ya organizados a que se muestren (la función está más abajo)
mostrarDatos();
}


function mostrarDatos() {

_root.createEmptyMovieClip(\"contenedor\", 300);
_root.contenedor._x = 180;
_root.contenedor._y = 320;

separacionHorizontal=10;
separacionVertical=45;
intSeparar=50;

intPosicion = 0;

for (aa=0; aa<curso.length; aa++) {
_root.contenedor.attachMovie(\"curso\", \"curso\"+aa, aa);
_root.contenedor[\"curso\"+aa]._y = (intPosicion * separacionVertical);
_root.contenedor[\"curso\"+aa]._x =_root.contenedor[\"curso\"+(aa-1)]._x+(separacionHorizontal);
_root.contenedor[\"curso\"+aa].nombre.text = curso[aa].nombre;
_root.contenedor[\"curso\"+aa].fechaI.text = curso[aa].fechaI;
_root.contenedor[\"curso\"+aa].fechaF.text = curso[aa].fechaF;

intPosicion++;
}

Por merce

15 de clabLevel



 

firefox
Citar            
MensajeEscrito el 25 May 2008 11:23 am
ok, le faltaba el _root. a la máscara gracias a todos.

Por merce

15 de clabLevel



 

firefox

 

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