如何更改AS3中的活动文本字段?

时间:2014-06-08 23:55:34

标签: android actionscript-3 textfield

我在舞台上有6个文本字段以及数字为0-9的键盘。

最终这将是一个Android应用程序。我希望能够选择一个文本字段,然后按下键盘按钮,并将数字显示在活动文本字段中。

我一直在尝试Google活动字段和类似搜索,似乎无法找到参考。

请记住,我在黑暗中摸索着我试图从多个教程中收集到的东西。这段代码可能是完全垃圾:

package  {

public class main {

    import flash.display.MovieClip;
    import flash.events.MouseEvent;
    import fl.managers.FocusManager;
    var focus:FocusManager = new FocusManager(this);

    btn_1.addEventListener(MouseEvent.MOUSE_DOWN, inputNumber);

    public function inputNumber(m:MouseEvent){
            focus.text = 1;
    }

    public function main() {
        // constructor code
    }

}

}

当前错误:

C:\Users\Otaku\Documents\lottocount\main.as, Line 19, Column 35 1118: Implicit coercion of a value with static type flash.display:InteractiveObject to a possibly unrelated type flash.text:TextField.

C:\Users\Otaku\Documents\lottocount\main.as, Line 14, Column 44 1120: Access of undefined property onMyButtonClick.

C:\Users\Otaku\Documents\lottocount\main.as, Line 14, Column 3  1120: Access of undefined property btn_1.

C:\Users\Otaku\Documents\lottocount\main.as, Line 13, Column 47 1120: Access of undefined property onFocusIn.

C:\Users\Otaku\Documents\lottocount\main.as, Line 13, Column 3  1120: Access of undefined property stage.

1 个答案:

答案 0 :(得分:1)

如果您访问focus对象,则会引用您当前处于活动状态(关注对象)的对象。

但实际上,只要有一个允许输入的TextField就可以在触摸时打开键盘视图(仅限移动设备)。

您也可以告诉Flash不要自动显示键盘,如果您打算使用自己的键盘,那么您可以使用焦点或制作自己的系统,根据最后一次触摸的位置跟踪相应的TextField。

修改

这是一个简单的例子,说明如何做到这一点 在这个例子中,我有两个TextField:tf1和tf2。此外,我还添加了一个按钮,用于覆盖需要将最后一个焦点保存在具体类型的对象上的情况。按钮名称是myButton。

var lastSelectedTextField:TextField; // this will hold our last selected TextField

// make sure stage exists. If you're writing script in a frame, don't mind, if you use OOP approach you can do so by adding an eventListener for the event ADDED_TO_STAGE

stage.addEventListener(FocusEvent.FOCUS_IN, onFocusIn); // onFocusIn will trigger every time a focus is changed.
myButton.addEventListener(MouseEvent.CLICK, onMyButtonClick);

function onFocusIn(e:FocusEvent):void
{
    if (stage.focus is TextField)
           lastSelectedTextField = stage.focus as TextField;
}

function onMyButtonClick(e:MouseEvent):void
{
    trace("Text of the last selected text field is:", lastSelectedTextField.text);
}