Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 弹球动画_Java - Fatal编程技术网

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认证书对我来说很好