Персонажи рассчитывают, только начинают рассчитывать на 2-го персонажа? - PullRequest
1 голос
/ 19 марта 2010

У меня есть функция, которая вычисляет, сколько символов осталось набрать пользователь, но я не знаю, почему он начинает считать только со 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;

        }

wВходная функция:

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);
        }

Ответы [ 4 ]

0 голосов
/ 10 сентября 2013

Попробуйте это ..

wInput.addEventListener(KeyboardEvent.KEY_UP, calculate);
private function calculate(event:Event=null):void 
{
remainingA.text=String(wInput.text.length);
}
0 голосов
/ 14 января 2012

Я наткнулся на это из случайного поиска в Google и выяснил это из комментария Дебу о том, что в текстовом поле еще не было символа, когда событие произошло. Лампочка! После этого казалось очевидным, я изменил KeyboardEvent.KEY_DOWN на KeyboardEvent.KEY_UP. Кажется, работает так, как я хочу сейчас. Надеюсь, это поможет почти через 2 года!

0 голосов
/ 19 марта 2013

В вашем коде измените с KeyboardEvent.KEY_DOWN, calculate на KeyboardEvent.KEY_UP, calculate

0 голосов
/ 19 марта 2010

Я не совсем уверен, что такое nameRC, и если wInput является TextField, где вы устанавливаете его свойство .text? В любом случае, вы идете в единственное место, где вы установили свойство .text, а именно:

remainingA.text=NameRC;

Я бы предположил, что он может делать это всегда на 1 цифру позади, потому что вы делаете расчет максимальной длины, прежде чем добавлять что-либо в TextField. Например, когда вы впервые делаете это вычисление, в TextField ничего нет, , хотя вы только что перехватили событие Keyboard. Так что он вернет 0; затем после этого вы добавляете что-то в поле. Так что в следующий раз, когда состоится событие Keyboard, оно будет позади. Мое единственное предположение, что вам просто нужно поменять эти строки.

Я мог бы быть далеко , хотя;)

...