2017-02-24 4 views
0

이것을 확인하시기 바랍니다 link. 다음 코드는이 링크에 있습니다. 터치 이벤트의 수를 제한하기 위해 스레드 수면을 사용해야한다는 이유가 확실하지 않습니다. 터치 이벤트로 푸시 된 이벤트를 처리하는 표면보기 및 gamethread가 있습니다. 이 수면이 필요한지 아니면 대신 프레임 속도를 조절하여 gamethread에서 수면을 처리해야합니까?onTouchEvent 또는 표면보기 (안드로이드)에서 제어 프레임 속도를 실행하십시오

try { 
    Thread.sleep(16); 
    } catch (InterruptedException e) { 
    } 
    return true; 
    } 

전체 코드 2009에 게시 된 기사에

@Override 
public boolean onTouchEvent(MotionEvent event) { 
// we only care about down actions in this game. 
try { 
// history first 
int hist = event.getHistorySize(); 
if (hist > 0) { 
// add from oldest to newest 
for (int i = 0; i < hist; i++) { 
InputObject input = inputObjectPool.take(); 
input.useEventHistory(event, i); 
gameThread.feedInput(input); 
} 
} 
// current last 
InputObject input = inputObjectPool.take(); 
input.useEvent(event); 
gameThread.feedInput(input); 
} catch (InterruptedException e) { 
} 
// don't allow more than 60 motion events per second 
try { 
Thread.sleep(16); 
} catch (InterruptedException e) { 
} 
return true; 
} 

답변

0

귀하의 링크가 가리키는, 당신은 정말 최신 상태로 더 일을 찾기 위해 시도해야합니다.

코드 자체가 잘못 보입니다. 작성자는 UI 스레드를 차단하지 않도록 코드를 설계했지만 UI 스레드에서 호출 된 onTouchEvent()의 Thread.sleep (16)을 호출하고 차단합니다.

이 예제는 어떻게됩니까? 나는 그것을 자세히 읽지는 않았지만, 코드는 훨씬 나아 보인다 : https://www.codeproject.com/Articles/827608/Android-Basic-Game-Loop