【发布时间】:2013-06-07 21:11:59
【问题描述】:
我 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 项目。
【问题讨论】:
-
见stackoverflow.com/questions/7004866/… 问题是你正在重新绘制整个小程序。
-
@arynaq 谢谢你,它工作得很好:)。现在将结束此问题,并将答案“归功于”您。
-
为什么要编写小程序?如果是由于规范。老师请转至Why CS teachers should stop teaching Java applets。
-
@AndrewThompson 我的教授要求我创建一个小程序...我还没有真正被告知为什么不应再使用小程序。我想创建这个小程序的目的是让我记住它们是如何制作的。我可以很容易地把它变成一个独立的 Java 应用程序。
-
@AndrewThompson 如果您想在浏览器中制作类似小程序的应用程序,您会推荐使用什么?我知道 HTML5、CSS3 和 Javascript 的组合在这里可以很好地工作..