本人是初学者,源代码如下:
import ddf.minim.*;
import ddf.minim.effects.*;
Stuff[] stuff;
Minim minim;
AudioPlayer groove;
void setup()
{
float j2;
size(300, 300, P2D);
minim = new Minim(this);
for(int j = 1; j < 20; j ++) {
j2 = Float.valueOf(j).floatValue();
stuff[j] = new Stuff(j2);
}
groove = minim.loadFile("groove.mp3", 2048);
groove.loop();
}
void draw()
{
translate(width/2,height/2);
background(0);
pushMatrix();
rotate(second() * PI / 60);
for(int i = 0; i < 20; i ++) {
stuff[i].draws();
}
popMatrix();
}
void stop()
{
groove.close();
minim.stop();
super.stop();
}
class Stuff {
float displacement;
Stuff(float disp) {
displacement = disp;
}
void draws() {
stroke(255 * (displacement - 20) /20);
for (int i = 0; i < groove.bufferSize() - 1; i++ )
{
float x1 = map(i, 0, groove.bufferSize(), 0, width) - 150 + displacement;
float x2 = map(i+1, 0, groove.bufferSize(), 0, width) - 150 + displacement;
float y1 = (groove.left.get(i)*50 + groove.right.get(i)*50) + displacement;
float y2 = (groove.left.get(i+1)*50 + groove.right.get(i+1)*50) + displacement;
line(x1,y1,x2,y2);
line(y1,x1,y2,x2);
}
fill(0);
ellipse(0,0,height/4 - groove.left.get(groove.bufferSize()-1)*50,height/4 - groove.right.get(groove.bufferSize()-1)*50);
}
}
我用的是Processing1.0.7.执行到stuff[j] = new Stuff(j2);的时候提示NullPointerException,在网上查过了这个错误的解释,但是自己还是看不出为什么,求教!!!
为什么会NullPointerException呢
答案:1 悬赏:40 手机版
解决时间 2021-04-13 10:53
- 提问者网友:皆是孤独
- 2021-04-12 13:32
最佳答案
- 五星知识达人网友:纵马山川剑自提
- 2021-04-12 15:04
将代码stuff[j] = new Stuff(j2);改成
stuff = new Stuff(j2);就没问题了...
因为你之前Stuff[] stuff;//stuff还没有实例化,所以你直接stuff[j]是不行的,这样就会造成空指针异常,因为这时候stuff还没有被创建出来
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