-----processing的代碼編寫流程主要包括2部分,setup()和draw(),等同于Start()和Update()。setup用于設(shè)置程序的屬性,如畫布的大小、背景色、要導(dǎo)入的圖片、字體等。draw用于循環(huán)執(zhí)行繪圖指令,如點(diǎn)、線、圓、圖片等等。代碼區(qū)分大小寫,所有語句以分號(hào)";"結(jié)尾。
-----變量類型:
-----系統(tǒng)變量:
mouseX,mouseY和pmouseX,pmouseY分別表示鼠標(biāo)當(dāng)前位置和上一幀的位置。
其它的算術(shù)運(yùn)算符,關(guān)系操作符,邏輯操作符,條件判斷都跟C#中一致。
坐標(biāo)原點(diǎn)在窗口左上角,左上角坐標(biāo)為(0,0),朝右為x軸正方向,朝下為y軸正方向。
-----圖形
point(x,y)? ? ? ? ? ? ? ? ? ? ? ?--畫點(diǎn),參數(shù)為點(diǎn)的坐標(biāo)
line(x1,y1,x2,y2)? ? ? ? ? ? --畫線,參數(shù)為2個(gè)點(diǎn)的坐標(biāo)
rect(x,y,w,h)? ? ? ? ? ? ? ? ? ?--畫矩形,參數(shù)為坐標(biāo)以及寬高
ellipse(x,y,w,h)? ? ? ? ? ? ? ?--畫橢圓,參數(shù)為坐標(biāo)以及x和y直徑
arc(x,y,w,h,r1,r2)? ? ? ? --畫圓弧形,參數(shù)為坐標(biāo)以及x和y直徑,最后兩個(gè)參數(shù)為開始和結(jié)束角度,角度有兩種表示方法:PI和radians(angle),其中PI為圓周率,PI等于radians(180)。不填充則畫圓弧線,填充則畫扇形。
triangle(x1,y1,x2,y2,x3,y3)? ? ? ? --畫三角形,參數(shù)為3個(gè)點(diǎn)的坐標(biāo)
quad(x1,y1,x2,y2,x3,y3,x4,y4)? ? ? ? --畫四邊形,參數(shù)為4個(gè)點(diǎn)的坐標(biāo)?
bezier(x1,y1,cx1,cy1,cx2,cy2,x2,y2)? ? ? ? --畫貝塞爾曲線,參數(shù)x1,y1,x2,y2為起點(diǎn)和終點(diǎn)坐標(biāo),cx1,cy1,cx2,cy2為兩個(gè)控制點(diǎn)坐標(biāo)。
繪制直線邊框自由圖形:beginShape()、vertex()、endShape(),beginShape()是繪制圖形開始,vertex(x,y)是連接圖形的點(diǎn),endShape(CLOSE)指繪制圖形結(jié)束,CLOSE參數(shù)表示閉合。
繪制曲線邊框自由圖形:beginShape()、vertex()、bezierVertex()、endShape(),vertex(x,y)是圖形起始點(diǎn),bezierVertex(cx1,cy1,cx2,cy2,x,y),前面4個(gè)參數(shù)是控制點(diǎn)坐標(biāo),x,y表示曲線另一個(gè)點(diǎn)坐標(biāo)。
----色彩
顏色的形式包括:灰階、灰階含透明度、彩色、彩色含透明度。
color(灰階)、color(灰階,透明度)、color(R,G,B)、color(R,G,B,透明度),使用顏色的函數(shù)同理可使用4種色彩,如background、fill、stroke
----繪畫屬性
size(寬,高)? ? ? ? ? ? ? ? ? --設(shè)置畫布的大小
background(color)? ? ? ? ? ? ? ? --設(shè)置畫布顏色
fill(color)? ? ? ? ? ? ? ? ? ? ? ? --畫圖形時(shí)填充顏色
noFill()? ? ? ? ? ? ? ? ? ? ? ? ? --畫圖形時(shí)不填充顏色
stroke()? ? ? ? ? ? ? ? ? ? ? ? --指定線條顏色
noStroke()? ? ? ? ? ? ? ? ? ? --不畫線條
strokeWeight(num)? ? ? ? ? ? ? ? --指定線條寬度為幾個(gè)像素
strokeCap(mode)? ? ? ? --指定線條端點(diǎn)模式,SQUARE-方形、PROJECT-方形延申、ROUND-圓形
strokeJoin(mode)? ? ? ? --指定線條折角模式,MITER-尖角、BEVEL-斜角、ROUND-圓角
smooth()? ? ? ? ? ? ? ? ? ? ? ? --開啟平滑模式,消耗性能,抗鋸齒
noSmooth()? ? ? ? ? ? ? ? ? ?--關(guān)閉平滑模式,繪制快,有鋸齒
----繪制順序:代碼越在后面繪制的圖形越顯示在前面
----重要函數(shù)
dist(x1,y1,x2,y2)? ? ? ? --求兩點(diǎn)之間的距離
random(num)? ? ? ? ??????--產(chǎn)生0-num范圍內(nèi)的浮點(diǎn)數(shù)
int(random(num))? ? ? ? --產(chǎn)生0-num-1范圍內(nèi)的整數(shù)
constrain(value,min.max)? ? ? ? --將value的值限制在min和max之間,例如鼠標(biāo)位置
----鼠標(biāo)響應(yīng)事件
void mousePressed()、void mouseMoved()、void mouseDragged(),分別表示按下、移動(dòng)、拖拽。其中mousePressed()函數(shù)等同于系統(tǒng)變量 if(mousePressed)。系統(tǒng)變量mouseButton包含3個(gè)值:LEFT、RIGHT、CENTER,分別代表左鍵、右鍵和中鍵。
----鍵盤響應(yīng)
主要包括keyPressed按擊鍵響應(yīng)、key特定按鍵響應(yīng)、keyCode功能鍵響應(yīng)。
keyPressed表示按下鍵盤上任意一個(gè)鍵所產(chǎn)生的響應(yīng)。void?keyPressed()等同于if(keyPressed)
key表示只針對(duì)某個(gè)鍵的響應(yīng)事件。例如在if(keyPressed)中加入if(key == 'a')表示A鍵按下。
功能鍵響應(yīng)包括ALT、CONTROL、SHIFT、方向鍵(UP、DOWN、LEFT、RIGHT)。例如在if(keyPressed)中加入if(key == LEFT)表示方向左鍵按下。
---曲線軌跡運(yùn)動(dòng)
->繞畫布中心的做圓周運(yùn)動(dòng)
float r = 50;
float a = 0;
void setup()
{
? size(300,300);
? background(0);
? smooth();
? strokeWeight(5);
? stroke(255,0,0,100);
? fill(100);
}
void draw()
{
? float x = r * cos(a);
? float y = r * sin(a);
? ellipse(width/2 + x,height/2 + y, 100, 100);
? a += 0.1;
}
----坐標(biāo)轉(zhuǎn)移、旋轉(zhuǎn)與縮放
translate(x,y,z)函數(shù)用于轉(zhuǎn)換坐標(biāo)原點(diǎn),其中的x,y,z值決定了坐標(biāo)原點(diǎn)的位置。一般translate(x,y)
rotate(角度)按照設(shè)定的角度旋轉(zhuǎn)相應(yīng)的圖形。參數(shù)是弧度,范圍0-TWO_PI,可以使用radians()將角度轉(zhuǎn)換成弧度(如radians(45))。函數(shù)是順時(shí)針轉(zhuǎn)動(dòng)圖形,且永遠(yuǎn)圍繞原點(diǎn)旋轉(zhuǎn)。如果要讓圖形不圍繞左上角原點(diǎn)旋轉(zhuǎn),需要使用translate()將原點(diǎn)進(jìn)行轉(zhuǎn)移。
scale(num)表示縮放圖形,如參數(shù)0.5表示縮放到原來的一半,參數(shù)2表示放大一倍。
pushMatrix()與popMatrix()
pushMatrix()是把當(dāng)前的旋轉(zhuǎn)數(shù)據(jù)和坐標(biāo)數(shù)據(jù)放入矩陣堆棧中。
popMatrix()則是重新回到程序最開始的坐標(biāo)系統(tǒng)。
pushMatrix()和popMatrix()一起使用,把當(dāng)前旋轉(zhuǎn)函數(shù)和坐標(biāo)轉(zhuǎn)移函數(shù)放在中間,就可以單獨(dú)控制不同圖形的旋轉(zhuǎn)與坐標(biāo),圖形之間的旋轉(zhuǎn)或坐標(biāo)轉(zhuǎn)移不會(huì)相互影響。
----時(shí)間控制
millis()? ? ? ? --從程序開始運(yùn)行到當(dāng)前的時(shí)間(毫秒)
second()? ? ? ? --從程序開始運(yùn)行到當(dāng)前的時(shí)間(秒)
minute()? ? ? ? --從程序開始運(yùn)行到當(dāng)前的時(shí)間(分)
hour()? ? ? ? --從程序開始運(yùn)行到當(dāng)前的時(shí)間(分)
----面向?qū)ο缶幊?/h4>
可以創(chuàng)建新的文件,里面定義類,文件放在同個(gè)工程下就可以直接引用,具體操作時(shí),點(diǎn)擊編輯器的腳本文件右邊的下拉箭頭符號(hào),選擇"新建標(biāo)簽"創(chuàng)建新的文件就行,默認(rèn)就是在同個(gè)目錄下。
定義類包含4部分:
1.定義類名,class 名稱{}
2.定義類的變量。
3.構(gòu)造函數(shù)??梢允菬o參或有參,實(shí)例化類對(duì)象時(shí)用new。
4.定義方法。方法不用加public修飾,外部也能直接調(diào)用函數(shù)。
----圖片與文字
????????支持的圖片格式有g(shù)if、jpg、png和tga。調(diào)用圖片的基本步驟有4個(gè),準(zhǔn)備好圖片、定義圖片變量、載入圖片至變量、顯示圖片。
? ? ? ? 圖片文件必須存儲(chǔ)位于項(xiàng)目文件夾里的data文件夾中。在"Sketch"菜單(速寫本)中選擇"AddFile"命令,在瀏覽窗口選擇一張圖片,那項(xiàng)目文件夾下會(huì)多了一個(gè)data文件夾,剛才選擇的圖片儲(chǔ)存在其中。
? ? ? ? 其次,定義圖片變量。語法:PImage 變量名稱。
????????接著,載入圖片至變量。loadImage()將圖片載入到圖片變量中。
????????最后,用函數(shù)image()顯示圖片。Image()有兩種形式:image(圖片變量,坐標(biāo)x,坐標(biāo)y)和image(圖片變量,坐標(biāo)x,坐標(biāo)y,寬度,高度)。
? ? ? ? tint()用于設(shè)置圖片的色彩填充值。tint()有集中設(shè)置形式:tint(明度),明度值0-255。tint(明度,透明度)。tint(R,G,B)。tint(R,G,B,透明度)。
????????PImage的width和height分別表示圖片的寬高,“x+y*width”是指某個(gè)像素在圖片中所處的位置。再運(yùn)用loadPixels()獲取圖片像素?cái)?shù)據(jù),并傳遞給pixels[],pixels[x+y*width]代表某個(gè)像素。
PImage image1;
void setup()
{
? size(600,300);
? background(0);
? image1 = loadImage("1.png");
}
void draw()
{
? tint(255);
? image(image1,0,0);
}
----字體
? ? ? ? 可以調(diào)用字體來顯示文字,步驟如下:
? ? ? ? 1、在“工具”菜單中選擇"創(chuàng)建字體",選擇一種字體,然后點(diǎn)OK,之后會(huì)創(chuàng)建vlw格式的字體被放入data文件夾中。vlw是processing特有的字體格式。
? ? ? ? 2、聲明PFont類型的變量。
????????3、使用loadFont()載入字體至變量。
? ? ? ? 4、textFont()用于為文本指定字體。
? ? ? ? 5、最后使用text()顯示文本。
? ? ? ? createFont()允許直接使用電腦中的字體,還允許字體縮放到任意大小而不影響顯示質(zhì)量。
PFont f =?createFont("Arial",36,true);//字體名,字體大小,是否開啟平滑
----視頻
? ? ? ? 對(duì)視頻的處理分為兩種:一種是處理視頻文件,另一種是處理攝像頭輸入的實(shí)時(shí)視頻。
播放視頻文件
1、添加視頻至data目錄,與圖片處理方法相同。
2、編寫代碼是要首先導(dǎo)入視頻庫。在"速寫本"菜單中選擇"引用庫文件",然后選擇"Video Library for processing 3",就會(huì)生成一行代碼"import processing.video.*;"。
3、使用Movie定義視頻變量。
4、加載視頻至變量。Movie movie = new Movie(this,"bg.mp4");
5、使用image()函數(shù)顯示視頻。
import processing.video.*;
Movie movie;
void setup()
{
? size(320,240);
? background(0);
? movie = new Movie(this,"bg2.mov");
? movie.loop();
}
void movieEvent(Movie m) {
? m.read();
}
void draw()
{
? image(movie,0,0,width,height);
}
重要函數(shù)有:play()播放、pause()暫停、loop()循環(huán)、jump()跳轉(zhuǎn)到特定時(shí)間點(diǎn)、duration()視頻長度、speed()設(shè)置播放速度。
----Minim音頻
播放音頻步驟:
1、通過"速寫本"菜單中的"添加文件"將音頻文件加入到data目錄下。
2、導(dǎo)入音頻庫。通過"速寫本"菜單中"引用庫文件",選擇Minim庫,腳本中會(huì)自動(dòng)生成導(dǎo)入庫代碼
import ddf.minim.*;
import ddf.minim.analysis.*;
import ddf.minim.effects.*;
import ddf.minim.signals.*;
import ddf.minim.spi.*;
import ddf.minim.ugens.*;
AudioPlayer player;
Minim minim;
void setup()
{
? size(300,300);
? minim = new Minim(this);
? player = minim.loadFile("bg.mp3");
? //player.play();
? player.loop();
}
void draw()
{
}
重要函數(shù)有:play()播放、pause()暫停、loop()循環(huán)播放、skip()快進(jìn)或快退多少毫秒。文章來源:http://www.zghlxwxcb.cn/news/detail-810321.html
注意:必須要有draw()函數(shù)才能播放出音頻,不知道什么原因。文章來源地址http://www.zghlxwxcb.cn/news/detail-810321.html
到了這里,關(guān)于Processing快速使用的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!