Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

MarKteus

como usar o CreateTextField corretamente ?

Recommended Posts

Boa noite turma

 

Gente seguinte to usando o script abaixo para criar uma caixa de texto dinamica:

 

_root.createTextField(“conTexto”, n_Tx, 200, 200, 200, 100);

conTexto.border = true;

conTexto.text = “Digite seu texto aqui”;

formatacao = new TextFormat();

formatacao.bold = true;

formatacao.size = 25;

formatacao.font = “verdana”;

formatacao.italic = true;

conTexto.setTextFormat(formatacao);

 

até aí tudo bem, só q qdo vou criar outro ñ da mais certo pois estou em tempo de execução, então fiz o seguinte na linha q cria:

 

_root.createTextField(“conTexto”+n_Tx, n_Tx, 200, 200, 200, 100);

 

Mas o simples fato de colocar uma variável para diferenciar as instacias, atrapalha tudo, não da erro porém, ñ é possível ver a frase DIGITE SEU TEXTO AQUI

 

tentei tbm:

 

_root.createTextField(“conTexto”+String(n_Tx), n_Tx, 200, 200, 200, 100);

 

e nada, só funciona se eu deixar como na primeira _root.createTextField(“conTexto”, n_Tx, 200, 200, 200, 100); </b>só q assim ao criar outra caixa o texto da anterior desaparece (mesmo concatenando a profundidade. http://forum.imasters.com.br/public/style_emoticons/default/upset.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

como você está está fazendo a implementação do restante do código ?

o primeiro é esse certo ?

 

_root.createTextField(“conTexto”, n_Tx, 200, 200, 200, 100); conTexto.border = true; conTexto.text = “Digite seu texto aqui”; formatacao = new TextFormat(); formatacao.bold = true; formatacao.size = 25; formatacao.font = “verdana”; formatacao.italic = true; conTexto.setTextFormat(formatacao);
está funcionando, como você mencionou.

 

para criar outro campo você está usando uma concatenação para diferenciar o nome de instância

 

 

_root.createTextField(“conTexto”+n_Tx, n_Tx, 200, 200, 200, 100);

nesse momento o objeto é criado.

 

 

Mas o simples fato de colocar uma variável para diferenciar as instacias, atrapalha tudo, não da erro porém, ñ é possível ver a frase DIGITE SEU TEXTO AQUI

como você está fazendo a atribuição do restante do código ?

assim ?

 

_root.createTextField(“conTexto” + n_Tx, n_Tx, 200, 200, 200, 100);

conTexto.border = true;

conTexto.text = “Digite seu texto aqui”;

formatacao = new TextFormat();

formatacao.bold = true;

formatacao.size = 25;

formatacao.font = “verdana”;

formatacao.italic = true;

conTexto.setTextFormat(formatacao);

observe os pontos em negrito

Compartilhar este post


Link para o post
Compartilhar em outros sites

vai uma dica

 

as funções que criam um objeto na tela, como createEmptyMovieCLip e duplicateMovieCLip, etc

sempre retornam a referencia do objeto ao cria-lo, altere o codigo para funcionar assim:

 

 

caixa = _root.createTextField("conTexto"+n_Tx, n_Tx, 200, 200, 200, 100); caixa.border = true;caixa.text = "Digite seu texto aqui";

 

caixa é uma variavel que guarda a referencia desse objeto

Compartilhar este post


Link para o post
Compartilhar em outros sites

Hinom

 

O q eu disse foi o seguinte: testei de um jeito, depois testei outro e depois de outro jeito, mas somente um funciona, porém usando a forma q funciona, consigo criar apenas uma caixa de texto e depois ñ consigo criar mais, pois dentro da função createTextField(), não está aceitando variável.

 

ou seja, exemplo: clico num botão uma caixa de texto é criada: createTextField("Ctexto", 1, 100,100,200,220);

 

clicando de novo o ideal para a criação de outra caixa texto, seria eu usar no script assim: createTextField("Ctexto"+id, id, _xmouse, _ymouse, _xmouse+100, _ymouse+110)

 

Mas pelos meus testes ñ funciona, ou seja, na hora do instaciamento createTextField("Ctexto", 1, 100,100,200,220); se eu colocar a variável id, já não funcionará, sei lá pq, a função se perde e ñ cria nada, ou cria mas ñ consigo visualizar e ñ colocando só consigo criar uma caixa de texto com o nome de Ctexto.

 

A idéia é criar quantas eu precisar para isso os nomes devem ser diferentes (Ctexto1, Ctexto2, etc) por isso preciso usar variáveis q vão se incrementando id++, só q quando a função createTextField encontra em seu interior "Ctexto"+id, ñ cria nada. "Ctexto"+String(id) tbm ñ funciona. Caso eu incremente fora da função:

 

NomeDoCampo="Ctexto"+id; ou NomeDoCampo="CTexto"+String(id);

_root.createTextField(NomeDoCampo, id, _xmouse, _ymouse, _xmouse+100, _ymouse+110);

 

tbm ñ da certo, fazendo vários testes percebi q o erro mesmo só no q diz respeito ao nome da instancia. ns demais

parametros tudo normal.

Compartilhar este post


Link para o post
Compartilhar em outros sites

vai uma dica

 

as funções que criam um objeto na tela, como createEmptyMovieCLip e duplicateMovieCLip, etc

sempre retornam a referencia do objeto ao cria-lo, altere o codigo para funcionar assim:

 

 

caixa = _root.createTextField("conTexto"+n_Tx, n_Tx, 200, 200, 200, 100); caixa.border = true;caixa.text = "Digite seu texto aqui";

 

caixa é uma variavel que guarda a referencia desse objeto

Caro Éder

 

Tbm fiz assim como você sugeriu inclusive antes de postar a duvida, mas tbm, ñ funcionou.

 

Porém aproveito pra tirar uma dúvida q referência é essa q você disse q é guardado na variável caixa, seria o caminho do objeto ?

 

 

só esclarecendo tbm meu Flash é o MX2004

Compartilhar este post


Link para o post
Compartilhar em outros sites

Porém aproveito pra tirar uma dúvida q referência é essa q você disse q é guardado na variável caixa, seria o caminho do objeto ?

sim é o endereço deleo problema deve ser a variavel n_Tx, dá um trace nela dentro da função pra ver se ela esta como undefined

Compartilhar este post


Link para o post
Compartilhar em outros sites

Porém aproveito pra tirar uma dúvida q referência é essa q você disse q é guardado na variável caixa, seria o caminho do objeto ?

sim é o endereço dele

 

 

 

o problema deve ser a variavel n_Tx, dá um trace nela dentro da função pra ver se ela esta como undefined

 

Já tinha até feito este teste.

 

Com a variável está tudo normal, na primeira vez contem o numero 0, na segunda o numero e assim por diante.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Markteus, está complicado encontrar o problema.

 

a hipótese mais provavel é que você esteja fazendo algo errado.

 

faça um teste simples. Crie um arquivo novo no Flash pra testar esse script:

 

 

stop();raiz		= _root;txt_limit   = 3;txt_insName = "conTexto";txt_text	= "Digite seu texto aqui";txt_ttfFont = "verdana";txt_FontSiz = 15;txt_width   = 200;txt_height  = 20;txt_x	   = 0;txt_y	   = 0;txt_space   = 5;for( i = 0; i < txt_limit; i++  ){	obj_name	 = txt_insName + i;	txt_y		= ( txt_height * i ) + txt_space;	raiz.createTextField(obj_name, i, txt_x, txt_y, txt_width, txt_height);	obj		  = raiz[obj_name];	obj.border   = true; 	obj.text	 = txt_text + i; 	style		= new TextFormat(); 	style.bold   = true; 	style.size   = txt_FontSiz; 	style.font   = txt_ttfFont; 	style.italic = true; 	obj.setTextFormat(style); }

 

se tiver alguma dúvida sobre o uso do createTextField, consulte a documentação:

 

http://www.adobe.com/support/flash/action_...tionary513.html

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.