Comunidad de diseño web y desarrollo en internet online

Colocar subíndices en un textinput

Citar            
MensajeEscrito el 16 Sep 2014 10:39 am
¡Hola!
Tengo puesto un textinput en la aplicación y quería que cuando se escriba un número ese número quede puesto en subíndices. Pero no sé cómo hacerlo. Se me ocurrió hacer una función que hiciera que al escribir un número éste apareciera mucho más pequeño y por lo tanto el efecto sería parecido al de un subíndice. No sé si es una buena idea o hay alguna solución mejor. De todos modos no sé cómo hacer esa función.
Muchas gracias!

Por Xaora

30 de clabLevel



 

chrome
Citar            
MensajeEscrito el 16 Sep 2014 07:01 pm
Tienes que agregar un listener al change del TextField, chequear si el caracter es un numero y si ese es el caso, usar un TextFormat para cambiarle el tamaño. El código varía bastante según estes usando AS2 o AS3

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 16 Sep 2014 07:42 pm
Uso AS3, pero no sé cómo me dices.
Gracias!

Por Xaora

30 de clabLevel



 

chrome
Citar            
MensajeEscrito el 18 Sep 2014 06:20 pm
Para hacer mas pequenos los numeros que entras en un input textfield con nombre de instancia inputfield ... cambia de tamaño 10 al que tenga sentido dentro de tu contexto

Código ActionScript :

import flash.text.TextField;

var tft:TextFormat = new TextFormat();
tft.size = 10; 
inputfield.addEventListener(Event.CHANGE, changeListener);
function changeListener (evt:Event):void {
   var str:String = (evt.target as TextField).text;
   var pos:int = str.length-1;
   if(Number(str.charAt(pos))){
     (evt.target as TextField).setTextFormat(tft, pos, pos+1)
   }
 }


Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 24 Sep 2014 10:41 am
No acabo de entender lo que me pones. Yo tengo un texto creado para el input:
var textoInput:TextFormat = new TextFormat();
textoInput.size = 25;
textoInput.color = 0x0000FF;
StyleManager.setComponentStyle(TextInput, "textFormat", textoInput);
Además de este, tengo que crear el que tú me pones en el código, el tft?

Muchas gracias!

Por Xaora

30 de clabLevel



 

chrome
Citar            
MensajeEscrito el 24 Sep 2014 12:54 pm
Claro, lo que haces es aplicar un textformat distinto a los caracteres que son números

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 27 Sep 2014 01:23 pm
Hice lo siguiente, para probar el código que me pasaste:
- Creé un nuevo archivo AS3.
- Añadí en el escenario un textInput.
- A ese textInput le di de nombre de instancia: inputfield.
- Añadi el siguiente código:

import flash.text.TextFormat;
import fl.managers.StyleManager;

var textoInput:TextFormat = new TextFormat();
textoInput.size = 25;
textoInput.color = 0x0000FF;
StyleManager.setComponentStyle(TextInput, "textFormat", textoInput);

var tft:TextFormat = new TextFormat();

tft.size = 10;

inputfield.addEventListener(Event.CHANGE, changeListener);

function changeListener (evt:Event):void
{
var str:String = (evt.target as TextField).text;
var pos:int = str.length-1;
if(Number(str.charAt(pos)))
{
(evt.target as TextField).setTextFormat(tft, pos, pos+1)
}
}

Y no me funciona. Cada vez que introduzco un carácter en el input me da un mensaje de error:

TypeError: Error #1009: Cannot access a property or method of a null object reference.
at Sintítulo1_fla::MainTimeline/changeListener()
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at fl.controls::TextInput/handleChange()

Y además es igual que ponga letras o número, siempre aparecen del mismo tamaño.
Muchas gracias!

Por Xaora

30 de clabLevel



 

chrome
Citar            
MensajeEscrito el 29 Sep 2014 12:08 pm
Tienes que usar un campo de texto que setees como input, no un componente input textfield, que son cosas distintas.

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 29 Sep 2014 12:50 pm
Ya, pero yo tengo ya un input textfield, no puedo hacerlo conseguir igualmente que los datos introducidos en ese campo si son números tengan un tamaño menor?

Por Xaora

30 de clabLevel



 

chrome
Citar            
MensajeEscrito el 29 Sep 2014 12:54 pm
Si usas un textfield con el mismo nombre de instancia y borde (lo marcas en el inspector de propiedades) marcado como input es exactamente lo mismo. De todas formas si querés mantener el componente, investigalo no será muy diferente

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 29 Sep 2014 01:03 pm
No si efectivamente lo que quiero es mantener el componente tal y como lo tengo. Ya estuve mirando de corregir el código que te puse, pero no tengo ni idea de cómo hacerlo.
Muchas gracias!

Por Xaora

30 de clabLevel



 

chrome
Citar            
MensajeEscrito el 02 Oct 2014 10:21 am
Alguien me podría ayudar.
Muchísimas gracias!

Por Xaora

30 de clabLevel



 

chrome
Citar            
MensajeEscrito el 02 Oct 2014 11:19 am
Con un textfield lo puedes resolver, si quieres ir con algo mas complejo, supongo que es porque lo puedes manejar ... a menos que justifiques por que el overload de usar un componente en vez de un textfield

Joge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.