Ver Mensaje Individual
  #1 (permalink)  
Antiguo 23/09/2005, 00:40
EfRas
 
Fecha de Ingreso: mayo-2004
Mensajes: 18
Antigüedad: 20 años, 6 meses
Puntos: 0
cambiar sentido de scroll

bueno tengo un scroll en flash realmente muy bueno que toma las noticias de un xml, esta echo en flash y utiliza vinculos se ver realmente genial lo unico malo es que el scroll es de abjo hacia ariba eso quiere decir que primero leo el final de la noticia y de ultimo veo el titulo entonces lo que quiero obiamente es cambiarlo que valla de arriba hacia abajo, este scroll funciona con action script y estado moviendole cosas y lo unico que he conseguido es que se vallann hacia arriba paro solo una ves al llegar a la ultima noticia se queda en blanco aqui les pongo el code si alguien puede ayudar de antemano gracias
Código:
stop();

//Cargar XML de las noticias
noticias = new XML();
noticias.ignoreWhite = true;
noticias.onLoad = function (){

	//Porcentajes y esas cosas
	totalxml = noticias.getBytesTotal();
	cargadoxml = noticias.getBytesLoaded();
	porcentajexml = Math.round((cargadoxml/totalxml)*100);

	//Si esta cargado del todo
	if (porcentajexml >= 100) {
		//Borramos el cargando
		removeMovieClip(cargando);
		
		//Shortcuts del XML
		notis_puerto = new Array();
		titulo = new Array();
		urls = new Array();
		
		//Cogemos el numero de noticias
		long = noticias.firstChild.childNodes.length;
		
		cargarCSS();
	}
}

//Atacheamos y posicionamos el "cargando xml"
attachMovie("carga_xml","cargando",2);
cargando._x = 45;
cargando._y = 94;

//Atacheamos la linea de abajo del todo
attachMovie("linea","linea_abajo",5000);
linea_abajo._x = 0;
linea_abajo._y = 329;

//Atacheamos la caja de fondo

//Cargamos XML
noticias.load("noticias.xml");


/*-------------------------------------------------------------------------------*/
/*---------------------   FUNCION PARA CARGAR LA HOJA CSS    --------------------*/
/*-------------------------------------------------------------------------------*/
function cargarCSS(){
	//Creamos la hoja de estilo
	estailo = new TextField.StyleSheet();
	
	//Cuando este cargando...
	estailo.onLoad = function(){
		
		//Porcentajes y esas cosas
		totalcss = estailo.getBytesTotal();
		cargadocss = estailo.getBytesLoaded();
		porcentajecss = Math.round((cargadocss/totalcss)*100);
	
		//Si esta cargado del todo
		if (porcentajecss >= 100) {
			//Borramos el cargando
			removeMovieClip(cargando2);
			
			//Una vez esta cargada la CSS ya podemos saber cuantas lineas hay
			//por cada caja de texto
			
			//Creamos un clip y un campo de texto temporales
			_root.createEmptyMovieClip("temp_mc", 7);
			
			//Al campo de texto le ponemos el mismo tamaño de ancho que va a haber en
			//el de verdad. Le ponemos alto 16, que es lo que mide una linea. Así 
			//podemos saber el número de líneas que tenemos.
			temp_mc.createTextField ("notis_txt",8,-150,-20,268,16);
			
			//Ponemos las propiedades a nuestro campo de texto nuevo
			temp_mc.notis_txt.multiline = true;
			temp_mc.notis_txt.wordWrap = true;
			temp_mc.notis_txt.html = true;
			
			for (i=0; i<long; i++){
				//Cogemos los titulos de las noticias
				titulo[i] = noticias.firstChild.childNodes[i].attributes.titulo;
				
				//Cogemos las urls de las noticias
				urls[i] = noticias.firstChild.childNodes[i].attributes.urls;
	
				//Cogemos el texto y lo ponemos en la caja de texto temporal
				temp_mc.notis_txt.htmlText = "<p class='tit'>"+titulo[i]+"</p><br><p class='txt'>"+noticias.firstChild.childNodes[i].firstChild+"</p>";
				
				//Cogemos el numero de lineas por texto
				notis_puerto[i] = temp_mc.notis_txt.maxscroll-1;
			}
			//Eliminamos el clip temporal
			removeMovieClip(_root["temp_mc"]);
			//Montamos las noticias
			montarNoticias();
		}

	}
	attachMovie("carga_css","cargando2",3);
	cargando2._x = 45;
	cargando2._y = 94;
	estailo.load("noticias.css");
}


