如何为monogame metro应用程序创建输入文本框

时间:2014-04-26 01:44:51

标签: input textbox xna monogame

基于这个主题:

Adding inputbox-like control to XNA game

不确定这是否是一个ressurect但我需要一个输入文本框为我的monogame项目,但我

运行metro应用程序版本,任何关于如何绕过它的线索?我一直在尝试建立

我自己的gui,但我无法弄清楚如何将文本范围限制在文本框图像的末尾

宽度,也无法弄清楚如何使用左侧

将当前文本索引移动到更早的点

使用右箭头键盘键或更远的箭头,任何人都可以帮我解决这个问题吗?

提前感谢您的帮助! 亲切的问候, Romulo Romero

1 个答案:

答案 0 :(得分:2)

我假设您想要一个单行文本框 - 这比多行更容易,因为您不需要自动换行 - 并且您已经找到了键和字符输入。

我没有使用过monogame,但是不久前我为xna做了一个输入框,所以我希望这会有所帮助。

您要做的是定义背景矩形(也可以是图像),并记住文本光标(也称为工字梁指针)位置。这是光标所在文本的字符,以及您输入新输入字符的位置。所以现在在代码中,这里是你在Textbox类中需要的变量(假设你将使用一个类,这将是最简单的):

string text = ""; //Start with no text
int cursorPos = 0;
//These are set in the constructor:
SpriteFont font;
Rectangle backRect;

现在您可以开始处理字符输入。无论何时输入字符,您都希望将其插入光标位置。但是你也想检查新文本是否不长于后面矩形的宽度,所以这就是代码的代码:

public void CharEntered(char c)
{
    string newText = text.Insert(cursorPos, c.ToString()) //Insert the char

    //Check if the text width is shorter than the back rectangle
    if (font.MeasureString(newText).X < backRect.Width)
    {
        text = newText; //Set the text
        cursorPos++; //Move the text cursor
    }
}

现在你要做的就是处理键输入,并在按下左箭头键或右箭头键时更改cursorPos。并绘制文本等,但这些东西很简单;)

希望这有帮助! 〜卢卡