2011-05-03 3 views
1

Android 게임에 일시 중지/다시 시작 지원을 추가하려고합니다. 사용자가 일시 중지 옵션을 누를 때 현재 스레드를 일시 중지하고 사용이 재개 옵션을 선택할 때 스레드를 다시 시작하려면 어떻게합니까? 모든 제안/아이디어는 큰 도움이 될 것입니다.Android 게임에서 일시 중지/다시 시작 지원 추가

답변

0

아마도 스레드가 GUI를 업데이트하고있는 것 같습니다. 부울을 사용하여 현재 상태가 일시 중지되었는지 여부를 나타낼 수 있습니다. 스레드 루프 내에서 현재 상태가 일시 중지되었는지 여부를 확인하기위한 조건을 추가 할 수 있습니다. 일시 중지 된 경우 계속을 사용하여 루프를 건너 뛸 수 있습니다. 그렇지 않으면 전체 코드를 실행하십시오.

3

ReplicaIsland의 출처 나 LunarLander 예제의 샘플 코드를 살펴보십시오. 이 두 가지는 출발점에 대한 대중적인 예입니다.

또한 스레드가 작동하는 방식과 실제로 스레드를 일시 중지하려는 경우를 이해해야합니다. 또 다른 방법은 단순히 스레드가 실행되는 동안 도면/업데이트를 일시 중지하는 것입니다. 이와 같은 일부 코드는 사용자가 원하는 것일 수 있습니다.

@Override 
public void run() 
{ 
    while (mRun) 
    { 
     Canvas c = null; 
     try 
     { 
      c = mSurfaceHolder.lockCanvas(null); 
      synchronized (mSurfaceHolder) 
      { 
       if (mMode == STATE_RUNNING) 
       { 
        updatePhysics(); 
       } 
       doDraw(c); 
      } 
     } finally { 
      // ... 
     } 
    } 
} 

LunarLander 예제에서 run() 함수의 수정 된 버전입니다.

mMode == STATE_RUNNING 인 경우 updatePhysics() 함수가 호출되는 위치가 가장 중요합니다. 단순히 mMode를 변경하면 물리가 업데이트를 중지하고 효과적으로 게임을 일시 중지합니다.

나는 이것이 @vivek이 묘사 한 것보다 더 많거나 적음이라고 생각한다.

관련 문제