0

我希望每当 Fla 运行时,焦点都将放在一个名为“inputField”的输入文本上。问题是,这不起作用:

stage.focus = vcam.inputField;

这不起作用,是的,您可以键入 A - Z 和 0 - 9,但例如 Backspace 在该字段中不起作用,您必须先单击它。

另外,我有一个单独的函数来处理箭头键和 ENTER 键,因此 inputField 可能不会使用它们。

我知道他们唯一的方法是为每个按键制作这样的功能:

function inputHandle(event:KeyboardEvent):void
{

 if (event.keyCode == Keyboard./*keycode here*/)
  {
    vcam.inputField.text += "/*letter, number, or space*/";
  }

 if (event.keyCode == Keyboard./*another keycode here*/)
  {
    vcam.inputField.text += "/* anotherletter, number, or space*/";
  }

 /*And so on with every key*/
}

但这似乎有点愚蠢,他们一定是一种更快的方法!

4

1 回答 1

0

你能提供更多关于你的案子的细节吗?

因为这对我来说很好:

package {

    import flash.display.MovieClip;
    import flash.display.Sprite;
    import flash.events.MouseEvent;
    import flash.text.TextField;
    import flash.text.TextFieldType;

    public class asExample extends Sprite {

        public var inputTextField : TextField;

        public var focusButton : MovieClip;

        public function asExample() {
            inputTextField = new TextField();
            inputTextField.width = 300;
            inputTextField.height = 50;
            inputTextField.multiline = true;
            inputTextField.border = true;
            inputTextField.type = TextFieldType.INPUT;
            addChild(inputTextField);

            focusButton = new MovieClip();
            focusButton.x = inputTextField.x;
            focusButton.y = 60;
            focusButton.graphics.beginFill(0xFF0000);
            focusButton.graphics.drawRect(0, 0, 50, 50);
            focusButton.graphics.endFill();
            focusButton.addEventListener(MouseEvent.CLICK, onFocusButtonClick);
            addChild(focusButton);
        }

        private function onFocusButtonClick(event : MouseEvent) : void {
            stage.focus = inputTextField;
            inputTextField.setSelection(0, 0);
        }
    }
}
于 2012-07-19T15:11:00.137 回答