2011-03-12 3 views
1

Java에서 Windows Phone 7 XNA로 게임 엔진을 이식하려고합니다. 내가 고민하는 한 가지는 모달 대화 상자를 만드는 방법입니다. 대화는 다른 모든 것들처럼의 SpriteBatch를 사용 XNA에서 렌더링,하지만 기본적으로 내가 원하는 것은이 같은입니다 : Dialog.Ask 사용자까지 반환하지 않습니다XNA 내에서 두 번째 runloop 만들기

result = Dialog.Ask("Some Question?", DialogButtons.YesNo); 

이 버튼 중 하나를 클릭합니다.

  1. RunOneFrame 디버깅 목적으로 만 가정입니다 :이 가진 몇 가지 문제가 있습니다

    private int runLoopCount; 
    public void BeginRunLoop() { 
        int runIndex = ++runLoopCount; 
        while (runLoopCount == runIndex) { 
        RunOneFrame(); 
        Thread.Sleep(1); 
        } 
    } 
    
    public void EndRunLoop() { 
        --runLoopCount; 
    } 
    

    : I 가까이 와서 한 적이있는 유일한 방법은 지속적으로 게임에 RunOneFrame()를 호출하는 방법이다.

  2. 입력이 작동하지 않습니다! TouchPanel.GetState() 또는 GamePad.GetState(PlayerIndex.One)을 호출해도 새로운 값이 반환되지 않습니다.

Game 클래스를 버리지 않고 실행 루프를 초기화하는 방법은 없으며 초기화를 위해 수행하는 모든 방법이 있습니까? 그리고 실제로는 모르겠다. 은 Windows Phone 7 XNA 응용 프로그램에 Main() 메서드가 없으므로 Game 클래스없이 수행해야합니다. 게임 생성자로 바로갑니다.

+0

이것은 XNA에서하기가 어렵습니다. 이거 해봤 니? http://msdn.microsoft.com/en-us/library/ff827868.aspx –

+0

이 메서드를 알고 있고 스프라이트를 사용하여 사용자 지정 대화 상자의 비동기 표시 구현하는 방법을 알고 있지만 정말 찾고 있어요. 동 기적으로 할 수있는 방법입니다. 나는 이미 (지원되지 않는) RunOneFrame과 너무 가까워서 입력이 누락되었습니다. –

+0

나는 다른 방법을 사용하여 터치와 키보드 상태를 감지했지만, 지금까지는 운이 없었습니다. 사용 가능한 유일한 방법은 XNA (작동하지 않음)와 Silverlight (사용하지 않음)에만 해당됩니다. –

답변

0

은 무엇 당신이 원하는 것은

protected override void Update(GameTime gameTime) 
    { 
     if (_modalDialogIsUp) 
     { 
      // handle only secesary mouse and button clicks 
     } 
     else 
     { 
      // normal mouse and button clicks 
     } 
    } 

    protected override void Draw(GameTime gameTime) 
    { 
     if (_modalDialogIsUp) 
     { 
      // draw only modal dialog 
     } 
     else 
     { 
      // draw game 
     } 
    } 

.. 또 다른 '상태', 당신은 단지 사용자가 뭔가 ... 그리고 _modalDialogIsUp 부울을 선택하지 않을 때까지 대화 상자를 보여 주어야을 추가하는 것입니다 그냥 undestang 수 없습니다 왜 그렇게 desparatly 정확히 모달 행동을 원한다 ... 그것은 새로운 "동기화"분파의 일종인가요? :)

+0

내가 가지고있는 게임 엔진을 포팅했기 때문에 그것을 원하고 이미 이미 사용하고있는 플랫폼에서이 게임 엔진을 사용하여 게임을 쉽게 포팅 할 수 있기를 원한다면 똑같은 방식으로 행동해야합니다. 그래서 이것은 받아 들일만한 해결책이 아닙니다. –

관련 문제