Ir para conteúdo
Fórum Script Brasil
  • 0

Busca Em flash


Dudu souza

Pergunta

3 respostass a esta questão

Posts Recomendados

  • 0

lá dudu souza ^_^

Seja mais específico, e de qualquer forma vai depender de como você organizar o conteudo, se for no caso ele retornar noticias ou posts por exemplo, eu os guardaria num XML e quando for usar a busca ela retorna o que for encontrado no XML;

Quando especificar o que deseja eu lhe dou uma ajuda mais completa :)

Abraços

Pooh

Link para o comentário
Compartilhar em outros sites

  • 0

Bom dudu bolei um exemplo meio às pressas, porém é só o conceito que você deve pegar;

Fiz em AS 2.0 por ser o mais utilizado, E fiz com xml;

A lógica é a seguinte, temos um campo de Busca, e um campo de Resultados;

Quando digitado no campo de busca uma palavra ele busca nos registros xml o resultado que possui essa palavra no meio dele;

Para isso vamos pegar um xml:

noticias.xml

<?xml version="1.0" encoding="ISO-8859-1" ?>
<news>

<noticia id='0'>O ministro da Saúde, José Gomes Temporão, confirmou nesta sexta-feira mais dois casos de gripe suína no Brasil, chegando a seis o total de infectados. Em um dos casos, a transmissão ocorreu dentro do território brasileiro, no Rio de Janeiro...</noticia>

<noticia id='1'>Em nota, o Ministério Público Federal considera a participação da Abin na Operação Satiagraha legal. Com a conclusão do inquérito da Polícia Federal que investigou a conduta do delegado Protógenes Queiróz à frente da Operação Satiagraha, os procuradores denunciam: "o delegado Protógenes Queiroz cometeu três crimes no período em que ficou a frente das investigações da Polícia Federal na Satiagraha: duas violações de sigilo funcional e uma fraude processual"...</noticia>

<noticia id='2'>Os estragos causados pela chuva que atinge o País na última semana afetaram mais de 911 mil pessoas em 11 Estados. Cerca de 126 mil estão desabrigas e 57 mil desalojadas. O número de mortos chegou a 44 em oito Estados. Os dados foram divulgados nesta sexta-feira pela Secretaria Nacional de Defesa Civil (Sedec)...</noticia>

</news>
Como visto tenho 3 noticias diferentes, cada uma com seu ID unico e textos unicos. Quando queremos ver se achamos uma palavra "igual" isso implica várias condições de igualdade, ou seja o que mais teremos em nosso código são condições, simples sem segredo algun; Vai precisar na sua Cena, um campo INPUT de nome "search", um campo dinâmico de nome "resultado" e um botão; No meu caso utilizei o botão dos componentes do flash e o chamei de "meuBt"; feito isso vamos declará-los:
System.useCodepage = true;

var meuXML:XML = new XML();
var xmlReady:Boolean = false;

var meuBt:Button = _root.meuBt;
var Search:TextField = _root.search;
var Resultado:TextField = _root.resultado;

var palChave:String;
var NumNoticia:Array = new Array();
var Noticias:Array = new Array();
var i:Number,j:Number,k:Number;
useCodePage true, é para podermos usar caracteres especiais contidos na lingua latina; Temos nosso XML como "meuXML" ele que vai receber as noticias; Uma boleana, que vai dizer se nosso XML foi carregado ou não; declaramos nosso botao e os 2 campos de texto reespectivamente; E algumas outras variaveis tais para Contadores, receber a Palavra chave, receber as noticias e guardar o numero da noticia;
meuXML.ignoreWhite = true;
meuXML.onLoad = function(sucess) {
if (sucess) {
    xmlReady=true; //setamos nossa boleana para dizer que o xml foi carregado com sucesso
}
}
meuXML.load("noticias.xml");
Aqui puxamos nossas noticias do xml;
meuBt.onPress = function(){ //pesquisar
palChave = Search.text;
testaPalavra(palChave); //Chamamos a função que vai verificar se nossa palavra existe
}
Ação que vai ocorrer quando pressionarmos o botão Pesquisar
function testaPalavra(chave:String){
    
if(chave.length >=1){ //SE O TAMANHO não FOR O CORRETO
    
if(xmlReady){    //SE O XML já ESTIVER CARREGADO
    Resultado.text = '';
    for(i=0;i<NumNoticia.length;i++){
    NumNoticia[i]="";
    }
    for (i=0;i<meuXML.firstChild.childNodes.length;i++)
    { //PEGA A NOTICIA DE 0-NMR MAX DE NOTICIAS
    
        Noticias.push(meuXML.firstChild.childNodes[i].firstChild.nodeValue);
        k=0;
        
        for(j=0;j<=Noticias[i].length;j++) //PEGA CADA CARACTER DA NOTICIA
        {
            if(chave.charAt(0).toLowerCase==Noticias[i].charAt(j).toLowerCase) //TESTA SE O CARACTER BATE
            { 
              if(chave.toLowerCase() == Noticias[i].substring(j,j+chave.length).toLowerCase()) //TESTA SE A PALAVRA INTEIRA BATE
              {
                  
                  if(NumNoticia[k] != i){ //TESTA SE A A NOTICIA não EXISTE
                      NumNoticia[k]=i;
                      Resultado.text += "Noticia "+(i+1)+": "+Noticias[i]+"\n\n";                        
                  }
                  
              }//TESTA PALAVRA INTEIRA
            } //TESTA SE BATE
            
        } //CADA CARACTER DA NOTICIA
        
    } //FOR

} //XML
else
{
    trace("XML ainda noi foi carregado");
}
}//TAMANHO DESEJADO
else{
    trace("Tamanho da busca incorreto");
}
}

Bom toda a mágica ocorrena função testaPalavra

Nela vamos testar, Se a palavra digitada tem algum caracter ou seja seu valor é maior ou igual a 1;

Depois testamos se nosso XML foi carregado

Limpamos nossa Variavel NumNoticia que guarda o numero da noticia encontrada;

Pegamos todas as noticias do meuXML e guardamos na ARRAY Noticias;

Agora vamos testar cara Caracter da noticia, Caso esse caracter bata com o primeiro caracter da nossa palavra chave,

Vamos testar se todos os caracteres a partir dele batem, por exemplo se você escrever a palavra "POOH"

Ele vai primeiramente testar se existe algum "P" na noticia e caso exista ele então pega as proximas 3 letras e ve se "POOH" é igual a "P"+3 letras seguintes

Se for então você acaba de encontrar sua palavra;

Despois de encontrada a plavra temos de verificar se Dentro dessa noticia já listada como um resultado da pesquisa, já não foi encontrada outra palavra igual, se já, então não precisamos colocar essa noticia duas vezes como resultado, pois apesar de ser 2 resultados encontrados ambos pertencem ao mesmo lugar;

bom é isso :)

Não sei se ficou simples o suficiente mas essa foi minha pesquisa caseira que fiz com tanto carinho *_*

Brincadeira, qualquer dpuvida é so postar, seria bom você apenas entender a lógica que foi feita, e perceber que podemos colocar muito mais condições como por exemplo para mais de uma palavra colocada, testar auto-sugestões etc...

Abraços

Pooh

Editado por Pooh
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...