2017-02-24 2 views
0

これをチェックしてくださいlink次のコードはこのリンクからのものです。私はタッチイベントの数を制限するためにスレッドスリープを使用しなければならないと言う理由はわかりません。 私はタッチイベントによってプッシュされたイベントを処理するsurfaceviewとgamethreadを持っています。この睡眠が必要か、あるいはフレームレートをコントロールすることによって、睡眠をgamethreadで処理する必要がありますか?sleep()onTouchEventまたはSurfaceview(アンドロイド)のコントロールフレームレートを実行します

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

コード全体

@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

あなたのリンクポイント、2009年に掲載された記事に、あなたが本当により最新であるものを見つけるために試してみてください。

コード自体が間違っています。著者は、UIスレッドをブロックしないように設計されていますが、onTouchEvent()のThread.sleep(16)を呼び出してUIスレッドから呼び出してブロックします。

この例題はどうですか?私はそれを詳細には読んでいないが、コードははるかに良く見える:https://www.codeproject.com/Articles/827608/Android-Basic-Game-Loop

関連する問題