- Code: Select all
public void run() {
while(mRun) {
Canvas c = null;
if(mPassedTime <= 0) {
updateGameState();
mPassedTime = System.currentTimeMillis();
}
if(System.currentTimeMillis() - mPassedTime >= mKeyIntervalInMillis)
mPassedTime = 0;
if(mTimerTask == null) {
mTimerTask = new TimerTask() {
public void run() {
}
};
mTimer.schedule(mTimerTask, mTaskIntervalInMillis);
}
try {
c = mSurfaceHolder.lockCanvas(null);
draw(c);
} finally {
if (c != null) {
mSurfaceHolder.unlockCanvasAndPost(c);
}
}
}
}
private void updateGameState() {
for(;;) {
GameEvent event = mEventQueue.poll();
//Если список событий пуст
if(event == null)
break;
//Для нажатия клавиш
if(event instanceof KeyGameEvent) {
processKeyEvent((KeyGameEvent)event, null);
}
}
}
private void processKeyEvent(KeyGameEvent event, Object context) {
if(event.keyCode == KeyEvent.KEYCODE_DPAD_UP) {
bottle.figure.up();
}
else if(event.keyCode == KeyEvent.KEYCODE_DPAD_DOWN) {
bottle.figure.down();
}
else if(event.keyCode == KeyEvent.KEYCODE_DPAD_LEFT) {
bottle.figure.left();
}
else if(event.keyCode == KeyEvent.KEYCODE_DPAD_RIGHT) {
bottle.figure.right();
}
}
I try to write Tetris. I have tried a lot of code, but it still doen't work properly. The figure rotates too slow or two times at once. Can anybody help with this?


