Processing之旅-----【2课Processing的基本结构】
本帖最后由 迷你强 于 2016-12-14 16:21 编辑上课!
这节课我们主要讲述Processing的基本结构。
void setup()//初始化函数
{
}
void draw()//周期回调函数
{
}
void functionname()//自定义函数
{
}
void mousePressed()//鼠标事件函数
{
}
void keyPressed()//键盘事件函数
{
}
public classcustomeClassName()//自定义类
//--------------------------------------
//CONSTRUCTOR
//--------------------------------------
publiccustomeClassName()
{
// expression
}
}
以上代码基本上蕴含了Processing的基本程序结构
那么我们进行详细的了解
void setup()函数的功能有些类似其他语言的main函数,说白了就是整个程序最先执行void setup()。当执行完void setup()函数后,再执行void draw()函数。
当然了说道基本结构不得不提的就是Processing可以什么都没有,直接写语句,就像一个草稿一样你让Processing做什么,它就做什么。比如著名的《getting start for Processing》中第一个例子。
ellipse(50, 50, 80, 80);
这个语句你会看到的效果是。
这个程序并没有通过用户来设置窗口大小。但你会发现。如果你什么函数都不写,那么这些程序在一般状态下都只会执行一次。(就算你用死循环它也只执行一次)
为了让同学们更好的理解Processing的基本结构。请尝试执行以下代码。
void setup()//初始化函数
{
size(512, 512);//设置窗口大小
println("Hello,Processing!");
}
void draw()//周期回调函数
{
println("I Love Processing!");
}
可能有的同学以为应该下课了。哈哈,我会告诉你们还要接着讲,是不是很失望~
对于自定义函数事件,和自定义类我们放到以后的课程中进行详细的讲解。
对于void mousePressed()//鼠标事件函数和 void keyPressed()//键盘事件函数,我想说这是一个很重要的函数。因为在Processing中它负责对鼠标事件进行响应。如果同学们看过一些操作系统的书籍,会明白,在程序上用什么方法监听系统事件都是十分低效率的。所以操作系统会采用回调的方式。Callback。来将一些事件如鼠标事件,键盘事件等发送给响应的程序进行处理。
/**
* 鼠标事件函数
*
* Click on the box and drag it across the screen.
*/
float bx;//定义一个浮点数类型变量
float by;//定义一个浮点数类型变量
int boxSize = 75;//定义一个整形的变量
boolean overBox = false;//定义一个布尔型的变量 是否在方块上
boolean locked = false;//定义一个布尔型的变量是否点击了鼠标
float xOffset = 0.0; //定义一个浮点数类型变量
float yOffset = 0.0; //定义一个浮点数类型变量
void setup() //进行一些初始化操作,只执行一次。
{
size(640, 360);//设置窗口大小size(width,height)
bx = width/2.0;//在Processing中width是一个系统默认的变量,在size函数中设置;如果没有调用size函数则width默认为100
by = height/2.0;//在Processing中height也是一个系统默认的变量,在size函数中设置;如果没有调用size函数则height默认为100
rectMode(RADIUS); //rectMode(参数),其中参数有四种 CORNER, CORNERS, CENTER, RADIUS;此函数主要作用是改变rect函数的绘画效果。
}
void draw() //绘画函数,可以简单理解成一个死循环。while(1)这种。
{
background(0);//设置背景颜色。
// 测试光标是否在方块中
if (mouseX > bx-boxSize && mouseX < bx+boxSize &&
mouseY > by-boxSize && mouseY < by+boxSize) {
overBox = true;
if(!locked) {
stroke(255);
fill(153);
}
} else {
stroke(153);
fill(153);
overBox = false;
}
// 画一个方块
rect(bx, by, boxSize, boxSize);
}
void mousePressed() {//点击鼠标事件
if(overBox) {
locked = true;
fill(255, 255, 255);
} else {
locked = false;
}
xOffset = mouseX-bx;
yOffset = mouseY-by;
}
void mouseDragged() {//鼠标拖拽事件
if(locked) {
bx = mouseX-xOffset;
by = mouseY-yOffset;
}
}
void mouseReleased() {//释放鼠标事件
locked = false;
}
同学们自己运行一下。看看效果。很容易理解。如果程序中没有注释的部分则是以后会讲到的内容。不用着急。放松点。后面会更开心。
那么这节课就讲到这里。下课。{:soso__13766225770624999893_3:} {:soso__10594509353080808576_5:} :lol:lol:lol:lol支持 bacon6581 发表于 2013-5-7 22:05 static/image/common/back.gif
谢谢支持啊~:lol 小猪会轮滑 发表于 2013-5-7 22:28 static/image/common/back.gif
支持
谢谢支持啊~:lol 前来支持、、、、、、、:lol caodingguang 发表于 2013-5-8 09:13 static/image/common/back.gif
前来支持、、、、、、、
谢谢支持啊~:lol 鼠标和窗口的坐标是怎么定义的?期待下一课。 问下:为啥我编辑器里中文是乱码?:L 版主 强 支持,继续学习中 楼主辛苦了,菜鸟来学习了 顶楼主,很好的教程 大赞,学习了,刚开始学,决定跟着一课一课的学下去了。支持!!!! 感謝樓主的教導啊!!剛好正在學習processing哩 哇,很棒的教程,在等面条的时间看了一遍,有所收获,谢谢楼主
页:
[1]