Java 弹球动画
我试图在反弹球代码中添加一些内容,但在动画模式下,屏幕在一些间隔(休息)后挂起,然后再次继续。我无法判断为什么会发生这种情况 代码如下:Java 弹球动画,java,Java,我试图在反弹球代码中添加一些内容,但在动画模式下,屏幕在一些间隔(休息)后挂起,然后再次继续。我无法判断为什么会发生这种情况 代码如下: public class Programme { public static void main(String[] args) { int N = 5; double[] rx = new double[10]; double[] ry = new double[10]; double[
public class Programme {
public static void main(String[] args) {
int N = 5;
double[] rx = new double[10];
double[] ry = new double[10];
double[] vx = new double[10];
double[] vy = new double[10];
for (int i = 0; i < N; i++) {
rx[i] = Math.random() * 2 - 1;
ry[i] = Math.random() * 2 - 1;
vx[i] = 0.02;
vy[i] = 0.03;
}
double radius = .06;
StdDraw.setXscale(-1.0, +1.0);
StdDraw.setYscale(-1.0, +1.0);
while (true) {
for (int i = 0; i < N; i++) {
if (Math.abs(rx[i] + vx[i]) + radius > 1.0) {
vx[i] = -vx[i];
StdAudio.play("music.wav");
}
if (Math.abs(ry[i] + vy[i]) + radius > 1.0) {
vy[i] = -vy[i];
StdAudio.play("music.wav");
}
rx[i] = rx[i] + vx[i];
ry[i] = ry[i] + vy[i];
StdDraw.setPenColor(StdDraw.GREEN);
StdDraw.filledSquare(0.0, 0.0, 1.0);
for (int j = 0; j < N; j++) {
StdDraw.picture(rx[j], ry[j], "game.gif");
}
StdDraw.show(10);
}
}
}
}
公共课程{
公共静态void main(字符串[]args){
int N=5;
双精度[]rx=新双精度[10];
双精度[]ry=新双精度[10];
double[]vx=新的double[10];
double[]vy=新的double[10];
对于(int i=0;i1.0){
vx[i]=-vx[i];
StdAudio.play(“music.wav”);
}
如果(数学绝对值(ry[i]+vy[i])+半径>1.0){
vy[i]=-vy[i];
StdAudio.play(“music.wav”);
}
rx[i]=rx[i]+vx[i];
ry[i]=ry[i]+vy[i];
色(绿色);
标准填充正方形(0.0,0.0,1.0);
对于(int j=0;j
您的问题主要来自于您在同一线程中播放声音和制作动画,您必须使应用程序多线程,一个线程用于播放声音,另一个线程用于显示动画
需要说明的一点是,StdDraw.picture可能需要从game.gif文件中读取才能绘制图像,我没有使用StdDraw的经验,但每次迭代读取文件都会降低应用程序的速度,我认为这样会更快(但会消耗更多RAM)将while循环外的文件读入二维数组并使用循环内的数组来绘制。您可以至少格式化您的代码。请在发布HeGeGeMe之前考虑代码清理。GIF是图像和音乐。WAV是图像与边界接触时发出的声音。此问题在将声音与动画配合使用时,请尝试在没有声音的情况下运行应用程序(注释行
StdAudio.play(“music.wav”)
),把实验结果贴在这里,谢谢你的快速回复。这很有帮助。但是你能告诉我我能做些什么来适应音乐吗@niceman@Ranger对不起,我的朋友,这是一个宽泛的话题,若你们问的是参考资料,那个么java认证书对我来说很好