2014-12-21 132 views
0

我正在嘗試處理,並且正在處理音樂/音頻可視化。調試腳本

我所做的就是創建一個隨機顏色的球體,完美運作。

然後我試圖做的是隨機在屏幕上添加隨機三角形和正方形。

我得到一個錯誤,我似乎無法找到錯誤的根源。

這是我的代碼:

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) 

回答

0

退房處理基準的位置:https://www.processing.org/reference/

然後密切注意的createShape()函數參考:https://www.processing.org/reference/createShape_.html

FRO米是:

The basic way to use the function defines new primitive shapes. One of the following parameters are used as the first parameter: ELLIPSE, RECT, ARC, TRIANGLE, SPHERE, BOX, QUAD, or LINE. The parameters for each of these different shapes are the same as their corresponding functions: ellipse(), rect(), arc(), triangle(), sphere(), box(), and line().

現在看看三角形()函數的引用:https://www.processing.org/reference/triangle_.html

A triangle is a plane created by connecting three points. The first two arguments specify the first point, the middle two arguments specify the second point, and the last two arguments specify the third point.

這告訴我們,三角形()函數需要6個參數。但是當你調用createShape(Triangle)時,你只傳入2個參數。