Cristalab

                 ¿Quieres registrarte?

Buscador de palabras con sugerencia en Flash

21 de Mayo del 2007
10,954 visitas

El tip que voy a explicar es una ampliación de este otro: buscador por similitud. En esta ocasión le vamos a añadir una sugerencia de búsqueda para que el usuario no necesite introducir la palabra completa al buscar algo.

Al igual que en el buscador, vamos a emplear provincias argentinas. Comiencen a escribir y presionen Enter:



Si no conocen ninguna, prueben con Corrientes o Santa Cruz, ya que muestran más de una sugerencia a medida que agregamos letras.

Las sugerencias las tenemos almacenadas en un Array que contendrá todas las palabras posibles (también las podemos tomar de cualquier string con un split o recuperarlas desde php, xml, un txt, etc.).

Luego, usamos una función que nos devuelva una palabra que comience igual que la introducida (hasta el momento) por el usuario.

El código que empleé podría ser este:

Código :

buscar = function (cadena:String, biblioteca:Array):String {
   var miArray = new Array ();
   var confirmacion = new Array ();
   //
   if (cadena == "") {
      return "nada";
   } else {
      miArray = cadena.split ("");
   }
   //
   for (var i = 0; i < biblioteca.length; i++) {
      confirmacion = desacentuar (biblioteca[i]).split ("").slice (0, miArray.length);
      //
      if (desacentuar (miArray.toString ()).toLowerCase () == confirmacion.toString ().toLowerCase ()) {
         return biblioteca[i].toString ();
      }
      //                                                                        
   }
   return "nada";
   //
};

De todos modos, hay algo que salta inmediatamente a la vista, este código, por si solo no nos sirve, emplea una función (desacentuar) que tenemos que definir en otro lado.

La función en cuestión quita los acentos (agudos, graves y circunflexos) y las diéresis de las vocales. El código es éste:

Código :

desacentuar = function (cadena:String) {
   var miPalabra = new Array ();
   miPalabra = cadena.toLowerCase ().split ("");
   //
   for (var i = 0; i < miPalabra.length; i++) {
      switch (miPalabra[i]) {
      case "á" : case "ä" : case "à" : case "â" :
         miPalabra[i] = "a";
         break;
      case "é" : case "ë" : case "è" : case "ê" :
         miPalabra[i] = "e";
         break;
      case "í" : case "ï" : case "ì" : case "î" :
         miPalabra[i] = "i";
         break;
      case "ó" : case "ö" : case "ò" : case "ô" :
         miPalabra[i] = "o";
         break;
      case "ú" : case "ü" : case "ù" : case "û" :
         miPalabra[i] = "u";
         break;
      default :
         miPalabra[i] = miPalabra[i];
      }
   }
   return miPalabra.join ("");
};

Visto el código les dejo el archivo .fla del ejemplo.


Artículos Relacionados


Etiquetas actionscript

Comentarios | Enviar un comentario
wow, no sabia q se podia hacer eso con flash...
:oops: bueno en realidad no se nada... pero esta lindo ^^
Por: july
Esto es mas que genial, no tenia idea que era asi, Mil gracias por este truco, mil gracias.
Saludos An
Por: Ancolmi_blog
Men encantaria mejor que dijiera si sirve como botonera para trasladar a un usuario por frames...por fa responda urgentre
Por: .:ZERO:._blog
:? qué es lo que querés?
Por: HernanRivas_blog
MUY ÚTIL!! Gracias.

Saludos!!
Por: cromosoma47
que es ridiculo
Por: claudia _blog
Esta bueno. Estaria bueno completarlo con algunas funcionalidades mas que las que mostrar el nombre completo, como por ejemplo que esa sugerencia la puedas seleccionar y se autocomplete el texto, o que aparezcan multiples sugerencias en caso de coincidir. Un caso seria cuando pones 'Sa' aparezcan todas las que empiean con 'Sa' al mismo tiempo y se vayan borrando a medida que vas completando la palabra.
Por: PabloHdS
Eso se puede agregar fácilmente, por eso esto no es un componente ni nada, la idea era mostrar cómo se podía hacer.
Por: HernanRivas
hola...bueno no see ni que es esto pero bueh......loko....che...mik y cami o ttkkmm!!
Por: sofipezzoli_blog
y como se complataria el codigo para cuando haga la busqueda salga un boton y lo envie al origen de la busqueda??? eso puede buscar archivos en una carpeta raiz??? o que lo envie a la escena donde esta la busqueda dentro del flash
Por: ricardo_blog
alguien sabe como buscar palabras metiendo letras??
gracias
Por: felix-blog
heidita que ases
Por: heidi moronta fermin-bl
heidita que ases soy yo nati
Por: heidi moronta fermin-blog
que significa la palabra:



CRISPADA??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
'''






'''''''
Por: paula -blog
que pena como seria este codigo para llamar buscar los textos desde un xml?

gracias
Por: alvaro fuentes-blog
Deja un comentario
IMPORTANTE

Recuerda ser respetuoso, no insultes a otras personas, ni uses palabrotas, hay una persona al otro lado de la pantalla.

Habla bien, NO ESCRIBAS EN MAYUSCULA TODO, no escribas como en un SMS, evita cosas como "ke", "x q" y demás abreviaciones.

Aquí funcionan las etiquetas de los foros, puedes usar [b] para negrita, [img] para las imágenes, [url] para los enlaces, etc.

Si tienes preguntas técnicas, envíalas mejor al foro.