2011年4月22日 星期五

Processing and Android (P&A)

新版Processing有提供Android介面
撰寫Android程式
並可下載模擬器進行輸入手機前的模擬

相關資料參考

首先請先下載安裝符合自己電腦作業系統之
Windows使用者請都下載 並更新
SDK解壓所完後即可進行模擬器的使用
打開並點擊SDK Manager
android小綠人icon
即會出現此視窗


第一次開啟時他會開始下載安裝各項相關檔案
就讓它慢慢載入
載入完後
到左側選擇
Available packages


將右邊視窗內的選項打勾 並點擊右下角的
Install Selection
進行下載

再來即可打開新版的Processing
請至Processing下載
便可開始我們的Android程式了

新版的Processing介面並無大不同
但在右側多了一個下拉選單


點他將他換成Android他可能會要你指定你的
Android檔案位置
即選擇你解壓縮後的資料夾即可

此為兩者之比較
習慣的Processing偏淡藍色
而Android Mode偏淡綠色


Android模式中的程式語言基本上
與Processing一樣
僅些微部分不同

將下列程式複製或輸入Android的Processing內
void setup() {
   size(480,800);
   smooth();
}

void draw() {
   background(127,255,0);
   noStroke();
   fill(255);
   rectMode(CENTER); 
   rect(width/2, height/2, 150, 150);
};

即為一個簡單畫方塊的程式
測試是否成功
跟使用Processing一樣
點擊左上角的Play鍵就會開始執行
但不同的是他會開啟一個

EMULATOR(模擬器)如下

但需時一陣子所以請耐心等候
然後及執行上面的程式碼
即會在模擬器的介面上
產生圖形


即使沒有Android手機 依然可以
撰寫程式並看到結果

若有Android手機
就請先將手機中的
設定>應用程式>開發
的USB除錯模式打開
若是Windows使用這可能也需要一些安裝

因為本人沒有Android手機
所以請參考網站畫面


接下來便可將先寫所撰寫的Processing程式
透過Android手機進行操作
因觸控式手機並無Press的功能
所以對程式而言
語法中的mouseX, mouseY即是碰觸到螢幕後的位置

PandaFace
即為之前的程式
透過Android模式
使其可變成觸碰式的互動程式

Flower程式如下
當觸碰至面板時
即會生成花狀圖形
點擊按鍵中的"D"鍵
即可清除


程式碼如下:
void setup()
{
  size(600,600);
  background(0);
  smooth();
}

void draw()
 int x=width/2;
 int y=height/2; 
 int side= width/20;

  flowers(x,y,side);

}

void flowers(int x, int y, int side){
 stroke(random(0,255),random(0,255),random(0,255));
 strokeWeight(1);
  
 fill(random(0,255),random(0,255),random(0,255),random(0,255));
 ellipseMode(CENTER);
 ellipse(pmouseX,pmouseY,3*side/2,3*side/2);

 fill(random(0,255),random(0,255),random(0,255),random(0,255));
 ellipseMode(CENTER);
 ellipse(pmouseX,pmouseY,side,side);

 fill(random(0,255),random(0,255),random(0,255),random(0,255));
 ellipseMode(CENTER);
 ellipse(pmouseX+random(0,50),pmouseY, side, side);

 fill(random(0,255),random(0,255),random(0,255),random(0,255));
 ellipseMode(CENTER);
 ellipse(pmouseX+random(0,50),pmouseY, side, side);

 fill(random(0,255),random(0,50),random(0,255),random(0,255));
 ellipseMode(CENTER);
 ellipse(pmouseX-random(0,50),pmouseY, side, side);

  fill(random(0,255),random(0,50),random(0,255),random(0,255));
 ellipseMode(CENTER);
 ellipse(pmouseX,pmouseY+random(0,50), side, side);

 fill(random(0,255),random(0,255),random(0,255),random(0,255));
 ellipseMode(CENTER);
 ellipse(pmouseX,pmouseY-random(0,50), side, side);
}

void leaves(int x,int y,int side)
{
 fill(0,random(0,255),0,random(100,250));
 translate(pmouseX,pmouseY);
 rotate(radians(random(30,150))); 
 ellipse(0,0, side/2, 2*side);
}

void keyPressed()
{
  if (key == 'd')
       background(0);
  else
   redraw(); 
}


 

2 則留言:

  1. 我還以為你買了里程碑!!!
    如果哪天我越獄,就來試看看

    回覆刪除
  2. you always do such cool stuff! ;)

    回覆刪除