Ввод TextField "ошибка" - PullRequest
       2

Ввод TextField "ошибка"

0 голосов
/ 25 июня 2010

Я пытаюсь получить ввод из текстового поля типа INPUT и сохранить его числовое значение для пары переменных, но когда я ввожу, например, 1 или любую цифру, я получаю Nan в отладке трассировки, после того, как я помещаю другую цифру, я получаю первый после того, как я положил другой, я получаю первые два и так далее, и так далее. Что я делаю не так? Вот некоторые фрагменты из моего кода.

        xSpeedField.addEventListener(TextEvent.TEXT_INPUT, inputXCapture);

        private function initField(field:TextField, label:String, x:uint, y:uint):void {
        var format:TextFormat = new TextFormat();
        format.color = 0x00FF00;
        var textLabel:TextField = new TextField();
        textLabel.text = label+":";
        textLabel.defaultTextFormat = format;
        panel.addChild(textLabel);          
        field.type = TextFieldType.INPUT;
        field.restrict = "0-9.\\-";
        field.text = "0";
        field.border = true;
        field.background = true;
        field.backgroundColor = 0x333333;
        field.width = FIELD_WIDTH;
        field.height = FIELD_HEIGHT;
        panel.addChild(field);
        field.x = x;
        field.y = y;

        textLabel.x = field.x - 20;
        textLabel.y = field.y;
    }

    private function onEnterFrameHandler(event:Event):void {                                                            
        if ( ball.x + xspeed > stage.stageWidth) {
            xspeed *= -1;            
        }
        else if ( ball.x + xspeed < 0 ) {
            xspeed *= -1;                
        }

        if ( ball.y + yspeed > stage.stageHeight - FIELD_HEIGHT - BALL_RADIUS) {
            yspeed *= -1;            
        }           
        else if ( ball.y + yspeed < 0 ) {           
            yspeed *= -1;
        }           
        ball.x += xspeed;
        ball.y += yspeed;
    }               

    private function inputXCapture(event:TextEvent):void {
        xspeed = Number(event.currentTarget.text);
        trace(event.currentTarget.text);
    }

1 Ответ

1 голос
/ 25 июня 2010

Когда отправляется TextEvent.TEXT_INPUT, пользовательский ввод еще не добавлен к text. Это полезно - вы можете позвонить event.preventDefault(), и ввод будет отменен, text останется прежним.

Использовать Event.CHANGE событие.

...