Jump to content


Photo

Botoes.duplicatemovieclip


  • Faça o login para participar
2 replies to this topic

#1 blockmonork

blockmonork

    Turista

  • Usuários
  • 27 posts
  • Sexo:Não informado

Posted 09/11/2008, 00:38

Nesse código, o flash pega valores de um xml e cria botoes no palco, cada botão tem um campo de texto dinâmico que pega o valor do xml. Ao clicar no botão, o mesmo chama o metodo mailto, através do valor guardado no xml(endereço de email). O problema é que os botões exibem os endereços individualmente, porém, sempre o último botão criado (último loop do for) é que fica ativo (guardando o último valor do xml), os anteriores não! Ou seja, se tiver 10 botoes com valores diferentes, mesmo eles listando os endereços corretamente no palco, ao clicar em qualquer um dos 10, o valor de todos eles sempre será o do último for.
Alguém sabe qual o problema?

for (var i:Number = 3; i< noGeralTam; i++) {
		email0.duplicateMovieClip("email"+i, i);
		var evau = eval("email"+i);
		evau.txt.text = geral.childNodes[i].childNodes; 
		evau._x = email0._x; 
		evau._y = i*(email0._height+2);
		evau.onRelease = function(){
			saida.text += "get url mailto: "+ evau.txt.text +newline; 
		}

Edição feita por: blockmonork, 09/11/2008, 00:43.


#2 blockmonork

blockmonork

    Turista

  • Usuários
  • 27 posts
  • Sexo:Não informado

Posted 12/11/2008, 17:04

Será que ninguém sabe o porquê disso acontecer???
Exemplo mais claro e objetivo do que estou perguntando:

for ( i = 0; i < 5; i++) {

bt0.duplicateMovieClip("bt0"+i, i);
var evau = eval("bt0"+i);
evau.txt.text = geral.childNodes[i].childNodes; // NÓS DE UM DOC XML COM VALORES : 0,1,2 E 3 - POR EXEMPLO
evau._x = bt0._x;
evau._y = i*(bt0._height+2);

evau.onRelease = function(){
saida.text += "VALOR GUARDADO PELO TEXTO DINAMICO DE NUMERO" + i + " : "+ evau.txt.text +newline;

NESTE PONTO, POR EXEMPLO, SE EU CLICAR EM QUALQUER BOTAO DUPLICADO, ELES ME LISTARIAM SEMPRE O VALOR 3 (QUE É O ÚLTIMO VALOR DO LOOP

}

Edição feita por: blockmonork, 12/11/2008, 17:16.


#3 Pedropauloalmeida

Pedropauloalmeida

    Fale ao motorista somente o indispensável

  • Usuários
  • 1376 posts
  • Sexo:Masculino
  • Localidade:Santo André SP

Posted 18/11/2008, 10:29

Olá, blockmonork.

Primeiramente gostaria que você não usasse textos em caixas alta com negrito que, como todos dizem, dão a impressão que você está "gritando" em sua mensagem.

O segundo é que você está usando actions que não devem mais ser usadas. O método eval é deprecated desde o flash 6. E já estamos no Flash 10.
O correto aí é você atachar o movieClip no stage através de um linkage da biblioteca.

Lá na Library você clica com o botão direito sobre o icone do botão que você quer e escolhe a opção "Linkage". Lá você preenche a opção Identifier com um nome como "botao". Deixe as caixas Export for ActionScript e Export for runtime sharing marcadas.

Depois, em sua action faça assim:

for ( i = 0; i < 5; i++) {

var clip:MovieClip = this.attachMovie("botao", "bt" + i, i);
clip.txt.text = geral.childNodes[i].childNodes; // NÓS DE UM DOC XML COM VALORES : 0,1,2 E 3 - POR EXEMPLO
clip._x = bt0._x;
clip._y = i*(bt0._height+2);
// criando uma prop dinamica no objeto:
clip.superID = i;
clip.onRelease = function(){
	 saida.text += "VALOR GUARDADO PELO TEXTO DINAMICO DE NUMERO" + this.superID + " : "+ clip.txt.text +newline;
}
}

Teste e veja se funciona.
Por favor, tenha a gentileza de editar seu post retirando os negritos e caixas-alta.

Abraços.

pp

Edição feita por: Pedropauloalmeida, 18/11/2008, 10:30.
um pequeno erro no script





1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq