2013-10-25 73 views
1

是否有可能在處理中的類中有另一個循環?處理中的類中是否可以有另一個循環?

在主類中,我可以有一個在每個幀上運行的draw()函數。但是我想爲我的其他類使用同樣的東西,這樣我就不必在主類中的每一幀都轉儲所有的東西了。它還保持我的代碼更清潔。

這是我已經試過這沒有真的相當的工作:

這是我有類:

public class MyClass { 

    private int backgroundColour = 0; 

    public MyClass() { 
    } 

    public void draw() { 
    background(backgroundColour++, 0, 0); 
    println(backgroundColour); 
    } 
} 

如果我是來實例化這個在我的主類,像這樣:

MyClass myClass; 
void setup() { 
    myClass = new MyClass(); 
} 

我沒有在每一幀看到控制檯上的顏色變化和行打印。當然,我可以在我的主類的draw()函數中調用myClass.draw(),但正如我所說的,我希望我可以讓依賴類自己處理它們自己的東西。所以,來自Actionscript背景,我試圖實現類似於在類中實現另一個「ENTER_FRAME」的類,我將在主類中實例化,除了我在Processing中執行此操作。在Processing中可以這樣做嗎?

+0

當然它可能是可能的,告訴我們你已經嘗試了什麼。 –

+0

@ user2310289好的,當然。我已經用我迄今爲止所做的嘗試更新了我的問題。 – Carven

+0

我想了解,但因爲我沒有任何動作的經驗,它不是很簡單...你想說你想要一個類來繪製自己,而不必調用它的draw()函數嗎?有點像在平行宇宙中? –

回答

1

是的,你可以。試試這個代碼:

import processing.core.*; 

public class MyClass implements PConstants { 

    PApplet parent; 
    private int backgroundColour = 0; 

    public MyClass (PApplet parent) { 
    this.parent = parent; 
    parent.registerMethod("draw", this); 
    } 

    public void draw() { 
    parent.background(backgroundColour++, 0, 0); 
    parent.println(backgroundColour); 
    } 
} 

和實例傳遞「這個」作爲參數

MyClass myClass; 
void setup() { 
    myClass = new MyClass(this); 
} 

您應該按照本教程https://github.com/processing/processing/wiki/Library-Basics

+0

也閱讀這個論壇http://forum.processing.org/one/topic/how-to-register-methods-in-processing-2b1.html。 我發佈的教程是針對舊的處理版本的,因此如果您想使用mouseEvent和keyEvent而不會出現複製錯誤,則應該使用「新方法」 – Bruno

相關問題