2011-01-14 56 views
0

在我当前的项目中,我有一个ArrayList的PVectors,它存储3d点的xyz坐标。我将ArrayList传递给另一个操作它的类,但是,这样做时我得到一个NullPointerException。我假设其中一个PVectors为空,但我通过为(0,0,0)分配任何空对象来进行检查,并且仍然收到错误。另外,有更多的PVectors或ArrayList的PVectors更有效率吗?无论哪种方式,我仍然得到错误。这是产生它的线。尝试将ArrayList传递给另一个类时获取NullPointerException

trip.pass(pointCoordinates); 

这里是主类

import org.openkinect.*; 
import org.openkinect.processing.*; 

Kinect kinect; 
Trip trip; 

boolean tripOn; 

int w = 640; 
int h = 480; 
int distance = 5; 

float[] depthLookUp = new float[2048]; 
ArrayList pointCoordinates = new ArrayList(); 

float factor = 400; 
float a = 0; 
float angle = 0; 
float frequency = .05; 

void setup() { 
    size(800,600,P3D); 
    kinect = new Kinect(this); 
    kinect.start(); 
    kinect.enableDepth(true); 
    kinect.processDepthImage(false); 
    stroke(255); 
    for (int i = 0; i < depthLookUp.length; i++) { 
    depthLookUp[i] = rawDepthToMeters(i); 
    } 
    for(int i = 0; i < 31920; i++) { 
    pointCoordinates.add(new PVector(0, 0, 0)); 
    } 
} 

void draw() { 
    background(0); 
    pushMatrix(); 
    translate(width/2 + width/3,height/2, -200); 
    //add 1/3 width to account for rule of thirds 
    popMatrix(); 
    int[] depth = kinect.getRawDepth(); 
    calculate(depth); 
    if(!tripOn) { 
    for(int i = 0; i < pointCoordinates.size(); i++) { 
    PVector temp = (PVector) pointCoordinates.get(i); 
    point(temp.x, temp.y, temp.z); 
    } 
    } 
    if(frameCount % 10 == 0) { 
    if(tripOn) { 
    tripOn = false; 
    trip.clear(); 
    } 
    else { 
    tripOn = true; 
    trip.pass(pointCoordinates); 
    } 
    } 
    if(tripOn) trip.run(); 
} 

void stop() { 
    kinect.quit(); 
    super.stop(); 
} 

我可以粘贴多个类,如果它有助于澄清问题。谢谢!

+0

我们展示错误 – skaffman 2011-01-14 04:10:22

回答

5

你没有初始化你的 “跳闸” 变量,因此调用trip.pass(..)抛出的NullPointerException异常。

+1

您可以通过19秒;-) – 2011-01-14 04:17:26

1

从您的代码片段得到您的问题的来源。但我的第一个猜测是线程问题。

您正在尝试在工作线程中使用trip.pass(pointCoordinates);。虽然看起来ArrayList pointCoordinates = new ArrayList();不是该线程的一部分。

可能的解决方案可能是: 检查pointCoordinates是否已初始化。如果没有,则等待它被初始化。

更新

我的坏。我错过了旅行对象的初始化。 :(

我的+1 Dan Breslaujerluc

4

你似乎永远一个值赋给变量trip。这肯定会导致NullPointerException在行,你已经证明。

相关问题