2016-04-21 53 views
0

我正在尝试为处理中的一个tic tac脚趾游戏制作一个按钮类。我为类的代码是这样在处理中有多个类的空指针异常

import processing.core.PApplet; 

public class Button extends PApplet{ 

    float buttonX; 
    float buttonY; 
    float buttonWidth; 
    float buttonHeight; 
    boolean cliked; 

    public Button(PApplet canvas, float buttonX, float buttonY, float buttonWidth, float buttonHeight) { 
     this.buttonX = buttonX; 
     this.buttonY = buttonY; 
     this.buttonWidth = buttonWidth; 
     this.buttonHeight = buttonHeight; 
    } 

    public void drawButton() { 
     rect(200, 200, 200, 200); 
     textSize(40); 
     fill(200, 200, 200); 
     text("Start Game", 300, 300); 
    } 

} 

用于处理setup()方法中的代码是

Button startButton = new Button(this, 200, 200, 200, 200); 
startButton.drawButton(); 

我不知道我在做什么错的,但我不断收到一个NullPointerException

+2

没有堆栈跟踪且没有相关代码的NPE问题是无法解决的。请在异常消息和stracktrace – Dici

+1

@Dici指向的代码行请注意,这是一个[tag:processing]问题,而不是Java问题。 'NullPointerException'没有堆栈跟踪,并不是由典型的Java原因引起的。 –

+1

@KevinWorkman没有堆栈跟踪?你怎么知道异常在哪里?什么是'null'?这些问题真的很混乱。也许删除Java标签将是一个好主意? – Tunaki

回答

1

这是因为你已经得到了扩展PApplet两类造成的。您应该只有一个课程延伸PApplet。将该类视为草图,然后所有其他类都需要引用它以将素材绘制到草图中。

你传递一个PApplet canvas到您Button构造。而不是让Button类也延伸PApplet,您需要使用该canvas变量来执行绘图。它应该看起来像这样:

import processing.core.PApplet; 

public class Button{ 

    PApplet canvas; 
    float buttonX; 
    float buttonY; 
    float buttonWidth; 
    float buttonHeight; 
    boolean cliked;  

    public Button(PApplet canvas, float buttonX, float buttonY, float buttonWidth, float buttonHeight) { 
     this.canvas = canvas; 
     this.buttonX = buttonX; 
     this.buttonY = buttonY; 
     this.buttonWidth = buttonWidth; 
     this.buttonHeight = buttonHeight; 
    } 

    public void drawButton() { 
     canvas.rect(200, 200, 200, 200); 
     canvas.textSize(40); 
     canvas.fill(200, 200, 200); 
     canvas.text("Start Game", 300, 300); 
    } 
}