以下均转自Android游戏编程入门经典,转载请标明出处
先来看看按键处理。首先,它必须要与接收键盘事件的View相连接。接下来,在按键被按下时它必须存储各个按键的当前状态以便轮询。它也必须保持一个KeyEvent实例的列表。最后,它必须正确地同步所有这一切工作,因为当从游戏主循环(在一个不同的线程中执行)轮询时,它将从UI线程中接收事件。让我们在查看一下KeyEvent类。
public static class KeyEvent {
public static final int KEY_DOWN = 0;
public static final int KEY_UP = 1;
public int type;
public int keyCode;
public char keyChar;
}
KeyEvent类只定义了两个键盘事件类型的编码常量以及3个成员变量,这3个成员变量分别存储类型、按键编码以及事件的Unicode字符。
KeyboardHandler.java:处理按键
package org.example.androidgames.framework.impl;
import java.util.ArrayList;
import java.util.List;
import org.example.androidgames.framework.Input.KeyEvent;
import org.example.androidgames.framework.Pool;
import org.example.androidgames.framework.Pool.PoolObjectFactory;
import android.view.View;
import android.view.View.OnKeyListener;
public class KeyboardHandler implements OnKeyListener {
boolean[] pressedKeys = new boolean[128];
Pool<KeyEvent> keyEventPool;
List<KeyEvent> keyEventsBuffer = new ArrayList<KeyEvent&g