Processing快速使用

-----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()快进或快退多少毫秒。

注意:必须要有draw()函数才能播放出音频,不知道什么原因。

猜你喜欢

转载自blog.csdn.net/qq_34256136/article/details/129883890