3 年来我第一次成功地创建了一个(基本)动画 JApplet,但我对它移动时闪烁的图像感到恼火。Timer 对象使图像移动,而我的私有内部类“TimerListener”负责移动图像的动画运动。
这是我的 TimerListener 类的代码,我认为这个问题可能可以解决:
@Override
public void paint(Graphics g) {
super.paint(g);
g.drawImage(smileyFace.getImage(), xCoord, yCoord, this);
}
private class TimerListener implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
//Following if-else manipulates Y coordinate
if (goingUp) {
if (yCoord > minY) {
yCoord -= move;
}
else {
goingUp = false;
}
} else {
if (yCoord < (getContentPane().getHeight() - (smileyFace.getIconHeight()+ Y_OFFSET))) {
yCoord += move;
}
else {
goingUp = true;
}
}
//Following if-else manipulates X coordinate
if (goingSideways) {
if (xCoord > 0) {
xCoord -= move;
}
else {
goingSideways = false;
}
} else {
if (xCoord < (getContentPane().getWidth() - (smileyFace.getIconWidth() + X_OFFSET))) {
xCoord += move;
}
else {
goingSideways = true;
}
}
repaint();
}
}
如果有帮助,这是我的 JApplet 的屏幕截图 - 在这种情况下,巨魔的脸应该在黑色区域中移动,并在撞击它们时从侧面反弹:
对于那些想要运行和测试 JApplet 的人,可以从https://github.com/rattfieldnz/Java_Projects/tree/master/JAppletAnimation获取 Netbeans 项目。