-----processing的代码编写流程主要包括2部分,setup()和draw(),等同于Start()和Update()。setup用于设置程序的属性,如画布的大小、背景色、要导入的图片、字体等。draw用于循环执行绘图指令,如点、线、圆、图片等等。代码区分大小写,所有语句以分号";"结尾。
-----变量类型:
-----系统变量:
mouseX,mouseY和pmouseX,pmouseY分别表示鼠标当前位置和上一帧的位置。
其它的算术运算符,关系操作符,逻辑操作符,条件判断都跟C#中一致。
坐标原点在窗口左上角,左上角坐标为(0,0),朝右为x轴正方向,朝下为y轴正方向。
-----图形
point(x,y) --画点,参数为点的坐标
line(x1,y1,x2,y2) --画线,参数为2个点的坐标
rect(x,y,w,h) --画矩形,参数为坐标以及宽高
ellipse(x,y,w,h) --画椭圆,参数为坐标以及x和y直径
arc(x,y,w,h,r1,r2) --画圆弧形,参数为坐标以及x和y直径,最后两个参数为开始和结束角度,角度有两种表示方法:PI和radians(angle),其中PI为圆周率,PI等于radians(180)。不填充则画圆弧线,填充则画扇形。
triangle(x1,y1,x2,y2,x3,y3) --画三角形,参数为3个点的坐标
quad(x1,y1,x2,y2,x3,y3,x4,y4) --画四边形,参数为4个点的坐标
bezier(x1,y1,cx1,cy1,cx2,cy2,x2,y2) --画贝塞尔曲线,参数x1,y1,x2,y2为起点和终点坐标,cx1,cy1,cx2,cy2为两个控制点坐标。
绘制直线边框自由图形:beginShape()、vertex()、endShape(),beginShape()是绘制图形开始,vertex(x,y)是连接图形的点,endShape(CLOSE)指绘制图形结束,CLOSE参数表示闭合。
绘制曲线边框自由图形:beginShape()、vertex()、bezierVertex()、endShape(),vertex(x,y)是图形起始点,bezierVertex(cx1,cy1,cx2,cy2,x,y),前面4个参数是控制点坐标,x,y表示曲线另一个点坐标。
----色彩
颜色的形式包括:灰阶、灰阶含透明度、彩色、彩色含透明度。
color(灰阶)、color(灰阶,透明度)、color(R,G,B)、color(R,G,B,透明度),使用颜色的函数同理可使用4种色彩,如background、fill、stroke
----绘画属性
size(宽,高) --设置画布的大小
background(color) --设置画布颜色
fill(color) --画图形时填充颜色
noFill() --画图形时不填充颜色
stroke() --指定线条颜色
noStroke() --不画线条
strokeWeight(num) --指定线条宽度为几个像素
strokeCap(mode) --指定线条端点模式,SQUARE-方形、PROJECT-方形延申、ROUND-圆形
strokeJoin(mode) --指定线条折角模式,MITER-尖角、BEVEL-斜角、ROUND-圆角
smooth() --开启平滑模式,消耗性能,抗锯齿
noSmooth() --关闭平滑模式,绘制快,有锯齿
----绘制顺序:代码越在后面绘制的图形越显示在前面
----重要函数
dist(x1,y1,x2,y2) --求两点之间的距离
random(num) --产生0-num范围内的浮点数
int(random(num)) --产生0-num-1范围内的整数
constrain(value,min.max) --将value的值限制在min和max之间,例如鼠标位置
----鼠标响应事件
void mousePressed()、void mouseMoved()、void mouseDragged(),分别表示按下、移动、拖拽。其中mousePressed()函数等同于系统变量 if(mousePressed)。系统变量mouseButton包含3个值:LEFT、RIGHT、CENTER,分别代表左键、右键和中键。
----键盘响应
主要包括keyPressed按击键响应、key特定按键响应、keyCode功能键响应。
keyPressed表示按下键盘上任意一个键所产生的响应。void keyPressed()等同于if(keyPressed)
key表示只针对某个键的响应事件。例如在if(keyPressed)中加入if(key == 'a')表示A键按下。
功能键响应包括ALT、CONTROL、SHIFT、方向键(UP、DOWN、LEFT、RIGHT)。例如在if(keyPressed)中加入if(key == LEFT)表示方向左键按下。
---曲线轨迹运动
->绕画布中心的做圆周运动
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;
}
----坐标转移、旋转与缩放
translate(x,y,z)函数用于转换坐标原点,其中的x,y,z值决定了坐标原点的位置。一般translate(x,y)
rotate(角度)按照设定的角度旋转相应的图形。参数是弧度,范围0-TWO_PI,可以使用radians()将角度转换成弧度(如radians(45))。函数是顺时针转动图形,且永远围绕原点旋转。如果要让图形不围绕左上角原点旋转,需要使用translate()将原点进行转移。
scale(num)表示缩放图形,如参数0.5表示缩放到原来的一半,参数2表示放大一倍。
pushMatrix()与popMatrix()
pushMatrix()是把当前的旋转数据和坐标数据放入矩阵堆栈中。
popMatrix()则是重新回到程序最开始的坐标系统。
pushMatrix()和popMatrix()一起使用,把当前旋转函数和坐标转移函数放在中间,就可以单独控制不同图形的旋转与坐标,图形之间的旋转或坐标转移不会相互影响。
----时间控制
millis() --从程序开始运行到当前的时间(毫秒)
second() --从程序开始运行到当前的时间(秒)
minute() --从程序开始运行到当前的时间(分)
hour() --从程序开始运行到当前的时间(分)
----面向对象编程
可以创建新的文件,里面定义类,文件放在同个工程下就可以直接引用,具体操作时,点击编辑器的脚本文件右边的下拉箭头符号,选择"新建标签"创建新的文件就行,默认就是在同个目录下。
定义类包含4部分:
1.定义类名,class 名称{}
2.定义类的变量。
3.构造函数。可以是无参或有参,实例化类对象时用new。
4.定义方法。方法不用加public修饰,外部也能直接调用函数。
----图片与文字
支持的图片格式有gif、jpg、png和tga。调用图片的基本步骤有4个,准备好图片、定义图片变量、载入图片至变量、显示图片。
图片文件必须存储位于项目文件夹里的data文件夹中。在"Sketch"菜单(速写本)中选择"AddFile"命令,在浏览窗口选择一张图片,那项目文件夹下会多了一个data文件夹,刚才选择的图片储存在其中。
其次,定义图片变量。语法:PImage 变量名称。
接着,载入图片至变量。loadImage()将图片载入到图片变量中。
最后,用函数image()显示图片。Image()有两种形式:image(图片变量,坐标x,坐标y)和image(图片变量,坐标x,坐标y,宽度,高度)。
tint()用于设置图片的色彩填充值。tint()有集中设置形式:tint(明度),明度值0-255。tint(明度,透明度)。tint(R,G,B)。tint(R,G,B,透明度)。
PImage的width和height分别表示图片的宽高,“x+y*width”是指某个像素在图片中所处的位置。再运用loadPixels()获取图片像素数据,并传递给pixels[],pixels[x+y*width]代表某个像素。
PImage image1;
void setup()
{
size(600,300);
background(0);
image1 = loadImage("1.png");
}
void draw()
{
tint(255);
image(image1,0,0);
}
----字体
可以调用字体来显示文字,步骤如下:
1、在“工具”菜单中选择"创建字体",选择一种字体,然后点OK,之后会创建vlw格式的字体被放入data文件夹中。vlw是processing特有的字体格式。
2、声明PFont类型的变量。
3、使用loadFont()载入字体至变量。
4、textFont()用于为文本指定字体。
5、最后使用text()显示文本。
createFont()允许直接使用电脑中的字体,还允许字体缩放到任意大小而不影响显示质量。
PFont f = createFont("Arial",36,true);//字体名,字体大小,是否开启平滑
----视频
对视频的处理分为两种:一种是处理视频文件,另一种是处理摄像头输入的实时视频。
播放视频文件
1、添加视频至data目录,与图片处理方法相同。
2、编写代码是要首先导入视频库。在"速写本"菜单中选择"引用库文件",然后选择"Video Library for processing 3",就会生成一行代码"import processing.video.*;"。
3、使用Movie定义视频变量。
4、加载视频至变量。Movie movie = new Movie(this,"bg.mp4");
5、使用image()函数显示视频。
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);
}
重要函数有:play()播放、pause()暂停、loop()循环、jump()跳转到特定时间点、duration()视频长度、speed()设置播放速度。
----Minim音频
播放音频步骤:
1、通过"速写本"菜单中的"添加文件"将音频文件加入到data目录下。
2、导入音频库。通过"速写本"菜单中"引用库文件",选择Minim库,脚本中会自动生成导入库代码
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()
{
}
重要函数有:play()播放、pause()暂停、loop()循环播放、skip()快进或快退多少毫秒。文章来源:https://www.toymoban.com/news/detail-810321.html
注意:必须要有draw()函数才能播放出音频,不知道什么原因。文章来源地址https://www.toymoban.com/news/detail-810321.html
到了这里,关于Processing快速使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!