“Processing 是一個(gè)開放原始碼的程序語(yǔ)言及開發(fā)環(huán)境铅祸,提供給那些想要對(duì)影像坑质、動(dòng)畫、聲音進(jìn)行程序編輯的工作者临梗。此外涡扼,學(xué)生、藝術(shù)家盟庞、設(shè)計(jì)師吃沪、建筑師、研究員以及有興趣的人茫经,也可以用來(lái)學(xué)習(xí)巷波,開發(fā)原型及制作萎津⌒渡。”
工作太忙,停止Processing學(xué)習(xí)太久锉屈,重新復(fù)習(xí)下筆記荤傲,再次開始。Processing中文教材不多颈渊,推薦一本入門級(jí)教材《Processing互動(dòng)編程藝術(shù)》遂黍,邊學(xué)邊Processing.org熟悉語(yǔ)法和例子终佛。
基本圖形:
point(x1,y1)
line(x1,y1,x2,y2)
triangle(x1,y1,x2,y2,x3,y3)
quad(x1,y1,x2,y2,x3,y3,x4,y4)
rect(x,y,width,height,r,tl,tr,br,bl)
ellipse(x,y,width,height)
arc(x,y,width,height,start,stop),arc(x,y,width,height,radians(45),radians(225));
填充和描邊:
fill() 填充顏色,noFill()禁用填充顏色
stroke()描邊顏色雾家,noStroke()禁用描邊
strokeWeight() ?定義畫筆粗細(xì)
strokeJoin()定義線與線之間的連接模式(銜接角的形狀): strokeJoin(ROUND)圓形轉(zhuǎn)角,strokeJoin(BEVEL)錐形轉(zhuǎn)角
rectMode(),http://processing.org/reference/rectMode_.html
ellipseMode(),
strokeCap()定義線的起始與終止的畫法:strokeCap(SQUARE)方頭線铃彰,strokeCap(ROUND)圓頭線
顏色以及透明度:
background(r,g,b,alpha)、fill(r,g,b,alpha)芯咧、stroke(r,g,b,alpha)描邊顏色
自定義圖形:
beginShape() 開始自定義圖形牙捉,endShape()結(jié)束圖形定義,endShape(CLOSE)閉合圖形
vertex()定義點(diǎn)坐標(biāo)
基本語(yǔ)法:
while
while(條件式){
繪制函數(shù)敬飒;//符合條件邪铲,程序繼續(xù)循環(huán)執(zhí)行括號(hào)內(nèi)指令并計(jì)數(shù),不符合條件則停止
計(jì)數(shù)器无拗;
}
if
if(條件判斷){
//滿足的話带到,則執(zhí)行此區(qū)域代碼
}
if(條件判斷){
//滿足的話,則執(zhí)行此區(qū)域代碼
}else{
//不滿足的話英染,則執(zhí)行此區(qū)域代碼
}
if(條件判斷){
//滿足的話揽惹,則執(zhí)行此區(qū)域代碼
}else if(條件判斷2){
//滿足條件2的話,則執(zhí)行此區(qū)域代碼
}else{
//都不滿足的話四康,則執(zhí)行此區(qū)域代碼
}
for-loop
for(init;test;update){
statements
}
for(初始化永丝;條件判斷;更新判斷的數(shù)值){
滿足條件的話箭养,則執(zhí)行此區(qū)域代碼
}
響應(yīng):
1慕嚷、draw()&setup()
2、鼠標(biāo)響應(yīng)--鼠標(biāo)跟隨:mouseX(保存著x軸的值) ?mouseY(保存著y軸的值)
dist(x1,y1,x2,y2);//可用于計(jì)算兩點(diǎn)之間距離
3毕泌、鼠標(biāo)響應(yīng)--連續(xù)作畫:pmouseX和pmouseY存儲(chǔ)著前一幀鼠標(biāo)的位置
line(mouseX,mouseY,pmouseX,pmouseY); //可連續(xù)劃線
dist(mouseX,mouseY,pmouseX,pmouseY); //可用于計(jì)算線條寬度
4喝检、鼠標(biāo)響應(yīng)事件mousePressed() ? mouseMoved() ?mouseDragged()
4、鍵盤響應(yīng)
keyPressed()
if(keyPressed) 中可加入if(keyPressed==‘a(chǎn)’)
if(keyPressed&&(key==CODED)) ?可加入if(keyCode==LEFT)
4撼泛、輕隨(easing)
float x;
float easing=0.01;//easing值越小挠说,延遲越大
float diameter=12;
void setup(){
size(220,120);
smooth();
}
void draw(){
float targetX=mouseX;
x+=(targetX-x)*easing;
ellipse(x,50,12,12);
println(targetX+":"+x);
}
5、映射(map)
void setup(){
size(240,120);
strokeWeight(12);
smooth();
}
void draw(){
background(204);
stroke(255);
line(120,60,mouseX,mouseY);
stroke(0);
float mx=map(mouseX,0,width,60,180);//第一個(gè)參數(shù)是一個(gè)需要轉(zhuǎn)換的變量愿题,第二和第三個(gè)分別是它的最小和最大值损俭,第四和第五個(gè)參數(shù)是需要轉(zhuǎn)換到的目的范圍的最小值和最大值。
line(120,60,mx,mouseY);
}
5潘酗、點(diǎn)擊(mousePressed) 只有2個(gè)值:真和假杆兵。鼠標(biāo)按下為真。
追蹤鼠標(biāo)哪個(gè)鍵:mouseButton==LEFT仔夺、CENTER琐脏、RIGHT
void setup(){
size(240,120);
strokeWeight(30);
smooth();
}
void draw(){
background(204);
stroke(102);
line(40,0,70,240);
if(mousePressed){
if(mouseButton==LEFT){
stroke(255);
}else{
stroke(0);
}
line(0,70,width,50);
}
}