+++++++++++++++++++++++++++++++++++++++++++++
++++++++++++ OGRE中按键的灵活控制 +++++++++++
+++++++++++++++++++++++++++++++++++++++++++++
1. 单键: 由下面的两个函数可以得到按键按下和释放时的状态。 //当键盘按键按下 bool onKeyPressed(const KeyEvent & evt); //当键盘按键释放 bool onKeyReleased(const KeyEvent & evt); evt.getKey()可以得到该键所对应的keycode,如果想进一步看到其10进制的制。 可以能过设置一个 unsigned long _keyCode;变量 _keyCode &= evt.getKey();//如此就能找到其对应的10进制了。 注:如果上面的 _keyCode 初始值为0Xff,而当按下键和释放键时,均用 keyCode ^= evt.getKey()。 (^异或,相同为0,不同为1)。最终按下后,keyCode = 0; 按键的keycode表:
2. 双键: 当你按下了D键,还没有释放,再去按A键,然后随便释放A或D这种情况。也就是两个键的组合按下或释放。 假设: 右键: D 为 0000 0001 (0x1) 左键: A 为 0000 0010 (0x2) 当你第一次按下键时,用一个变量S(初始为0xff)来“与”该键的对应值。以后就”或”。 当你释放时,就用变量S来和该键“异或“。 Eg: 当你第一次按下了D: S &=D(相当于把D付值给了S,S=0x1) 再按下A: S |= A (S = 0X3); 若释放了D: S ^=D (S =0X2).也就是说此时,还有A没有被释放掉。 若释放了A: S ^=A (S =0X1).也就是说此时,还有D没有被释放掉。 若A和D都释放掉了。 S = 0x00; 3. 多键: