He creado una aplicación para buscar palabras en en texto xml cargado en flash. Con los resultados encontrados se genera una lista dinámica de botones que, al ulsarlos, llevan a distintas páginas de un flip-page.
Lo que he hecho es colocar un objeto de fondo en el scroll pero tengo un limite de 5000px de alto con lo que los resultados no se muestran todos (es una lista muy larga con más de 200 botones)
Mi problema es el siguiente: cómo puedo crear un scroll dinámico de tal manera que tenga la longitud de los botones generados (estos van incrustados dentro de una mc que también se genera dinámicamente) para que así salgan todos o bien, crear un sistema de paginación dinámico que vaya mostrando de poco en poco y con botones "siguiente" "anterior"
Mis conocimientos en flash son prácticamente nulos y esto lo voy haciendo como puedo pero aquí ya no se que hacer.
Gracias por vuestra ayuda.
//////// CODIGO DEL BOTÓN BUSCADOR
on (release) {
scroll_lista.gotoAndPlay(1);
mitexto = textito.text;
mitexto = mitexto.toLowerCase();
trace ("pulsado el boton " + mitexto);
//Declara la variable "obj_xml" como un objeto XML
var obj_xml:XML = new XML();
obj_xml.ignoreWhite = true;
//numero de paginas totales
var num_pag_totales=3;
//numero modulos del curso
var mun_mod=8;
//numero mayor de paginas del modulo 4 del curso
var num_max_pag=200;
/*
for (a in _root) {
suj = _root[a];
if (typeof (suj) == "glosario" && suj._name.substr(0, 1) == "b") {
suj.removeMovieClip();
}
}
//*/
for(var y=0;y<=621;y++){
eval("_root.scroll_lista.listado_paginas.boton"+y).removeMovieClip();
}
var cont=0;
//creamos arrays necesario para la gestion de info
_global.textos =new Array();
_global.paginas =new Array();
_global.modulos =new Array();
_global.subtitulos = new Array();
//creamos la matriz para el diccionario
_global.diccionario= new Array(mun_mod);//maximo numero de un modulo
for(var i=0;i<=mun_mod;i++){
diccionario[i]=new Array();
for(var j=0;j<=num_max_pag;j++){
diccionario[i][j]=new Array();
diccionario[i][j]="modulo "+i+"pagina"+j;
}
}
//creamos la matriz para el glosario
_global.glosario= new Array ();
for(var i=0;i<=mun_mod;i++){
_global.glosario[i]=new Array();
for(var j=0;j<=num_max_pag;j++){
_global.glosario[i][j]=new Array();
_global.glosario[i][j]=0;
}
}
//trace(glosario);
//muestro la matriz al ser creada
//Cargo el archivo xml
obj_xml.load("pageflip.xml");
obj_xml.onLoad = function(exito) {
//La variable exito sera "true" si se cargo bien y "false" si hubo
//algun error
if (exito) {
aPaginas=this.firstChild.childNodes;
var vTotal = aPaginas.length;
for (i=0;i<=vTotal;i++){
if (aPaginas[i].nodeName=="pagina"){
paginas[i]=aPaginas[i].childNodes[0].firstChild.nodeValue;
modulos[i]=aPaginas[i].childNodes[1].firstChild.nodeValue;
textos[i]=aPaginas[i].childNodes[5].firstChild.nodeValue;
subtitulos[i]= aPaginas[i].childNodes[4].firstChild.nodeValue;
}
}
trace(subtitulos);
//cargolos datos en la matriz
_global.diccionario=cargarMatriz(modulos,paginas,textos);
} else {
//Muestra un mensaje de error en caso de que algo fallara
//trace("Estoy en else");
var texto= "¡Error!, al cargar los datos";
}
//trace(_global.diccionario);
};
/*str_replace
Description:Funcion que permite remplazar texto en cadenas
@params:anterior;texto a remplazar
nuevo;texto remplazado
texto;cadena donde se quiere remplazar
@return:cadena remplazada
*/
str_replace = function (anterior, nuevo, texto:String) {
texto = texto.split(anterior).join(nuevo);
return texto;
};
/*cargarMatriz
Description:FUNCION QUE CARGA EL ARRAY DE PALABRAS EN LA POSICION EXACTA DE LA MATRIZ
@params:modulos;array donde se almacenan las modulos
paginas;array donde se almacenan las paginas
textos;array donde se almacenan las palabras
@return:diccionario que contiene todas las palabras
*/
cargarMatriz = function (modulos:Array, paginas:Array, textos:Array) {
/*trace(modulos);
trace(paginas);
trace(textos); */
//comprobamos los parametros
if(modulos!="" && paginas!="" && textos!=""){
for(i=0;i<=textos.length;i++){
texto=textos[i];
//Quito los puntos y las comas,remplazados por espacios
texto=str_replace(","," ", texto);
texto=str_replace("."," ", texto);
//Paso a minusculas
texto=texto.toLowerCase();
//creo un array separando palabra por los espacios
var arrayPalabras= new Array ();
var arrayPalabras=texto.split(" ");
_global.diccionario[modulos[i]][paginas[i]]= arrayPalabras;
//trace(diccionario[modulos[i]][paginas[i]]);
}
}
var palabra = mitexto;
buscarPalabras(palabra,diccionario,glosario);
var lista= new Array ();
var indice=0;
// trace(_global.glosario);
for(var i=0;i<=mun_mod;i++){
for(var j=0;j<=num_max_pag;j++){
if(glosario[i][j]!=0){
lista[indice]=j;//creo un array con los numeros de pagina en los que aparece la palabra
indice++;
}
}
}
if(indice!=0){
scroll_lista._visible = true;
trace("La palabra que buscamos es "+palabra+" esta en las paginas "+lista);
var xPosition:Number = 1;
var yPosition:Number = 1;
for(var p=0;p<indice;p++){
_root.scroll_lista.listado_paginas.attachMovie("button","boton"+p,_root.scroll_lista.listado_paginas.getNextHighestDepth());
yPosition = yPosition + 35;
_root.scroll_lista.listado_paginas["boton"+p]._x = xPosition;
_root.scroll_lista.listado_paginas["boton"+p]._y = yPosition;
trace(p);
_root.scroll_lista.listado_paginas["boton"+p].texto.text=lista[p];
_root.scroll_lista.listado_paginas["boton"+p].texto_sub.text = subtitulos[lista[p]];
_root.scroll_lista.listado_paginas["boton"+p].onRelease = cargarPag;
}
}
else{
trace("La palabra que buscamos es "+palabra+" no se ha encontrado");
}
};
/*cargarPag
Description:FUNCION QUE te redirecciona la pagina correspondiente del flip
*/
cargarPag=function () {
_root.myBook.directGotoPage(this.texto.text*2);
}
/*buscarPalabras
Description:FUNCION QUE COMPARA UNA ALABRA LAS PALABRAS DE LA MATRIZ
@params:palabra;cadena donde se almacenan la palabra a buscar
@return:gloasario que contiene la informacion sobre la posicin de la palabra dentro de la matriz
*/
buscarPalabras=function (palabra:String,diccionario:Array,glosario:Array) {
var arrayPalabras= new Array ();
var num_palabras=0;
trace(palabra);
if(palabra!="" && diccionario!=""){//si hay palabra y diccionario
for(var i=0;i<=mun_mod;i++){
for(var j=0;j<=num_max_pag;j++){
arrayPalabras=diccionario[i][j];
for(var k=0;k<=arrayPalabras.length;k++){
if(arrayPalabras[k]==palabra){
num_palabras++;
_global.glosario[i][j]=num_palabras;
//trace ("aprece en pagina:"+j);
}
}
}
}
}
//trace(_global.glosario);
return(_global.glosario);
};
}