Nesse
artigo vamos ver como podemos realizar buscas em textos no Flash. Depois
de feita a busca, se o resultado for positivo, a seqüência
de caracteres será selecionada no campo de texto.
Crie
dois campos de texto sendo um input (instanciado como busca_txt) e outro
dynamic (instanciado como texto_txt). Insira em texto_txt o texto onde
será feita a busca. Crie também um botão e instacie-o
como buscar_btn. Veja o exemplo da figura abaixo.

Ao
código:
buscar_btn.onRelease
= function () {
if ((resultado = texto_txt.text.indexOf (busca_txt.text,
i)) != -1) {
i = resultado + busca_txt.text.length;
Selection.setFocus (texto_txt);
Selection.setSelection (resultado,
i);
} else {
if (i != 0) {
trace ("Busca
finalizada. Não foram encontrados mais resultados.");
i = 0;
} else {
trace ("Não
foram encontrados resultados para sua pesquisa.");
}
}
busca_txt.onSetFocus = function () {
i = 0;
}
}; |
Comentando
o código:
buscar_btn.onRelease
= function () {
---> Ao pressionar o botão a função será
executada.
if
((resultado = texto_txt.text.indexOf (busca_txt.text, i)) != -1) {
---> o indexOf faz uma busca, em texto_txt, pela string especificada
no primeiro parâmetro (busca_txt.text) a partir do índice
do caractere especificado no segundo parâmetro (i). É retornado
o índice da primeira ocorrência da string (busca_txt.text)
que é guardado na variável resultado. Se não for
encontrado nada é retornado -1. Então se o resultado for
diferente ( != não igual) de -1 é porque foi encontrado
algo! Lógico não é!?
i
= resultado + busca_txt.text.length;
---> Se a string (busca_txt.text) for encontrada é atribuído
a variável i a soma do índice dessa primeira ocorrência
(resultado) com o tamanho, em número de caracteres, do texto procurado
(busca_txt.text.length). É preciso fazer essa atribuição
a variável i para que seja possível fazer uma nova busca
de sua string pois ela pode existir mais de uma vez no texto.
Selection.setSelection
(resultado, i);
---> Quando é encontrado algo o foco é ativado em texto_txt
pelo método Selection.setFocus (texto_txt). O método setSelection
irá selecionar, no campo atualmente focado, um texto onde o índice
inicial da seleção é o valor da variável resultado
e o final o valor da variável i.
}
else {
if
(i !== undefined) {
trace
("Busca finalizada. Não foram encontrados mais resultados.");
i
= 0;
}
else {
trace
("Não foram encontrados resultados para sua pesquisa.");
}
}
};
---> se i for diferente de undefined ( !== testa a diferença
do valor e do tipo de dado) então pelo menos uma ocorrência
para busca_txt.text foi encontrada porém i é, nesse momento,
igual a -1 e a menssagem (trace) é mostrada no output informando
que não há mais ocorrências para o texto procurado,
e i volta a ser 0, para que uma nova busca possa ser realizada. Ainda
há a possibilidade de não existir nem uma ocorrência
para o texto procurado. Nesse caso a variável i será undefined
e a variável resultado será -1, então uma outra mensagem
(trace) é mostrada no output informando que não há
ocorrências para o texto procurado.
busca_txt.onSetFocus
= function ()
i
= 0;
}
---> o onSetFocus é um evento que ocorre quando o foco entra
em um campo de texto. É preciso tornar i = 0 quando o foco entra
em busca_txt porque o usuário pode precisar fazer uma nova buaca
antes que todas as ocorrencias para uma busca finalizem tornando i igual
a 0 em nosso primeiro else.
Pronto
galera. Acho que é só isso e praticar.
|