从今天开始自学 processing。
在知乎上看到了 OF兜兜鱼 的一些教程,感觉很棒,准备跟着 OF君 开始学习。

  1. Processing教程|如何在黑夜里风情万种这个文章上的星星闪闪的,很棒,代码摘抄如下:
float a,b,c,d;float star;
float x;
float y;void setup(){size(500,500);background(0);frameRate(30); }void draw(){a=random(255);b=random(255);c=random(255);d=random(255);star=random(7);x=random(width);y=random(height);     noStroke();fill(a,b,c,d);ellipse(x,y,star,star);}

效果不错,好看,但是有几个情况,一个是,这段代码的星星是会越来越多的,一段时间之后会铺满整个画布,并且星星并不闪,想想办法换个效果。
2. 预想画布上有100个星星,星星的位置需要保持,并且在星星闪的时候,其实是对星星的颜色进行改动,那星星的rgb,alpha值都需要记录,参照 processing 自带的范例-basics-Arrays-Array,学习了一下数组的用法:
先声明数组 float red[];
然后在 setup() 函数中进行初始化 red = new float[100];
作为 FPGA 工程师,看到这种用法真是神奇。
下面是我自己修改后的代码

float red[],green[],blue[],alpha[];
float star_size[];
float x[];
float y[];
int lightness;
int star_all_num = 100;
int star_cnt;
int frame_rate = 30;
int star_live_time;
int frame_cnt;
void setup(){size(500,500);background(0);frameRate(frame_rate);lightness = 0;     star_all_num = 100; //<>//star_cnt = 0;star_live_time = 3 * 1000;//msred  = new float[star_all_num];green= new float[star_all_num];blue = new float[star_all_num];alpha= new float[star_all_num];star_size = new float[star_all_num];x = new float[star_all_num];y = new float[star_all_num];for(star_cnt = 0; star_cnt < star_all_num; star_cnt ++){red  [star_cnt]    =random(255);green[star_cnt]    =random(255);blue [star_cnt]    =random(255);alpha[star_cnt]    =random(255);star_size[star_cnt]=random(7);x[star_cnt]        =random(width);y[star_cnt]        =random(height);     }
}void draw(){background(0);for(star_cnt = 0; star_cnt < star_all_num; star_cnt ++){noStroke();fill((red[star_cnt]+lightness)%255,(green[star_cnt]+lightness)%255,(blue[star_cnt]+lightness)%255,(alpha[star_cnt]));ellipse(x[star_cnt],y[star_cnt],star_size[star_cnt],star_size[star_cnt]);}lightness ++;
}

效果还行吧,感觉不是星星在变亮,而是在变暗,想不明白。。。
如果真的有人看我的代码,一定对我的 coding style 感觉奇怪。因为我是 FPGA 工程师,代码风格比较特别。
3. 下面将成果搞成 gif 输出。processing 软件可以通过点击 速写本–引用库文件–添加库文件 的方式来加库文件的;但是 processing 的破服务器,我就没成功下载过 lib,参照 Processing库的手动安装的方法,可以手动安装 gifAnimation 库文件。具体方法是:
a. 点击 - 文件-- 偏好设置,找到速写本位置,

b. 找到速写本位置里面的 libraries,将 GitHub 上找到的 兼容 3.x 版本的 gifAnimation.zip 下载并解压到速写本位置里面的 libraries中,关掉 processing 软件再重开。
4. 按照 OF君的 gif 教程,完整版代码如下:

