我目前正在开发XNA / C#。
当用户按下某个键(Keys.Right
)时,我需要移动一个对象。
我希望这种情况发生
我已经实施了第一个:
_kbOld = _kbNew;
_kbNew = _kb.GetState();
if(_kbNew.IsKeyDown(Keys.Right) &&
_kbOld.IsKeyUp(Keys.Right))
{
//Do something
}
我该怎么做其他动作? 我有以下想法:
一个Queue<KeyboardState>
,跟踪上一个KeyboardState
保存上次按键的时间及其释放时间(GameTime
)
它应该像Windows中的文本输入一样工作:当你持有一个字母时,它会在一段时间后重复。
我应该使用哪种方式?你有其他想法吗?
提前致谢!
答案 0 :(得分:2)
我会像你建议的那样存储最后一次推送时间:
if (IsPressed())
{
// Key has just been pushed
if (!WasPressed())
{
// Store the time
pushTime = GetCurrentTime();
// Execute the action once immediately
// like a letter being printed when the button is pressed
Action();
}
// Enough time has passed since the last push time
if (HasPassedDelay())
{
Action();
}
}
答案 1 :(得分:0)
我记得在javascript中做类似的事情
答案 2 :(得分:0)
我建议你制作自己的Key和Keyboard课程。在键盘中你可以创建方法updateInput(),它会更新每个Key的状态,你可以使用这样的advenced函数。 在Key类中,您可以使用
保存上次按下按键的时间以及按下按键的时间 (GameTime)
@JuannStrauss 肯定不是计时器。