简单的问题,基本上有人能告诉我如何使它,以便当我按下java中的“said”键时,它执行的任务与我按住它时相同。例如,一旦我点击一个键,他移动一定的距离,但他所走的距离与我持有该键的时间成正比。我需要的是,即使我按0.5秒或20秒,它走的距离是一样的。
基本上,这是我在主类中的关键事件(以记录用户输入)。
public void keyPressed(KeyEvent e) {
switch (e.getKeyCode()) {
case KeyEvent.VK_UP:
System.out.println("Move up");
break;
case KeyEvent.VK_DOWN:
currentSprite = characterDown;
if (knight.isJumped() == false){
knight.setDucked(true);
knight.setSpeedX(0);
}
break;
case KeyEvent.VK_RIGHT:
knight.moveRight();
knight.setMovingRight(true);
knight.setMOVESPEED(5);
knight.setMovingRight(false);
break;
case KeyEvent.VK_SPACE:
knight.jump();
break;
}
}
@Override
public void keyReleased(KeyEvent e) {
switch (e.getKeyCode()) {
case KeyEvent.VK_UP:
System.out.println("Stop moving up");
break;
case KeyEvent.VK_DOWN:
currentSprite = character;
knight.setDucked(false);
break;
case KeyEvent.VK_RIGHT:
knight.stopRight();
knight.setMOVESPEED(5);
break;
case KeyEvent.VK_SPACE:
break;
}
}
这是根据我设置的movespeed背景滚动的部分。
//Scrolls Background accordingly.
if (speedX < 0) {
centerX += speedX;
}
if (speedX == 0 || speedX < 0) {
bg1.setSpeedX(0);
bg2.setSpeedX(0);
}
if (centerX <= 200 && speedX > 0) {
centerX += speedX;
}
if (speedX > 0 && centerX > 200) {
bg1.setSpeedX(-getMOVESPEED());
bg2.setSpeedX(-getMOVESPEED());
}
嘿,伙计们,这是整个角色班希望能有所帮助
package com.jisc.framework;
导入java.awt.Rectangle;导入java.awt.graphics;
公级骑士{
final int JUMPSPEED = -15;
private int MOVESPEED = 5;
final int GROUND = 202;
private int centerX = 350;
private int centerY = GROUND;
private boolean jumped = false;
private boolean movingLeft = false;
private boolean movingRight = false;
private boolean ducked = false;
private static Background bg1 = Main.getBg1();
private static Background bg2 = Main.getBg2();
private int speedX = 0;
private int speedY = 0;
public void update() {
// Moves Character or Scrolls Background accordingly.
if (speedX < 0) {
centerX += speedX;
}
if (speedX == 0 || speedX < 0) {
bg1.setSpeedX(0);
bg2.setSpeedX(0);
}
if (centerX <= 200 && speedX > 0) {
centerX += speedX;
}
if (speedX > 0 && centerX > 200) {
bg1.setSpeedX(-getMOVESPEED());
bg2.setSpeedX(-getMOVESPEED());
}
// Updates Y Position
if (centerY + speedY >= 202) {
centerY = 202;
}else{
centerY += speedY;
}
// Handles Jumping
if (jumped == true) {
speedY += 1;
if (centerY + speedY >= 202) {
centerY = 202;
speedY = 0;
jumped = false;
}
}
// Prevents going beyond X coordinate of 0
if (centerX + speedX <= 60) {
centerX = 61;
}
}
public void moveRight() {
if (ducked == false) {
speedX = MOVESPEED;
if (MOVESPEED >= 5){
MOVESPEED ++;
}
if (MOVESPEED >= 7 ){
MOVESPEED = 0;
}
}
}
public void moveLeft() {
if (ducked == false) {
speedX = -getMOVESPEED();
}
}
public void stopRight() {
setMovingRight(false);
stop();
}
public void stopLeft() {
setMovingLeft(false);
stop();
}
public void stop() {
if (isMovingRight() == false && isMovingLeft() == false) {
speedX = 0;
}
if (isMovingRight() == false && isMovingLeft() == true) {
moveLeft();
}
if (isMovingRight() == true && isMovingLeft() == false) {
moveRight();
}
}
public void jump() {
if (jumped == false) {
speedY = JUMPSPEED;
jumped = true;
}
}
public int getCenterX() {
return centerX;
}
public int getCenterY() {
return centerY;
}
public boolean isJumped() {
return jumped;
}
public int getSpeedX() {
return speedX;
}
public int getSpeedY() {
return speedY;
}
public void setCenterX(int centerX) {
this.centerX = centerX;
}
public void setCenterY(int centerY) {
this.centerY = centerY;
}
public void setJumped(boolean jumped) {
this.jumped = jumped;
}
public void setSpeedX(int speedX) {
this.speedX = speedX;
}
public void setSpeedY(int speedY) {
this.speedY = speedY;
}
public boolean isDucked() {
return ducked;
}
public void setDucked(boolean ducked) {
this.ducked = ducked;
}
public boolean isMovingRight() {
return movingRight;
}
public void setMovingRight(boolean movingRight) {
this.movingRight = movingRight;
}
public boolean isMovingLeft() {
return movingLeft;
}
public void setMovingLeft(boolean movingLeft) {
this.movingLeft = movingLeft;
}
public int getMOVESPEED() {
return MOVESPEED;
}
public void setMOVESPEED(int mOVESPEED) {
MOVESPEED = mOVESPEED;
}
}
使用布尔标志。这将出现在keypressed
方法中。
private boolean canMoveUp = true; // same for up, down, etc.
...
case KeyEvent.VK_UP:
if (canMoveUp)
{
System.out.println("Move up");
canMoveUp = false;
}
break;
仅此一项只能起作用一次。当钥匙被释放时,你必须让移动再次成为可能。这将出现在keyreleased
方法中。
case KeyEvent.VK_UP:
System.out.println("Stop moving up");
canMoveUp = true;
break;
这将确保当您按下一个键时只移动一次,并允许您按下该键任意次数。
问题内容: 有没有办法监听Java中的任何异常? 我的目的是创建一个侦听和收集Java中所有出现的错误的库。有什么办法吗? 问题答案: 您可以通过Thread.UncaughtExceptionHandler捕获每个未捕获的异常。如果那还不够的话,我可能会建议一些AOP /字节码编织解决方案 来对每个创建的异常进行监视。
问:如何让客户端即能通过ipv4地址访问,也能通过ipv6地址访问? 答:在初始化容器的时候监听地址写[::]即可。 例如 $worker = new Worker('http://[::]:8080'); $gateway = new Gateway('websocket://[::]:8081');
一个监听器里面的应用代码在运行期间可能会抛出异常。一些监听器通知发生在应用中的另一个组件调用树过程中。这方面的一个例子是一个Servlet 设置了会话属性,该会话监听器抛出未处理异常。容器必须允许未处理的异常由描述在10.9节“错误处理”的错误页面机制处理。如果没有为这些异常指定错误页面,容器必须确保返回一个状态码为500的响应。这种情况下,不再有监听器根据事件被调用。 有些异常不会发生在应用中的
最后,正如你所看到的,我的游戏同时处理全屏模式和窗口模式。这两个问题都发生。
问题内容: 我有一个页面,其中通过ajax引入了内容。我遇到的问题是在内容加载后添加相关的事件侦听器。有没有办法告诉浏览器再次从头开始运行所有脚本? 以下是从页面顶部开始运行的简单代码示例,显然,通过AJAX引入的与’.RRCustomizeBox .customize’匹配的任何新html元素都不会具有以下click事件。 例如: 谢谢你的提示 约翰 问题答案: 您可以将所有初始化代码放在函数中
常常它是有用的能够接受附加的回调为了切割关注点穿过一些不同的重试 为了这个目的Spring Batch 提供了RetryListene 接口,RetryTemplate 允许使用者注册RetryListene,并且他们将发送回调随从RetryContext和Throwable,在迭代期间可用。 这个接口看起来像这样: public interface RetryListener { voi