2016-04-21 55 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); 
    } 
}