Processing学习笔记(三)
标签:
it |
5/响应
示例5-1:draw()函数
{
}
将会看到:
它是动态的
示例5-2:setup()函数
void setup()
{
}
void draw()
{
}
代码运行时,在控制台上会有如下输出:
文本“I’m running”会一直持续地被写到控制台上,直到程序结束。
示例5-3:当setup()遇到draw()函数
下面的例子把以上讲的两个函数都放在一起:
int x=280;
int y=-100;
int diameter=380;
void setup()
{
}
void draw()
{
}
图示:
跟随
既然我们可以让我们的程序持续地运行了,那么我们就可以跟踪鼠标的位置然后使用得到的这些数值来移动屏幕上的元素。
示例5-4:跟踪鼠标
代码:
void setup()
{
}
void draw()
{
}
图示:
当鼠标移动的很快时,圆圈会被放置的十分分散。
示例5-5:跟随你的点
代码:
void setup()
{
}
void draw()
{
}
图示:
background()函数会清空屏幕,所以一定要保证它被放在draw()函数中,并且在其他函数之前。否则,画上的形状会被清空的。
示例5-6:连续作画
代码:
void setup()
{
}
void draw()
{
}
图示:
示例5-7:连续设置厚度
void setup()
{
size(480,120);
smooth();
stroke(0,102);
}
void draw()
{
}
图示:
示例5-8:轻随(easing)
代码:
float x;
float easing=0.01;
float diameter=12;
void setup()
{
}
void draw()
{
}
图示:
X变量的值总是越来越向targetX接近的。追上targetX的速度是由easing这个变量表示的,范围是0~1.easing的值越小,延迟就会越大。如果值大到1,那么就不存在延迟了。运行5-8,确切的值是通过控制台在函数println()中输出的。当你移动了鼠标,注意数字是如何让分离的,但是当鼠标停止移动,那么X值会越来越接近targetX.
示例5-9:用easing作出平滑的曲线
代码:
float x,y,px,py;
float easing=0.05;
void setup()
{
}
void draw()
{
}
图示:
映射
示例5-10:将值映射到范围
变量mouseX经常在0和窗口的宽度之间,当然你想将这些值映射到其他坐标范围也是可行的。你可以使用一个数来分割mouseX以减少范围,然后增加或者减少一个数来左移火右移,以做到这种效果。
代码:
void setup()
{
}
void draw()
{
}
图示:
示例5-11:通过map()函数来映射
这个示例将5-10示例使用map()函数重写了。
代码:
void setup()
{
}
void draw()
{
}
图示:
map()函数使代码更容易阅读了。因为最小值和最大值被清除地写成了参数。在这个示例中,mouseX值从原来的0~width转换成了60~80。
点击
示例5-12:点击鼠标
代码:
void setup()
{
}
void draw()
{
line(0,70,width,50);
}
图示:
在这个程序中,if模块中的代码只有当鼠标按键按下时才执行。当按键没有被按下时,这行代码是被忽略的。
示例5-13:当没有点击检测
if拓展一下,加个else
代码:
void setup()
{
}
void draw()
{
line(0,70,width,50);
}
图示:
示例5-14:鼠标不同键位点击
如果你的鼠标有多个键位,Procrssing同样会追踪是点击了哪个键。mouseButton变量可以是下面任意3种值之一:LEFT、CENTER、RIGHT。为了确认是哪个键被按下了,==号是必须的,就像下面的例子:
代码:
void setup()
{
}
void draw()
{
}
图示:
一个程序可以有许多个if….else….结构,可以比这些简单地程序多得多。它们可以被连接在一起,成为一个长长的序列(并列的,分别为不同的选择判断)。也可以被嵌套的存在,如果在if中需要更多的if来判断更复杂的情况的话。
一个if结构可以和mouseX和mouseY一起使用来决定鼠标在窗口的位置。
示例5-15:寻找鼠标
代码:
float x;
int offset=10;
void setup()
{
}
void draw()
{
line(mouseX,mouseY,mouseX+offset,mouseY+10);
line(mouseX,mouseY,mouseX+offset*3,mouseY);
}
图示:
示例5-16:圆的边界
代码:
int x=120;
int y=60;
int radius=12;
void setup()
{
}
void draw()
{
}
图示:
示例5-17:矩形的边界
代码:
int x=80;
int y=30;
int w=80;
int h=60;
void setup()
{
}
void draw()
{
}
图示:
前
后
类型
示例5-18:按下一个键
代码:
void setup()
{
}
void draw()
{
if(keyPressed)
{
}
}
图示:
Key变量保存了最近依次按下的键的信息。它的数据类型是char字符型,这是character的简写。一个字符型的变量可以存储任何单个字符,包括字母表的字母,数字和符号。不像string字符串型的值,string是用双引号引起来的,而char字符型使用单引号。下面是一个声明和赋值字符变量的例子。
不像keyPressed是布尔型,当一个按键每次放开时就转化成假,而key这个变量会一直保留它的结果,知道另一个键被按下。接下来的示例是使用key的值在屏幕上画出这些字符的。每次当一个新的键被按下的时候,它的值就被更换成一个新的字符,然后画出来。一些案件,数Shift和Alt没有一个可见的字符表示,所以当你按下它们时,没有东西会被画出来。
示例5-19:画一些字符
代码:
void setup()
{
}
void draw()
{
}
图示:
示例5-20:检验特殊的键
代码:
void setup()
{
}
void draw()
{
}
图示:
示例5-21:用方向键来移动
参考资料

加载中…