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

Scroll... y es jodido

Estas en el tema de Scroll... y es jodido en el foro de Flash y Actionscript en Foros del Web. Hola todos. Primero que nada, un saludo a los que siempre responden en este foro, si bien no pregunto demasiado, vengo a leerlos y siempre ...
  #1 (permalink)  
Antiguo 05/06/2007, 20:54
Avatar de calmas  
Fecha de Ingreso: marzo-2006
Mensajes: 36
Antigüedad: 11 años, 8 meses
Puntos: 0
Scroll... y es jodido

Hola todos.
Primero que nada, un saludo a los que siempre responden en este foro, si bien no pregunto demasiado, vengo a leerlos y siempre encuentro la respuesta.
En especial a Bandit, te he sacado el jugo, muchacho...
Gracias a todos.

Mi problema es el siguiente, Actionscript me mata, y siempre tengo problemas.
Estoy haciendo una revista digital, por supuesto que sin lucro, a pedido de un amigo y en ella cargo un SWF externo, que además carga un XML con texto y un CSS con el formato del texto.

En el primer frame del SWF tengo este codigo:

Código HTML:
//Cargar XML del editorial
editorial = new XML();
editorial.ignoreWhite = true;
editorial.onLoad = function (){

	//Porcentajes y esas cosas
	totalxml = editorial.getBytesTotal();
	cargadoxml = editorial.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 = editorial.firstChild.childNodes.length;
		
		cargarCSS();
	}
}

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

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

//Atacheamos la caja de fondo

//Cargamos XML
editorial.load("Editoriales/editorial.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,505,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] = editorial.firstChild.childNodes[i].attributes.titulo;
				
				//Cogemos las urls de las noticias
				urls[i] = editorial.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'>"+editorial.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 = 250;
	cargando2._y = 200;
	estailo.load("Editoriales/editorial.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(0x396C80);
			//_root["caja"+i].micolor = "0x396C80";
			par = false;
		}
		else{
			//_root["caja"+i].colorcaja.setRGB(0x45849C);
			//_root["caja"+i].micolor = "0x45849C";
			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 + 160;
		
		//Creamos la caja de texto y ponemos sus propiedades
		_root["caja"+i].createTextField("texto_txt",i*37,4,3,505,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 = true;
		_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'>"+editorial.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 630 sobre 0
	//Empezamos por el ultimo y vamos subiendo
	for (i=long; i>0; i--){
		if (_root["caja"+i]._y > 630){
			siguiente_y = siguiente_y - _root["caja"+i]._height + 1;
			_root["caja"+i]._y = siguiente_y;
		}
	}
}


Este código, lo obtuve de alguno de uds, y fue modificado por mi, ya que el mismo tiene otra parte en la que va moviendo automaticamente el texto de arriba a abajo. Esto último lo quité para que estuviera quieto que es la idea.
Pero, si quisiera que tuviera los botones de arriba y abajo, para que el usuario, pudiera recorrer el texto y además que no se saliera de la pelicula ya que cuando el XML es largo, se va de pantalla.

El SWF donde se carga este texto, solamente tiene un MC que es un rectangulo y se llama "Fondo".

Disculpen el largo del post, y les agradezco nuevamente la ayuda.
Gustavo
Montevideo-Uruguay.
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 18:46.