极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7735|回复: 14

Processing之旅-----【2课Processing的基本结构】

  [复制链接]
发表于 2013-5-7 21:39:32 | 显示全部楼层 |阅读模式
本帖最后由 迷你强 于 2016-12-14 16:21 编辑

上课!
这节课我们主要讲述Processing的基本结构



  1. void setup()//初始化函数
  2. {

  3. }
  4. void draw()//周期回调函数
  5. {

  6. }
  7. void functionname()//自定义函数
  8. {
  9.         
  10. }
  11. void mousePressed()//鼠标事件函数
  12. {

  13. }
  14. void keyPressed()//键盘事件函数
  15. {

  16. }
  17. public class  customeClassName()//自定义类
  18.         //--------------------------------------
  19.         //  CONSTRUCTOR
  20.         //--------------------------------------
  21.         
  22.         public  customeClassName()
  23.          {
  24.                 // expression
  25.         }
  26. }
复制代码

以上代码基本上蕴含了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]
这个语句你会看到的效果是。
QQ截图20130507203656.png
这个程序并没有通过用户来设置窗口大小。但你会发现。如果你什么函数都不写,那么这些程序在一般状态下都只会执行一次。(就算你用死循环它也只执行一次)
为了让同学们更好的理解Processing的基本结构。请尝试执行以下代码。

  1. void setup()//初始化函数
  2. {
  3.         size(512, 512);//设置窗口大小
  4.         println("Hello,Processing!");
  5. }
  6. void draw()//周期回调函数
  7. {
  8.         println("I Love Processing!");
  9. }
复制代码



QQ截图20130507204602.png

可能有的同学以为应该下课了。哈哈,我会告诉你们还要接着讲,是不是很失望~
对于自定义函数事件,和自定义类我们放到以后的课程中进行详细的讲解。
对于void mousePressed()//鼠标事件函数和 void keyPressed()//键盘事件函数,我想说这是一个很重要的函数。因为在Processing中它负责对鼠标事件进行响应。如果同学们看过一些操作系统的书籍,会明白,在程序上用什么方法监听系统事件都是十分低效率的。所以操作系统会采用回调的方式。Callback。来将一些事件如鼠标事件,键盘事件等发送给响应的程序进行处理。

  1. /**
  2. * 鼠标事件函数
  3. *
  4. * Click on the box and drag it across the screen.
  5. */

  6. float bx;//定义一个浮点数类型变量
  7. float by;//定义一个浮点数类型变量
  8. int boxSize = 75;//定义一个整形的变量
  9. boolean overBox = false;//定义一个布尔型的变量 是否在方块上
  10. boolean locked = false;//定义一个布尔型的变量  是否点击了鼠标
  11. float xOffset = 0.0; //定义一个浮点数类型变量
  12. float yOffset = 0.0; //定义一个浮点数类型变量

  13. void setup() //进行一些初始化操作,只执行一次。
  14. {
  15.   size(640, 360);//设置窗口大小size(width,height)
  16.   bx = width/2.0;//在Processing中width是一个系统默认的变量,在size函数中设置;如果没有调用size函数则width默认为100
  17.   by = height/2.0;//在Processing中height也是一个系统默认的变量,在size函数中设置;如果没有调用size函数则height默认为100
  18.   rectMode(RADIUS); //rectMode(参数),其中参数有四种 CORNER, CORNERS, CENTER, RADIUS;此函数主要作用是改变rect函数的绘画效果。
  19. }

  20. void draw() //绘画函数,可以简单理解成一个死循环。while(1)这种。
  21. {
  22.   background(0);//设置背景颜色。
  23.   
  24.   // 测试光标是否在方块中
  25.   if (mouseX > bx-boxSize && mouseX < bx+boxSize &&
  26.       mouseY > by-boxSize && mouseY < by+boxSize) {
  27.     overBox = true;  
  28.     if(!locked) {
  29.       stroke(255);
  30.       fill(153);
  31.     }
  32.   } else {
  33.     stroke(153);
  34.     fill(153);
  35.     overBox = false;
  36.   }
  37.   
  38.   // 画一个方块
  39.   rect(bx, by, boxSize, boxSize);
  40. }

  41. void mousePressed() {//点击鼠标事件
  42.   if(overBox) {
  43.     locked = true;
  44.     fill(255, 255, 255);
  45.   } else {
  46.     locked = false;
  47.   }
  48.   xOffset = mouseX-bx;
  49.   yOffset = mouseY-by;

  50. }

  51. void mouseDragged() {//鼠标拖拽事件
  52.   if(locked) {
  53.     bx = mouseX-xOffset;
  54.     by = mouseY-yOffset;
  55.   }
  56. }

  57. void mouseReleased() {//释放鼠标事件
  58.   locked = false;
  59. }
复制代码


同学们自己运行一下。看看效果。很容易理解。如果程序中没有注释的部分则是以后会讲到的内容。不用着急。放松点。后面会更开心。

那么这节课就讲到这里。下课。{:soso__13766225770624999893_3:}
回复

使用道具 举报

发表于 2013-5-7 22:05:18 | 显示全部楼层
{:soso__10594509353080808576_5:}
回复 支持 反对

使用道具 举报

发表于 2013-5-7 22:28:17 | 显示全部楼层
支持
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-5-8 07:44:37 | 显示全部楼层
bacon6581 发表于 2013-5-7 22:05

谢谢支持啊~
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-5-8 07:45:04 | 显示全部楼层
小猪会轮滑 发表于 2013-5-7 22:28
支持

谢谢支持啊~
回复 支持 反对

使用道具 举报

发表于 2013-5-8 09:13:34 | 显示全部楼层
前来支持、、、、、、、
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-5-8 09:36:54 | 显示全部楼层
caodingguang 发表于 2013-5-8 09:13
前来支持、、、、、、、

谢谢支持啊~
回复 支持 反对

使用道具 举报

发表于 2013-5-10 21:55:34 | 显示全部楼层
鼠标和窗口的坐标是怎么定义的?期待下一课。
回复 支持 反对

使用道具 举报

发表于 2013-8-5 00:07:04 | 显示全部楼层
问下:为啥我编辑器里中文是乱码?
回复 支持 反对

使用道具 举报

发表于 2013-9-7 17:51:45 | 显示全部楼层
版主 强 支持,继续学习中
回复 支持 反对

使用道具 举报

高级模式  
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊 ( 浙ICP备09023225号 )

GMT+8, 2017-11-25 13:41 , Processed in 0.077244 second(s), 8 queries , File On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表