|
本帖最后由 迷你强 于 2016-12-14 16:21 编辑
上课!
这节课我们主要讲述Processing的基本结构。 - void setup()//初始化函数
- {
- }
- void draw()//周期回调函数
- {
- }
- void functionname()//自定义函数
- {
-
- }
- void mousePressed()//鼠标事件函数
- {
- }
- void keyPressed()//键盘事件函数
- {
- }
- public class customeClassName()//自定义类
- //--------------------------------------
- // CONSTRUCTOR
- //--------------------------------------
-
- public customeClassName()
- {
- // expression
- }
- }
复制代码
以上代码基本上蕴含了Processing的基本程序结构
那么我们进行详细的了解
void setup()函数的功能有些类似其他语言的main函数,说白了就是整个程序最先执行void setup()。当执行完void setup()函数后,再执行void draw()函数。
当然了说道基本结构不得不提的就是Processing可以什么都没有,直接写语句,就像一个草稿一样你让Processing做什么,它就做什么。比如著名的《getting start for Processing》中第一个例子。
[pre lang="processing" line="1"]ellipse(50, 50, 80, 80);[/code]
这个语句你会看到的效果是。
这个程序并没有通过用户来设置窗口大小。但你会发现。如果你什么函数都不写,那么这些程序在一般状态下都只会执行一次。(就算你用死循环它也只执行一次)
为了让同学们更好的理解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:} |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|