將來,請嘗試發佈MCVE。你現在發佈的代碼是無效的語法,並不能真實反映你實際在做什麼。
反正loadImage()
功能也不是一成不變的,所以你不能做到這一點:
PApplet.loadImage("img.jpg");
而且,這也是值得注意的是,每一個草圖擴展PApplet
類,所以這一點:
PImage img;
void setup(){
img = loadImage("img.jpg");
}
轉換爲Java代碼,如下所示:
public class MySketch extends PApplet{
PImage img;
void setup(){
img = loadImage("img.jpg");
}
}
在這裏,我們可以看到loadImage()
函數來自我們正在擴展的PApplet
類。
所以,現在你有這樣的事情:
public class MySketch extends PApplet{
PImage img;
void setup(){
img = MyInnerClass.getImage("img.jpg");
}
class MyInnerClass{
public static PImage getImage(String loc){
return loadImage(loc);
}
}
}
或者是這樣的:
public class MySketch extends PApplet{
PImage img;
void setup(){
img = new MyInnerClass().getImage("img.jpg");
}
static class MyInnerClass{
public PImage getImage(String loc){
return loadImage(loc);
}
}
}
在這兩種情況下,這將產生一個錯誤說你不能使用非從靜態上下文靜態loadImage()
函數。
這是因爲loadImage()
函數來自實例本身。 您需要一個實例來使用非靜態函數。但由於getImage()
函數是靜態的,它不屬於任何特定的實例。這就是爲什麼它不起作用。
如果我是你,我會後退一步,問自己爲什麼你需要內部課程。如果它是一個靜態函數,那麼爲什麼不使用草圖級函數呢?
'nonStaticOtherMethod(foo)'定義在哪裏?你可能知道'public nonStaticMethod(foo)'不是一個有效的方法簽名,你也會在那裏得到錯誤。 –
它來自另一個類:PApplet –
我建議你編輯你的問題,添加必要的代碼來重現你的場景,或者我們只是猜測。 –