2013年11月24日 星期日

Processing 2 in Aptana (Eclipse Indigo) 2

Processing 2.1 改變了套件內 Java libraries 的路徑,從 /Processing.app/Contents/Resources/Java/ 換到 /Processing.app/Contents/Java/ ,所以 Proclipsing 會出現 "/Applications/Processing.app/ does not contain the processing libs." 的錯誤訊息。

解決方法是顯示 Processing 2.1 的套件內容後,把 Processing.app/Contents/Java/ 檔案夾複製一份到 /Processing.app/Contents/Resources/ 中即可。

Processing 2 in Aptana (Eclipse Indigo) 1

Aptana Studio 3.4.x 基本上是以 Eclipse Indigo (參考 Wiki) 為基礎。因此安裝相關軟體的下載更新網站必需選擇: http://download.eclipse.org/releases/indigo

Processing 基本上是 Java 語言,因此需要從上述網站,尋找 Programming Language 類別下的 JDT (Java Development Tools) 開發工具。


在 Eclipse 使用 Processing 語法,必須安裝 proclipsing ,下載更新網站為:
http://proclipsing.googlecode.com/svn/tags/current_releases/proclipsingSite/

如果要撰複數類別(multiple classes),必須參考這篇:Processing in Eclipse 。基本關鍵為:

  1. Processing 主類別通常是延伸自 processing.core.PApplet 類別,例如主類別名為 MainPApplet 。
    package PAE
    import processing.core.PApplet;
    
    public class MainPApplet {
        
        public void setup() {
            // Other codes for setup...
        }
        public void draw() {
            // Other codes for drawing...
        }
    }
  2. 必須將主要的 PApplet 類別引入次類別。例如名為 TheSubClass 的次類別,將主類別由建構式引入,例如:TheSubClass(MainPApplet mainPAinstance) ,即可將主類別 MainPApplet 引入。
    package PAE
    
    public class TheSubClass {
        // The field for the MainPApplet Class.
        MainPApplet parent;
    
        // Constructor of TheSubClass/
        public TheSubClass(MainPApplet mainPAinstance) {
            parent = mainPAinstance;
            // Other codes for Constructor....
            
            // Register "draw" of this class to parent class!
            parent.registerMethod("draw", this);
        }
    
        public void draw() {
            parent.color(255);
            parent.rect(100, 100, 20, 20);
            // Other codes...
        }
    }
  3. 因此次類別內必須有一個 PApplet 類的變數來使用 Processing 的函數,因此前述的將 mainPA 變數代入 TheSubClass 的變數 MainPApplet  parent 。
  4. 如此就可以在 TheSubClass 類別內,用 parent.color(r, g, b) 語法,使用 Processing 的語法。
  5. 在 TheSubClass 建構式加入 parent.registerMethod("draw", this); 可以在 MainPApplet 類別註冊 draw() 事件,自動地執行 TheSubClass 類別的 draw() 函數。