import gifAnimation.*;
GifMaker exp;
float red[],green[],blue[],alpha[];
float star_size[];
float x[];
float y[];
int lightness;
int star_all_num = 100;
int star_cnt;
int frame_rate = 30;
int star_live_time;
int frame_cnt;
void setup(){exp = new GifMaker(this,"stars.gif");exp.setRepeat(0);exp.setDelay(1000/frame_rate);size(500,500);background(0);frameRate(frame_rate);lightness = 0;     star_all_num = 100; //<>//star_cnt = 0;star_live_time = 3 * 1000;//msred  = new float[star_all_num];green= new float[star_all_num];blue = new float[star_all_num];alpha= new float[star_all_num];star_size = new float[star_all_num];x = new float[star_all_num];y = new float[star_all_num];for(star_cnt = 0; star_cnt < star_all_num; star_cnt ++){red  [star_cnt]    =random(255);green[star_cnt]    =random(255);blue [star_cnt]    =random(255);alpha[star_cnt]    =random(255);star_size[star_cnt]=random(7);x[star_cnt]        =(int)random(width);y[star_cnt]        =(int)random(height);     }
}void draw(){exp.addFrame();background(0);for(star_cnt = 0; star_cnt < star_all_num; star_cnt ++){noStroke();//fill((red[star_cnt]+lightness)%255,(green[star_cnt]+lightness)%255,(blue[star_cnt]+lightness)%255,(alpha[star_cnt]+lightness)%255);fill((red[star_cnt]+lightness)%255,(green[star_cnt]+lightness)%255,(blue[star_cnt]+lightness)%255,(alpha[star_cnt]));ellipse(x[star_cnt],y[star_cnt],star_size[star_cnt],star_size[star_cnt]);}lightness ++;
}
void mousePressed(){
exp.finish();
}
  1. 最后的效果图:
  2. 总结,感谢 OF君 的教程,gif 这一块是真坑,processing 软件上的库是很难按上的,官网上很不好弄,后来还是找到了,做出来的效果还是不错的,有一点点成就感。

processing journey 1.0--黑夜里的星星与gifAnimation相关推荐

  1. 你要找到黑夜里代替阳光的东西,那个叫做信念

    你要找到黑夜里代替阳光的东西,那个叫做信念 0.   我经常被问到的问题不外乎,怎么样可以更快地摆脱寂寞,或者是我怕不怕一个人之类的.常常我不知道怎么回答他们,因为我从来没能摆脱过寂寞,而我也并不是 ...

  2. 【helpdesk】启明星helpdesk7.0版本里,实现邮件提交功能介绍和原理

    在启明星helpdesk7.0版本里,新增了一个功能:邮件提交.所谓邮件提交就是用户直接发送邮件到IT.当然IT通常会公开一个公共邮件,例如support@dotnetcms.org.下面介绍一下启明 ...

  3. 如何将lnmp 0.5里面的php5.2.14升级到php 5.3.3???

    如何将lnmp 0.5里面的php5.2.14升级到php 5.3.3??? --------------- 注意:不要百度Google找到的教程发来 那个升级不了::: CentOS5.3的php版 ...

  4. 以Vigoss、Perp、dydx为例,解析衍生品在DeFi2.0进程里的演进

    撰文:Jerry,Leon,前者为Dachal Research发起人,后者为Dachal Research研究员 关于DeFi2.0的言论越来越多,未来如何发展不得而知,但是我们可以根据DeFi市场 ...

  5. 神马笔记 版本2.6.0——对话里的方程公式

    神马笔记 版本2.6.0--对话里的方程公式 一.目标 二.体验地址 三.功能介绍 1. 笔记元素 2. 方程公式 四.开发过程回顾 五.下一版本开发计划 六.新版本规划 七.历史版本回顾 八.帮助和 ...

  6. 神马笔记 版本2.5.0——对话里的图片

    神马笔记 版本2.5.0--对话里的图片 一.目标 二.体验地址 三.功能介绍 1. 添加图片 2. 显示图片 四.开发过程回顾 五.下一版本开发计划 六.新版本规划 七.历史版本回顾 八.帮助和反馈 ...

  7. 黑暗中的YOLO:解决黑夜里的目标检测 | ECCV 2020

    ​​​​​​黑暗中的YOLO:解决黑夜里的目标检测 | ECCV 2020 - 腾讯云开发者社区-腾讯云 (tencent.com) 明天看这个论文... [1] YOLO in the Dark - ...

  8. 代码本色——雪梨的Processing探索·Chapter 0:随机游走

    概述 Chapter 0为我们介绍了随机数.概率和噪声在运动当中起到的变化作用,下面就让我们来好好的了解下这些数学名词,究竟可以起到怎样的公用,最后再让我们来发挥想象进行这些知识的运用创作. 原理介绍 ...

  9. Windows7下查看CRUX 3.0虚拟机里面的linux ext2和ext3文件系统教程

    Windows下查看linux ext2和ext3文件系统教程 Windows系统默认状态下不支持linux 的ext2和ext3文件系统, 本文通过vmware station 10和Ext2Fsd ...

最新文章

  1. java 变量的线程可见性_Java多线程——变量可见性
  2. 3650服务器性能,全新联想System x3650 M4服务器性能出色
  3. SpringMVC开发过程中的中文乱码问题
  4. linux中的size_t和ssize_t区别
  5. FPGA篇(十一)modelsim命令行仿真提示“vsim 不是内部或外部命令,也不是可运行的程序或批处理文件”的解决办法 (转)
  6. db2 删除索引_MySQL 选错索引的原因是什么?
  7. 各大门户网站Flash和JS实现的图片幻灯片切换特效代码文件下载:
  8. html 闪烁文本,HTML最简单的文字闪烁代码
  9. python docx库使用样例_Python docx库用法示例分析
  10. 数据库的数据类型及运算符
  11. 终生学习,是我们不被时代淘汰最大的财富
  12. HTML DOM 入门知识点总结
  13. 数据分析只能当一辈子取数机?可能你缺少这个基础思维
  14. T-Sql(二)事务(Transaction)
  15. RELEASE版本的RegisterClass()失败
  16. Segmentree beats!---吉如一线段树学习笔记
  17. 马化腾是该全面反思腾讯战略了:吃老本不能让腾讯变得伟大!
  18. mysql 锁住一行数据_MySQL-锁
  19. 零基础如何学习C语言?大神亲手总结 17 招,教你玩转C语言!
  20. 苹果和android无线充电,这款mophine无线充电器,苹果安卓放上去就能充

热门文章

  1. Java面向对象之五指棋
  2. 官网easybcd免费版下载步骤
  3. 移动的智能私域终端 电动自行车智能化“智”在哪里
  4. PC端微信加群的测试用例和app端微信加群的测试用例
  5. 税务软件需求说明书的编写方法与实例
  6. 2013年8月最新浏览器市场份额
  7. 通过Web安全工具Burp suite找出网站中的XSS漏洞实战(二) 1
  8. “3+1”,剑指何方?――威海校区软件学院扫描
  9. matlab读数据库,matlab读写数据库
  10. 关于错误TypeError: get_biff_record() missing 1 required positional argument: ‘self‘的解决