2014-04-26 1 views
1

에 대한 입력 텍스트 상자를 만드는 방법 : 이것은 ressurect하지만 내가 그러나이 스레드를 기반으로 monogame 메트로 응용 프로그램

메신저, 내 monogame 프로젝트에 대한 입력 텍스트 상자를 필요로하는 경우

Adding inputbox-like control to XNA game

확실하지 않음

메트로 앱 버전을 실행 중일 때이를 해결하는 방법에 대한 단서가 있습니까? 내가

내 자신의 GUI를 구축하기 위해 이미 노력했습니다,하지만 난 현재를 이동하는 방법, 텍스트가 텍스트 상자 이미지

폭의 말을 범위도 못할 그림을 제한하는 방법을 알아낼 질수 텍스트 인덱스를 왼쪽에있는 이전 포인트로 이동

화살표 또는 오른쪽 화살표 키보드 키를 사용하여 다른 사람이 나를 도울 수 있습니까?

미리 도움을 청하십시오! 친절한 답변, Romulo Romero

답변

2

단어 줄 바꿈이 필요하지 않으므로 한 줄짜리 텍스트 상자를 원하는 것으로 가정합니다. 줄 바꿈이 필요하지 않으므로 여러 줄 입력보다 훨씬 쉽고 키와 문자를 입력해야합니다.

저는 모노 게임으로 일하지는 않았지만, 너무 오래 전에 xna 입력 상자를 만들었으므로 이것이 도움이되기를 바랍니다.

원하는 것은 배경 사각형 (이미지 일 수도 있음)을 정의하고 텍스트 커서 (I 빔 포인터라고도 함) 위치를 기억하는 것입니다. 커서 뒤에있는 문자의 문자와 새로 입력 한 문자의 입력 위치입니다. 이제 코드에서, 여기 당신의 텍스트 상자 클래스에해야하는 변수는 (당신이 가장 쉬운 것이다, 그것을 위해 클래스를 사용하는 가정) :

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가 변경됩니다. 그리고 텍스트 등을 그리기,하지만 그 물건은 꽤 간단합니다;)

희망이 도움이! ~ 루카