2010-03-19 4 views
1

J'ai une fonction qui calcule combien de caractères restants l'utilisateur peut taper, mais je ne sais pas pourquoi il commence seulement à compter à partir des 2e caractères. Moyens à la fin, je serai capable de taper un caractère supplémentaire à partir du montant maximum que je définis.Les personnages comptent seulement commencer à compter sur le 2ème caractère?

wInput.maxChars=30 

wInput.addEventListener(KeyboardEvent.KEY_DOWN, calculate); 
private function calculate(event:Event=null):void { 
       NameRC=wInput.maxChars-wInput.length; 
       remainingA.text=NameRC; 

     } 

fonction wInput:

private function input():void { 
      //name input 
      wInputF.font=arial.fontName; 
      wInputF.color=0x818181; 
      wInputF.size=15; 
      wInputF.align=TextFormatAlign.JUSTIFY; 
      wInputF.leftMargin=5; 
      wInputF.rightMargin=10; 


      wInput.defaultTextFormat=wInputF; 
      wInput.border=true; 
      wInput.borderColor=0xE6E6E6; 
      wInput.selectable=true; 
      wInput.type=TextFieldType.INPUT; 
      wInput.maxChars=30; 
      wInput.width=wBox.width-wType.textWidth-70; 
      wInput.height=wInput.textHeight+5; 
      wInput.x=wBox.x+wType.width+10; 
      wInput.y=wType.y-5; 
      wBox.addChild(wInput); 

      //calculate remaining characters 
      remaining(); 
      remainingC.x=wInput.x+wInput.width+20; 
      remainingC.y=wInput.y+12; 
      wInput.addEventListener(KeyboardEvent.KEY_DOWN, calculate); 
     } 
+0

Pouvez-vous confirmer que wInput est en fait un composant TextInput normal? Si c'est le cas, je ne vois pas pourquoi cela ne fonctionnerait pas. –

+0

ce n'est pas un composant, c'est un champ de texte créé dynamique. il pouvait compter, mais seulement à partir des 2e caractères ... – Hwang

Répondre

0

Je ne suis pas tout à fait sûr de ce que nameRC est, et si wInput est le TextField, où avez-vous mis sa propriété .text? Quoi qu'il en soit, en continuant le seul endroit que vous définissez une propriété .text, qui est:

remainingA.text=NameRC; 

Je suppose que cela pourrait être le faire toujours 1 chiffre derrière parce que vous faites le maximum - calcul de la longueur avant d'ajouter quoi que ce soit au TextField. Donc, quand vous faites ce calcul pour la première fois, il n'y a rien dans le TextField, même si vous venez d'attraper un événement Keyboard. Donc ça va retourner 0; Après cela, vous ajoutez quelque chose sur le terrain. Donc, la prochaine fois que l'événement Keyboard est déclenché, c'est un retard. Ma seule supposition est que vous avez juste besoin d'échanger ces lignes.

Je pourrais être façon au large, bien;)

0

Je suis tombé sur ce à partir d'une recherche google au hasard et je me suis dit dehors du commentaire de Debu sur la façon dont le champ de texte n'a pas le caractère encore lorsque l'événement a été déclenché. Ampoule! Semblait si évident après cela, j'ai changé KeyboardEvent.KEY_DOWN à KeyboardEvent.KEY_UP. Ça semble fonctionner comme je le veux maintenant. J'espère que cela aidera presque 2 ans plus tard!

-1

Dans votre code, le changement KeyboardEvent.KEY_DOWN, calculate-KeyboardEvent.KEY_UP, calculate

+0

Cette réponse a déjà été fournie par vanhomRF il y a plus d'un an! – duTr

0

Essayez celui-ci ..

wInput.addEventListener(KeyboardEvent.KEY_UP, calculate); 
private function calculate(event:Event=null):void 
{ 
remainingA.text=String(wInput.text.length); 
}