2011-01-11 3 views

ответ

0

Используйте существующую библиотеку пользовательского интерфейса, такую ​​как xWinForms. Вы можете найти дополнительные опции в вопросе UI library for XNA.

4

Вы используете C#, когда используете XNA. Рамка XNA - это всего лишь набор DLL, которые вы программируете против использования C#.

Что касается ввода ввода, вы можете либо закодировать собственные элементы управления, либо использовать некоторые существующие библиотеки. Оба варианта имеют свои плюсы и минусы.

У нас есть FAQ над на форумах XNA под названием «Что GUI системы существуют для платформы XNA», который, вероятно, будет полезным для чтения для вас ->http://forums.create.msdn.com/forums/t/15274.aspx

0

Если бы я делал это, я бы слушать для некоторых клавиш, а затем кнопки «Ввод». Затем я повторю это столько раз, сколько мне нужно. Код для него ниже.

KeyboardState key; 
OldKeyboardState oldKey; 
String input; 
//Puts final input in this 
String finalIn; 
String finalIn2; 
String finalIn3; 

protected override void Update(GameTime gameTime) 
{ 
    key = Keyboard.GetState(); 
    //Do for all acceptable characters 
    if (key.IsKeyDown(Keys.A) && key.IsKeyDown(Keys.RightShift) && oldKey.IsKeyUp(Keys.A) && oldKey.IsKeyUp(Keys.RightShift)) input = input + "A"; 
    else if (key.IsKeyDown(Keys.A) && oldKey.IsKeyUp(Keys.A) input = input + "a"; 
    //Etc. 
    //Finalize input when enter is pressed 
    if(key.IsKeyDown(Keys.Enter) && oldKey.IsKeyUp(Keys.Enter)) 
    { 
     finalIn = input; 
     input = ""; 
    } 
    //Finalize input when enter is pressed for second input 
    if(key.IsKeyDown(Keys.Enter) && oldKey.IsKeyUp(Keys.Enter) && finalIn != "") 
    { 
     finalIn2 = input; 
     input = ""; 
    } 
    //Etc. 
    //At end set oldKey = key, so we have the current one and the old one 
    oldKey = key; 
} 
protected override void Draw(GameTime gameTime) 
{ 
    GraphicsDevice.Clear(Color.CornflowerBlue); 
    //If desired, add in a draw string to show user what is being inputed 
    base.Draw(gameTime); 
} 
0

Проще реализовать свои собственные контрольные функции. Используйте spritebatch и зарегистрируйте штрихи в строчном буфере, затем покажите его на экране с помощью spriebatch.DrawString (..)

Смежные вопросы