• Getting started with Processing 示例11-9 追随鼠标移动


    程序片段

    int num = 60;
    int[] x = new int[num];
    int[] y = new int[num];
    
    void setup(){
    size(240,120);
    noStroke();
    }
    
    void draw(){
    background(0);
    //from back to from copy the array
    for(int i = x.length-1;i>0;i--){
    x[i] = x[i-1];
    y[i] = y[i-1];
    }
    x[0] = mouseX;//set the first element
    y[0] = mouseY;//set the first element
    for(int i = 0;i<x.length;i++){
    fill(i*4);
    ellipse(x[i],y[i],40,40);
    }
    }
    

    程序进程

    首先程序中并没有对数组进行初始化,所以一开始的循环中,即 for(int i=x.length-1;i>0;i--)每一个数组中的元素都是随机数。
    然后对x[0]进行赋值,即将现在的坐标值 mouseX 和 mouseY 赋值给 x[0],
    然后执行下一个for 循环语句,这个时候,存储的数据的显示值并没有实际的意义。

    当程序进行下一次 draw() 的时候,这个时候,首先 x[0] 有了新的值,然后 x[1] 也有了确定的数值。

    如此循环下去,六十次的程序进行下去之后,x[60]中每一个元素都有了数值。

    然后继续进行程序的时候,新的 x[0] 不断被赋值,并且 最后一个 数组元素被前一个元素赋值,这里因为数组的长度是一定的,所以就相当于最后一个元素被丢弃,然后进入一个新的元素,即当前的 mouseX 值和 mouseY 值,然后程序不断进行下去。

    从 fill(i*4);这一条语句可以看出,当前鼠标所画出的圆的颜色比较暗淡,但是在起初画的圆的颜色比较明亮。

    总结:

    首先,先填充整个数组,方式是在执行循环之后不断的对 x[0] 的赋值,那么想一下,能不能先进行赋值然后再进行对数组进行循环呢,我认为是可以的。

    当填满这个数组之后,然后不断利用数组长度的有限性,不断进行丢弃旧的数组元素,进入新的数组元素,通过另外一个 for()循环在屏幕上显示出来其路径。





  • 相关阅读:
    jquery练习(赋予属性值)
    jquery练习
    jquery表单对象属性选择器
    jquery表单选择器
    jquery子元素选择器
    jquery属性选择器(同时匹配多个条件)
    jquery属性选择器
    jquery属性选择器(匹配具有指定属性的元素)
    jquery可见性选择器(综合)
    方法的递归
  • 原文地址:https://www.cnblogs.com/FBsharl/p/10146878.html
Copyright © 2020-2023  润新知