Boa noite a todos! Li o post do Pedro e fiquei contente com a proposta. Não sou programador mas me aventuro em algumas linhas. Utilizo o Flash CS3 e valho-me muito do help do proprio programa e de algum conhecimento que adiquiri desde o flash4. Penso que a dúvida abaixo já será um contribuição para a melhoria proposta.
Precisava de carregar multiplos textos e estava a pensar em utilizar uma única instancia do componente TextArea, ou do campo texto dinamico e através de botões carregar os tais textos assim:
Botão 1 » carrega o texto 1
Botão 2 » carrega o texto 2
Botão 3 » carrega o texto 3 e assim por diante.
Já fiz varias tentativas sem sucesso. Precisava de um passo-a-passo.
Obrigado!
Ps. Quem der a melhor e mais rapida dica ganha um guia turistico exclusivo quando quiser visitar Lisboa que é onde eu vivo. Ah, sim! com direito a bacalhau e vinho

Textarea Com Multiplos Textos
Started By batisteli, 13/05/2009, 18:45
1 reply to this topic
#1
Posted 13/05/2009, 18:45
#2
Posted 19/05/2009, 14:27
Olá, Batisteli.
Se o post que você leu (já que não sou o único "Pedro" por aqui, eu acho), fico contente que tenha gostado de algum hehe.
Para você carregar vários textos em único textField basta você obter esse texto, buscando ele de uma página de servidor ou arquivo local, etc.
Mas já assumindo que você tem esse texto, ficaria algo assim:
Em AS 2.0:
No caso do ActionScript 3.0, algumas coisinhas mudam. Mas também não é nenhum bixo de sete cabeças. Olha só:
Existem maneiras bem mais "rápidas" ou de economizar muitas linhas no código acima. Mas eu prefiro, aqui no fórum principalmente, escrever da forma mais clara possível. Eu não testei nenhum desses códigos acima. Escrevi direto aqui no "Resposta rápida" do fórum. Qualquer dificuldade ou erro com eles, basta postar.
Abraços e desculpe a demora na postagem.
pp
Se o post que você leu (já que não sou o único "Pedro" por aqui, eu acho), fico contente que tenha gostado de algum hehe.
Para você carregar vários textos em único textField basta você obter esse texto, buscando ele de uma página de servidor ou arquivo local, etc.
Mas já assumindo que você tem esse texto, ficaria algo assim:
Em AS 2.0:
// Assumindo que você já tem os 3 textos que você deseja, armazenados nas variáveis a seguir: var texto1:String = "Esse é o texto 1"; var texto2:String = "Esse é o texto 2"; var texto3:String = "Esse é o texto 3"; // Assumindo que no Stage você tem um textField dinâmico com o nome "info_txt", faço o evento de click nos botões, apontando o texto: this.botao1_btn.onRelease = function():void { // colocando o texto 1 no click do botão 1. this.info_txt.text = texto1; } /* E você repetiria o processo para os outros 3 botões. Mas e se fossem 400 botões? Ou se você não soubesse quantos botões teria, talvez montando esses botões dinamicamente. Seria impossível ou muito trabalhoso fazer um novo flash para isso. É aí que entram os loopings e arrays. Vamos dizer que eu vou ter um array com 400 botões ou 30 ou 50. Ou seja: "n" botões. E uma outra que contém os textos. Assumindo aqui que um botão tem respectivamente seu texto, certo? Então: 30 botões, 30 textos: */ var listaDeBotoes:Array = new Array(botao0, botao1, botao2, botao3, botao4); // e assim por diante var listaDeTextos:Array = new Array(texto0, texto1, texto2, texto3, texto4); // e assim por diante // Fazendo com que o click em cada botão aponte para uma mesma função, que vai identificar o botão clicado para saber qual texto será exibido: var tt:Number = listaDeBotoes.length; // total de botões while (tt--) { // identificando o botão: var bt:Button = listaDeBotoes[tt]; bt.onRelease = function() { showTexto(this); } } function showTexto(bt:Button):void { /* Como eu não sei qual a posição do botão botão clicado na lista de botões, eu vou ter que fazer uma função para busca-lo. Se fosse um movieClip eu poderia usar do artifício de que ele extends Object e Object é Dynamic. Mas vamos fazer o "certo" para que fique uma explicação bem completa: */ var idx:Number = posicaoDoBotao(bt); if (idx == null) { trace("Erro! O botão clicado não foi encontrado na lista de botões"); } else { info_txt.text = listaDeTextos[idx].toString(); } } // Buscando a posição do botão na lista de botões: function posicaoDoBotao(bt:Button):Number { var tt:Number = listaDeBotoes.length; while (tt--) if (listaDeBotoes[tt] == bt) return tt; /* se eu cometi algum erro, retornar null. Aí saberei que esqueci de adicionar o botão na minha lista de botões. Seria um erro interessante, pois se ele não estava na lista, como recebeu o listener para clique? Mas nunca é demais fazer um tratamento de erro :-) */ return null; }
No caso do ActionScript 3.0, algumas coisinhas mudam. Mas também não é nenhum bixo de sete cabeças. Olha só:
var listaDeBotoes:Array = new Array(botao0, botao1, botao2, botao3, botao4); // e assim por diante var listaDeTextos:Array = new Array(texto0, texto1, texto2, texto3, texto4); // e assim por diante // Fazendo com que o click em cada botão aponte para uma mesma função, que vai identificar o botão clicado para saber qual texto será exibido: var tt:Number = listaDeBotoes.length; // total de botões while (tt--) { // identificando o botão: var bt:SimpleButton = SimpleButton(listaDeBotoes[tt]); bt.addEventListener(MouseEvent.CLICK, showTexto); } function showTexto(evt:MouseEvent):void { /* Em AS3 eu já tenho um método no array que é o 'indexOf'. Ele já me poupa de fazer manualmente a busca pelo meu objeto dentro da lista */ var idx:int = listaDeBotoes.indexOf(evt.target); if (idx == -1) { trace("Erro! O botão clicado não foi encontrado na lista de botões"); } else { info_txt.text = listaDeTextos[idx].toString(); } }
Existem maneiras bem mais "rápidas" ou de economizar muitas linhas no código acima. Mas eu prefiro, aqui no fórum principalmente, escrever da forma mais clara possível. Eu não testei nenhum desses códigos acima. Escrevi direto aqui no "Resposta rápida" do fórum. Qualquer dificuldade ou erro com eles, basta postar.
Abraços e desculpe a demora na postagem.
pp
WebFórum - Equipe de Flash - Moderador
www.pedropauloalmeida.com.br
Leia as Regras! Colabore com nosso Fórum respeitando as normas de posts e de perfis.
www.pedropauloalmeida.com.br
Leia as Regras! Colabore com nosso Fórum respeitando as normas de posts e de perfis.
1 user(s) are reading this topic
0 membro(s), 1 visitante(s) e 0 membros anônimo(s)