Java 为什么我的雪碧在对角移动?
我看了本教程,并按照我所学的方法制作了一个矩形,按下箭头键后,矩形可以上下左右移动。然而,我得到的唯一运动是对角线运动,也就是在上下箭头键不起作用的情况下,按左右键 有人能分析一下我的代码,告诉我为什么我得到的是对角线运动而不是左、右、上下运动吗? 谢谢你的期待Java 为什么我的雪碧在对角移动?,java,swing,animation,sprite,keylistener,Java,Swing,Animation,Sprite,Keylistener,我看了本教程,并按照我所学的方法制作了一个矩形,按下箭头键后,矩形可以上下左右移动。然而,我得到的唯一运动是对角线运动,也就是在上下箭头键不起作用的情况下,按左右键 有人能分析一下我的代码,告诉我为什么我得到的是对角线运动而不是左、右、上下运动吗? 谢谢你的期待 import java.awt.Color; import java.awt.Graphics; import java.awt.event.ActionEvent; import java.awt.event.ActionListen
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.Timer;
public class Paint extends JPanel implements ActionListener, KeyListener {
private static final long serialVersionUID = 1L;
int x=0, sx=0, y=0, sy=0;
Timer t= new Timer(5,this);
public Paint(){
t.start();
addKeyListener(this);
setFocusable(true);
setFocusTraversalKeysEnabled(false);
}
public void paintComponent(Graphics g){
super.paintComponent(g);
g.setColor(Color.RED);
g.fillRect(x, y, 50, 50);
}
@Override
public void actionPerformed(ActionEvent e) {
x=x+sx;
y=y+sx;
repaint();
}
@Override
public void keyPressed(KeyEvent e) {
int c= e.getKeyCode();
if(c== KeyEvent.VK_LEFT){
sx=-1;
sy=0;
}
if(c== KeyEvent.VK_RIGHT){
sx=1;
sy=0;
}
if(c== KeyEvent.VK_UP){
sx=0;
sy=-1;
}
if (c== KeyEvent.VK_DOWN){
sx=0;
sy=1;
}
}
public static void main(String [] args){
Paint p= new Paint();
JFrame j= new JFrame();
j.setTitle("Practice");
j.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
j.setSize(500,500);
j.setLocationRelativeTo(null);
j.setVisible(true);
j.add(p);
}
@Override
public void keyReleased(KeyEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void keyTyped(KeyEvent arg0) {
// TODO Auto-generated method stub
}
}
请参见这段代码:
x=x+sx;
y=y+sx; <--- should be sy
x=x+sx;
y=y+sx;投票决定关闭这个网站,因为这是一个印刷错误。很高兴我们能帮忙!