扫我~扫我~

获取更多资讯

    查看: 1959|回复: 0

    [教程] Processing之旅-----【2课Processing的基本结构】

      [复制链接]

    10

    主题

    102

    帖子

    413

    积分

    小松鼠

    Rank: 7Rank: 7Rank: 7

    积分
    413
    发表于 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;
    • }



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

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

    使用道具 举报

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

    本版积分规则

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