调试脚本



我正在尝试处理,并且正在摆弄音乐/音频可视化。

我所做的是创建具有随机颜色的球体,效果很好。

然后我尝试做的是在屏幕上随机添加随机三角形和正方形。

我收到错误,似乎找不到错误的根源。

这是我的代码:

import ddf.minim.*;
AudioPlayer song;
Minim minim;
float left ;
float right ;
int width = 800;
int height = 640;
PShape square;
PShape triangle;
PShape hexagon;
PShape star;

void setup ()
{
  size (width,height,P3D)  ;
  smooth();
  background (10,10,10) ;
  frameRate(20) ;
  minim = new Minim(this);
  song = minim.loadFile("song.mp3");
  square = createShape(BOX, random(height/8));
  triangle = createShape(TRIANGLE, random(height/8), random(width/8));
}
void draw ()
{
//  background (30,ri) ;
  noStroke() ;
  for  (int i = 0; i < 255 ; i++)
  {
    right = song.right.get(i)*100 ;
    left = song.left.get(i)*100 ;
  }
    background(10,10,10);
    fill(random(255), random(255),random(255), random(255)) ; //NOIR
    ellipse(width/2, height/2, random(800), random(640)) ;
    stroke(random(255),random(255),random(255),random(255)) ;
    noFill() ;
    ellipse(width/2, height/2, random(800), random(640)) ; 
    for (int j =0; j < 255; j++)
    {
       shape(square, random(800), random(640)); 
       shape(triangle, random(800), random(640));
    }
}

这是错误:

[java.lang.NullPointerException]
Wrong number of parameters
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at processing.core.PGraphics.shape(PGraphics.java:3789)
    at processing.core.PApplet.shape(PApplet.java:12869)
    at SoundVisuals.draw(SoundVisuals.java:70)
    at processing.core.PApplet.handleDraw(PApplet.java:2386)
    at processing.opengl.PJOGL$PGLListener.display(PJOGL.java:862)
    at jogamp.opengl.GLDrawableHelper.displayImpl(GLDrawableHelper.java:665)
    at jogamp.opengl.GLDrawableHelper.display(GLDrawableHelper.java:649)
    at javax.media.opengl.awt.GLCanvas$10.run(GLCanvas.java:1289)
    at jogamp.opengl.GLDrawableHelper.invokeGLImpl(GLDrawableHelper.java:1119)
    at jogamp.opengl.GLDrawableHelper.invokeGL(GLDrawableHelper.java:994)
    at javax.media.opengl.awt.GLCanvas$11.run(GLCanvas.java:1300)
    at javax.media.opengl.Threading.invoke(Threading.java:193)
    at javax.media.opengl.awt.GLCanvas.display(GLCanvas.java:541)
    at javax.media.opengl.awt.GLCanvas.paint(GLCanvas.java:595)
    at sun.awt.RepaintArea.paintComponent(Unknown Source)
    at sun.awt.RepaintArea.paint(Unknown Source)
    at sun.awt.windows.WComponentPeer.handleEvent(Unknown Source)
    at java.awt.Component.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
    at java.awt.EventQueue.access$200(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
    at java.awt.EventQueue$4.run(Unknown Source)
    at java.awt.EventQueue$4.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
    at java.awt.EventQueue.dispatchEvent(Unknown Source)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.run(Unknown Source)
java.lang.RuntimeException: java.lang.NullPointerException
    at com.jogamp.common.util.awt.AWTEDTExecutor.invoke(AWTEDTExecutor.java:58)
    at jogamp.opengl.awt.AWTThreadingPlugin.invokeOnOpenGLThread(AWTThreadingPlugin.java:103)
    at jogamp.opengl.ThreadingImpl.invokeOnOpenGLThread(ThreadingImpl.java:206)
    at javax.media.opengl.Threading.invokeOnOpenGLThread(Threading.java:172)
    at javax.media.opengl.Threading.invoke(Threading.java:191)
    at javax.media.opengl.awt.GLCanvas.display(GLCanvas.java:541)
    at processing.opengl.PJOGL.requestDraw(PJOGL.java:688)
    at processing.opengl.PGraphicsOpenGL.requestDraw(PGraphicsOpenGL.java:1651)
    at processing.core.PApplet.run(PApplet.java:2256)
    at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.NullPointerException
    at processing.core.PGraphics.shape(PGraphics.java:3789)
    at processing.core.PApplet.shape(PApplet.java:12869)
    at SoundVisuals.draw(SoundVisuals.java:70)
    at processing.core.PApplet.handleDraw(PApplet.java:2386)
    at processing.opengl.PJOGL$PGLListener.display(PJOGL.java:862)
    at jogamp.opengl.GLDrawableHelper.displayImpl(GLDrawableHelper.java:665)
    at jogamp.opengl.GLDrawableHelper.display(GLDrawableHelper.java:649)
    at javax.media.opengl.awt.GLCanvas$10.run(GLCanvas.java:1289)
    at jogamp.opengl.GLDrawableHelper.invokeGLImpl(GLDrawableHelper.java:1119)
    at jogamp.opengl.GLDrawableHelper.invokeGL(GLDrawableHelper.java:994)
    at javax.media.opengl.awt.GLCanvas$11.run(GLCanvas.java:1300)
    at java.awt.event.InvocationEvent.dispatch(Unknown Source)
    at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
    at java.awt.EventQueue.access$200(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
    at java.awt.EventQueue.dispatchEvent(Unknown Source)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.run(Unknown Source)

在此处查看处理参考:https://www.processing.org/reference/

然后仔细注意 createShape(( 函数引用:https://www.processing.org/reference/createShape_.html

由此:

使用该函数的基本方法定义了新的基元形状。以下参数之一用作第一个参数:椭圆、矩形、圆弧、三角形、球体、框形、四边形或直线。这些不同形状中每个形状的参数与其相应的函数相同:ellipse((,rect((,arc((,triangle((,sphere((,box((和line((。

现在看看 triangle(( 函数参考: https://www.processing.org/reference/triangle_.html

三角形是通过连接三个点创建的平面。前两个参数指定第一个点,中间两个参数指定第二个点,最后两个参数指定第三个点。

这告诉我们 triangle(( 函数需要 6 个参数。但是当你调用createShape(Triangle(时,你只传递了2个参数。

最新更新