我有一个函数可以计算用户可以输入的剩余字符数,但我不知道为什么它只从第2个字符开始计算。最后的手段我可以从我设定的最大数量中输入一个额外的字符。
wInput.maxChars=30
wInput.addEventListener(KeyboardEvent.KEY_DOWN, calculate);
private function calculate(event:Event=null):void {
NameRC=wInput.maxChars-wInput.length;
remainingA.text=NameRC;
}
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 :(得分:0)
我不太确定nameRC是什么,如果wInput是TextField,你在哪里设置它的.text属性?无论如何,去你设置.text属性的唯一地方,即:
remainingA.text=NameRC;
我猜它可能总是落后1位数,因为你在向TextField添加任何内容之前进行了最大长度计算。所以,当你第一次进行计算时,TextField中没有任何东西,即使你只是抓住了一个键盘事件。所以它会返回0;然后你就可以在这个领域添加一些东西。因此,下次触发Keyboard事件时,它就落后了。我唯一的猜测是你只需要换掉这些线。
我可以方式关闭,但是;)
答案 1 :(得分:0)
我从一个随机的谷歌搜索中偶然发现了这一点,我从debu的评论中找出了关于文本字段在事件发生时如何没有字符的评论。灯泡!之后看起来如此明显,我将KeyboardEvent.KEY_DOWN更改为KeyboardEvent.KEY_UP。似乎工作我现在想要它。希望这有助于将近2年之后!
答案 2 :(得分:0)
试试这个..
wInput.addEventListener(KeyboardEvent.KEY_UP, calculate);
private function calculate(event:Event=null):void
{
remainingA.text=String(wInput.text.length);
}
答案 3 :(得分:-1)
在您的代码中,从KeyboardEvent.KEY_DOWN, calculate
更改为KeyboardEvent.KEY_UP, calculate