找回密码
 立即注册

QQ登录

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

来源: 教程 奥松-Tony 2015-1-30 09:13 显示全部楼层 |阅读模式
这节课我们主要讲述Processing的基本结构
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》中第一个例子。
PROCESSING 代码复制打印

  • ellipse(50, 50, 80, 80);


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

PROCESSING 代码复制打印

  • void setup()//初始化函数
  • {
  •         size(512, 512);//设置窗口大小
  •         println("Hello,Processing!");
  • }
  • void draw()//周期回调函数
  • {
  •         println("I Love Processing!");
  • }




204624oqwbu6svuvubbwzo.png

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

PROCESSING 代码复制打印

  • /**
  • * 鼠标事件函数
  • *
  • * 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;
  • }



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

那么这节课就讲到这里。下课。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册