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

ScrollBar y varias instancias a Duplicate Movie Clip

Estas en el tema de ScrollBar y varias instancias a Duplicate Movie Clip en el foro de Flash y Actionscript en Foros del Web. Hola a todos, estoy empezando con flash y estoy verde, verde. Os comento mi caso a ver si podeis echarme una mano. Necesito mostrar un ...
  #1 (permalink)  
Antiguo 12/05/2008, 14:05
 
Fecha de Ingreso: junio-2005
Mensajes: 33
Antigüedad: 19 años, 5 meses
Puntos: 0
ScrollBar y varias instancias a Duplicate Movie Clip

Hola a todos,

estoy empezando con flash y estoy verde, verde. Os comento mi caso a ver si podeis echarme una mano. Necesito mostrar un listado de cursos que cargo a través de un xml. Lo que hago es un duplicateMovieClip, que me crea instancias nuevas para cada registro de la tabla xml.
El caso es que son muchos datos y necesito un scroll. He buscado mucho y he probado unos cuantos pero el problema yo creo es que no se montarlos bien o algo así. He probado a hacerlo con una máscara pero esta no funciona (y ya incorporé los carácteres necesarios).
¿Alguien podría decirme si ha usado algún scroll con duplicateMovieClip facilito y que le haya salido bien? ¿O quizás explicarme como puedo yo crear uno no muy complicado?

Muchas gracias a todos, seguro que me servís de gran ayuda.
  #2 (permalink)  
Antiguo 12/05/2008, 15:07
 
Fecha de Ingreso: abril-2008
Mensajes: 613
Antigüedad: 16 años, 7 meses
Puntos: 22
Re: ScrollBar y varias instancias a Duplicate Movie Clip

Hola,
Si todos los DUPLICADOS están dentro de un CLIP y ése clip es el que está vinculado al SCROLL, debería de funcionar. En principio, el SCROLL hace de máscara y el problema que debes tener es que no te aparecen los texto.
Si esto es así, debes saber que FLASH (por lo menos hasta la versión 8) no muestra los textos SIN SUAVIZADO cuando están dentro de una máscara. Debes poner el campo de texto con suavizado para animación. Por supuesto, tienes que incluir las fuentes.
Tampoco se te mostrarán los textos sin los estás cargando como htmlText en los campos.

Saludos
  #3 (permalink)  
Antiguo 14/05/2008, 13:28
 
Fecha de Ingreso: junio-2005
Mensajes: 33
Antigüedad: 19 años, 5 meses
Puntos: 0
Re: ScrollBar y varias instancias a Duplicate Movie Clip

hola, muchas gracias por responder, he comprobado todo lo que me has dicho del texto pero parece que eso no es. Creo que el problema está en otro sitio. Yo antes no me creaba un clip que contuviera todos los duplicados. Entonces he hecho lo siguiente: cuando se cargan los datos, me creo un mc con createEmptyMovieClip y cada vez que lleno una instancia del texto que contiene los datos, la meto dentro del clip que me he creado, así:

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.scroll_mc.createEmptyMovieClip(contenedor,hijos-1);

		for(var n=0;n<hijos;n++){
			
			 _root.for_cursos.scroll_mc.curso.duplicateMovieClip("curso"+n,n);
			 _root.for_cursos.scroll_mc.contenedor["curso"+n]._x = _root.for_cursos.scroll_mc.contenedor["curso"+(n-1)]._x+(separacionHorizontal);
			 _root.for_cursos.scroll_mc.contenedor["curso"+n]._y = _root.for_cursos.scroll_mc.contenedor["curso"+(n-1)]._y+(separacionVertical);
				
			 _root.for_cursos.scroll_mc.contenedor["curso"+n].nombre.text=raiz.childNodes[n].attributes.nombre;
			 _root.for_cursos.scroll_mc.contenedor["curso"+n].fechaI.text=raiz.childNodes[n].attributes.fechaI;
			 _root.for_cursos.scroll_mc.contenedor["curso"+n].fechaF.text=raiz.childNodes[n].attributes.fechaF;
			

		}
		}else{//no tiene hijos
		}
		
	}
}

Entonces vinculo el scroll al clip contenedor, pero ni aparece el texto, ni funciona el scroll. Estoy volviendome un poco loca...

Espero que podais ayudarme, por favor.
  #4 (permalink)  
Antiguo 18/05/2008, 12:41
 
Fecha de Ingreso: junio-2005
Mensajes: 33
Antigüedad: 19 años, 5 meses
Puntos: 0
Respuesta: ScrollBar y varias instancias a Duplicate Movie Clip

Hola,

me he dado cuenta que el problema creo que lo tengo al meter los duplicados en el clip que se vincula al scroll

Tengo un clip llamado "curso" que contiene 3 textos dinamicos y que se tiene que duplicar segun el numero de registros que tiene el xml. Estos duplicados los meto en el clip contenedor y ahi viene el problema. Os muestro el nuevo código por si alguien sabe que puedo estar haciendo mal. Muchas gracias a todos.

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.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;
		}
		}else{//no tiene hijos
		}
	}else{
		detalles.htmlText="<b>Error al cargar los datos</b>";
	}
}
datos_bd.load("http://localhost/valores/cargaCursos.php");
  #5 (permalink)  
Antiguo 19/05/2008, 05:35
 
Fecha de Ingreso: junio-2005
Mensajes: 33
Antigüedad: 19 años, 5 meses
Puntos: 0
Respuesta: ScrollBar y varias instancias a Duplicate Movie Clip

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++;
}
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 17:12.