我试图使用过剩框架来处理我用c ++编写的游戏的按键。当按下特定键时,我想开始绘制一条新曲线,因此我创建一条新曲线并将其添加到我的曲线容器中。但是,当我使用onKeyboard并进行调试时,我发现当按下某个键时会反复调用此函数,而不仅仅是在初始按下时。因此,每按一次键,它就会产生大约12条曲线。我的onKeyboard代码如下。任何帮助将非常感激!
void onKeyboard(unsigned char key,int x, int y) {
keysPressed[key] = true;
switch (key) {
case 'l':
curvesContainer.addCurve(new lCurve());
break;
case 'p':
curvesContainer.addCurve(new pCurve());
}
glutPostRedisplay();
}
答案 0 :(得分:0)
您只需检查keyPressed [key]是否已经为真,只有在曲线为假时才添加曲线。
void onKeyboard(unsigned char key,int x, int y)
{
if (keysPressed[key] == false)
{
keysPressed[key] = true;
switch (key)
{
case 'l':
curvesContainer.addCurve(new lCurve());
break;
case 'p':
curvesContainer.addCurve(new pCurve());
break;
}
}
glutPostRedisplay();
}
您还需要使用glutKeyboardUpFunc清除onKeyUp事件中的keysPressed [key]
void onKeyUp(unsigned char key,int x, int y)
{
keysPressed[key] == false;
}
答案 1 :(得分:0)
答案 2 :(得分:0)
在studio.in中使用输入flush定义 它避免了其余的输入