我是Java编程的初学者
物体一次只能移动一个正方形,如果用户想移动到另一个正方形,他们必须再次按键。我的移动方法如下:
public void move() {
x += dx;
y += dy;
}
我正在使用KeyListener接口来实现keyPressed、keyTyped和KeyRelease方法,我有下面的片段中的条件,在keyPressed内部
//KeyPressed
int c = e.getKeyCode();
if (c == KeyEvent.VK_UP) {
player.setDy(-5);
}
这允许对象自由移动。但是,只要按下向上箭头,它显然会继续移动。
有没有办法让物体向上移动一次,比如说-5,然后即使按键仍然按下,也要停止?
我不确定是否需要更改我的移动方法或KeyListener方法来执行此操作。
我希望我已经足够清楚我在问什么,我非常感谢任何建议。
最简单的方法是添加一个布尔值来指示按下了移动键
类成员:boolean movingKeyPressed=false
按下in键:
if (movingKeyPressed) {
return;
} else {
// do stuff
movingKeyPressed = true;
}
在关键发布方法中:
movingKeyPressed = false;
首先:你应该使用同步如果你调用类的方法从监听器像keyPress
或keyReleated
-这是因为你的监听器方法可以从多个线程调用,所以你的类方法(player.setDy()
)可以(并将)并行调用-你需要确保每次调用setDy
发生在下一个之前。
此外:keyTyped在许多情况下都要好得多:https://stackoverflow.com/a/7071810/351861
例如:
public void keyTyped(KeyEvent arg0) {
if(arg0.getKeyCode() == KeyEvent.VK_UP)
{
synchronized(player)
{
player.setDy(-5);
}
}
}
这将按顺序可靠地调用setDy。现在,您需要做的就是确保setDy按预期工作,因此只需设置一次位置
我整天都在用这些按钮。首先,这两个按钮都在对方的上面,看起来像这样,http://I.imgur.com/wvmntpq.jpg,现在在这里发布了一个问题之后,它看起来像这样,http://imgur.com/omxdqct我被告知在我的css中改变如下: css:button{ float:left;margin-top:250px;color:white;display:block;margi
我以编程方式生成了许多按钮(一些按钮用于增加值,而另一些按钮用于减少值),当它们调整的值达到最大值或最小值时,我会禁用这些按钮。(即,当达到最大值时,“增加”按钮被禁用,而当达到最小值时,“减少”按钮被禁用。)除了禁用,我还将按钮状态设置为“按下”,以直观地指示已达到极限值,并且按钮不再工作。 我的按钮onClickListener的'增加'按钮看起来像这样: ClickListeners上相应的
我用tkinter创建了一个文本框。当按下Ctrl返回时,以下代码将停止创建换行符。 但是,我还想在用户键入Ctrl-Return时调用一个函数。下面调用该函数,但随后创建一个换行: 如果交换第三行和第四行,则没有换行符,但也不会调用该函数。 有没有一种既防止换行符又调用函数的方法?
问题内容: 从MDN for NodeList: 在某些情况下,NodeList是一个实时集合,这意味着DOM中的更改会反映在集合中。例如,Node.childNodes处于活动状态: 在其他情况下,NodeList是静态集合,这意味着DOM中的任何后续更改都不会影响集合的内容。document.querySelectorAll返回一个静态NodeList。 所以....有点烦!是否有任何关于哪些
我正在尝试制作一个计算贷款利息的简单程序。我这里的代码可以工作,但只会在按下'c'键时显示结果。我如何改变逻辑,以便一旦'c'被按下,结果就会出现在屏幕上。任何的帮助都是非常感谢的。
我有一个组件,它作为一个道具发送一个方法来改变表单的输入值(像任何基本表单一样)。在onChange开始工作后,我决定添加一个clear按钮来一次清除所有输入值,因此我创建了一个方法来清除所有输入。 示例: 像上面的方法那样清除会产生一个错误,因为我要移除state中的键,而表单输入的值是针对state的。没问题,所以我想,我只需要将setState中的所有输入添加到一个空字符串,如:which