/*-------------------------------------------------------------------------------*/
/*---------------------   FUNCION PARA MONTAR LAS NOTICIAS    -------------------*/
/*-------------------------------------------------------------------------------*/
function montarNoticias(){
	par = true;
	for (i=0; i<long; i++){
		//Ponemos la caja
		_root.attachMovie ("caja_info","caja"+i,i*10);
		//Creamos el color
		_root["caja"+i].colorcaja = new Color(_root["caja"+i].fondo.fondocolor);
		//Le damos una altura igual a 16 por el numero de lineas que tenga
		_root["caja"+i].fondo._height = 16 * notis_puerto[i];
		
		//Pintamos la caja
		if (par == true){
			_root["caja"+i].colorcaja.setRGB(0xEEEEEE);
			_root["caja"+i].micolor = "0xEEEEEE";
			par = false;
		}
		else{
			_root["caja"+i].colorcaja.setRGB(0xFFFFFF);
			_root["caja"+i].micolor = "0xFFFFFF";
			par = true;
		}
		
		//Si no existe altura, le damos 0 y asi se posiciona la primera caja
		//en y=0
		if (altura == undefined){
			altura = 0;
		}
		//Si existe, le damos una altura igual, a:
		//"altura acumulada" = "altura acumulada" + "altura anterior clip"
		else{
			altura = altura + _root["caja"+(i-1)].fondo._height;
		}
		
		//Posicionamos la caja
		_root["caja"+i]._x = 0;
		_root["caja"+i]._y = altura;
		
		//Creamos la caja de texto y ponemos sus propiedades
		_root["caja"+i].createTextField("texto_txt",i*37,2,1,268,16 * notis_puerto[i]);
		_root["caja"+i].texto_txt.html = true;
		_root["caja"+i].texto_txt.multiline = true;
		_root["caja"+i].texto_txt.wordWrap = true;
		_root["caja"+i].texto_txt.border = false;
		_root["caja"+i].texto_txt.selectable = false;
		_root["caja"+i].direc_url = urls[i];
		
		//Atacheamos al texto la hoja CSS
		_root["caja"+i].texto_txt.styleSheet = estailo;
		
		//Ponemos el titulo
		_root["caja"+i].texto_txt.htmlText = "<p class='tit'>"+titulo[i]+"</p><br>";

		//Ponemos los textos de las noticias
		_root["caja"+i].texto_txt.htmlText += "<p class='txt'>"+noticias.firstChild.childNodes[i].firstChild+"</p>";
	}
	//Mostramos la pestañita
	attachMovie("pestana","pestanita",2000);
	pestanita._x = 0;
	pestanita._y = 0;
	
	siguiente_y = 0;
	y_arriba = 0;
	
	//Posicionamos todos los clips por debajo de 330 sobre 0
	//Empezamos por el ultimo y vamos subiendo
	for (i=long; i>0; i--){
		if (_root["caja"+i]._y > 330){
			siguiente_y = siguiente_y - _root["caja"+i]._height + 1;
			_root["caja"+i]._y = siguiente_y;
		}
	}
	
	//Una vez esta todo montado movemos las noticias
	moverNoticias();
}

/*-------------------------------------------------------------------------------*/
/*---------------------   FUNCION PARA MOVER LAS NOTICIAS    --------------------*/
/*-------------------------------------------------------------------------------*/
function moverNoticias(){
	//Si es la primera vez forzamos el movimiento, si no empiezan paradas las cajas
	if (primera_vez == undefined){
		//Creamos el evento y se empiezan a mover las cajas
		_root.onEnterFrame = function(){
			
			for (i=0; i<long; i++){
				//Si la caja llega a abajo del todo
				if (_root["caja"+i]._y > 330){
					y_arriba = 0;
					
					//Calculamos donde hay que posicionar el clip que llega abajo
					for (j=0; j<long; j++){
						//Todos los clips que esten por encima de 0
						if (_root["caja"+j]._y < 0){
							//Cogemos la posicion y que haya mas arriba
							y_actual = _root["caja"+j]._y;
							if (y_actual < y_arriba){
								y_arriba = y_actual;
							}
						}
					}
					//Lo posicionamos arriba, siendo esta posicion:
					//"y del clip actual" = "posicion del clip de mas arriba" - "altura del clip actual" + 1;
					_root["caja"+i]._y = y_arriba - _root["caja"+i]._height + 1;
				}
				//Hacemos que vayan bajando las cajas
				_root["caja"+i]._y += .5;
			}
		}
		primera_vez = false;
	}
	/***************************************************************************/
	
	
	//"el_fondo" controla a cada fotograma si estamos o no encima de las noticias
	el_fondo.onEnterFrame = function(){
		for (i=0; i<long; i++){
			//Si clicamos en la caja, vamos a la direccion "x"
			_root["caja"+i].onPress = function(){
				getURL (this.direc_url, "_parent");
			}
			//Si nos ponemos encima de la caja, eliminamos el evento y se para
			_root["caja"+i].onRollOver = function(){
				//Iluminar
				this.colorcaja.setRGB(0xB9DCFF);
				delete _root.onEnterFrame;
			}
			//Si nos salimos de las cajas, se empieza a mover otra vez
			_root["caja"+i].onRollOut = function(){
				//Pintamos la caja con el color anterior
				this.colorcaja.setRGB(this.micolor);
				
				//Creamos el evento y se empiezan a mover las cajas
				_root.onEnterFrame = function(){
					
					for (i=0; i<long; i++){
						//Si la caja llega a abajo del todo
						if (_root["caja"+i]._y > 330){
							y_arriba = 0;
							
							//Calculamos donde hay que posicionar el clip que llega abajo
							for (j=0; j<long; j++){
								//Todos los clips que esten por encima de 0
								if (_root["caja"+j]._y < 0){
									//Cogemos la posicion y que haya mas arriba
									y_actual = _root["caja"+j]._y;
									if (y_actual < y_arriba){
										y_arriba = y_actual;
									}
								}
							}
							//Lo posicionamos arriba, siendo esta posicion:
							//"y del clip actual" = "posicion del clip de mas arriba" - "altura del clip actual" + 1;
							_root["caja"+i]._y = y_arriba - _root["caja"+i]._height + 1;
						}
						//Hacemos que vayan bajando las cajas
						_root["caja"+i]._y += .5;
					}
				}
			}
		}
	}
}