讨论!Canvas以及GameCanvas下的按键有关问题?

讨论!Canvas以及GameCanvas下的按键问题??我现在是这样的定义拉一个整型inti当按下上或下或左或右时自增1

讨论!Canvas以及GameCanvas下的按键问题??
我现在是这样的
定义拉一个整型int   i
当按下上或下或左或右时自增1

在Canvas下用keyPressed来检测按键
在GameCanvas下用拉input()一个方法,在方法中int   keyStates   =   getKeyStates();  
  if   ((keyStates   &   LEFT_PRESSED)   !=   0)
          {
            i=i+1;
          }
来检查按键,将input()方法加入到线程RUN()中不断检查按键

现在问题来拉
在Canvas下按下右,i就增拉1,这是对的
但在GameCanvas下就出问题拉,按下右,i就增拉很多,也就是检查按拉N次

这就是我郁闷拉?为什么在GameCanvas会出这种问题勒?
有能解释下的吗

[解决办法]
Canvas里keyPressed方法里,只有按下去才检测到一次事件
但是GameCanvas里的getKeyState是返回的按键状态,就是说按着不动,会多次触发你的事件