scratch模拟动态声波图/steam教育/声音物理学
用scratch模拟动态声波图是很早就有的一个想法,但是尝试了几次没有做出来。
首先想到的是克隆点,再把点排列起来向前推进。但是一方面单一角色的克隆体做多300个,加入波峰波谷特别多,三百个克隆体根本不够用的。另外如何确定每一个克隆体点对应的坐标也是一个问题,这个方法行不通。
后来又想到能不能用画笔,根据声音的大小,按对应的坐标画出曲线,但是问题又来了,画完曲线后呢?这只是一条静态的曲线,我需要让它如下图运动起来呢?
所以说这个作品的难点在于,声音波形图是一个动态的曲线,曲线上的每一个点,它的x轴随时间向右推进,y轴表示当时声音的大小。
就这样被困住了... ...
昨天闲来无事,随便打开scratch突然就来了灵感,感觉自己可以做出来。
而且最近因为已经了解了私有变量的特性,感觉这个知识可以用的上,于是就开始了我的scratch创作之旅。
从程序的构思,到实际的写代码调试,大概花了两个小时。
因为台式机的麦克风坏了,scratch的声音取值模块用不了。所以声音的大小我用鼠标去模拟,也就是波形图中的点,y坐标取值于鼠标的y坐标。
最后统计了一下总共才33个积木块,但是用到的知识点真的是够了。
1.scratch技术知识点:画笔,克隆,私有变量,列表。(私有变量与克隆结合)
2.计算机程序思维:并发。
3.计算机图像相关知识:FPS图像刷新帧率。
大致思路:
当点击绿旗,开始每隔0.05妙克隆一个红点,为这个点设一个私有变量。每一个克隆出来的点,将私有变量增加1,用来记录其本身的编号。设一个列表,每次克隆完一个红点,把实时的克隆点的y坐标添加进列表。那么每一个克隆体的Y坐标在列表中都有相应的坐标值,克隆体编号与列表编号相同。接下来每次点x坐标增加1后,画笔落笔,将克隆体移动他的上一个克隆体,紧接着在移回来,抬笔。那么这一个过程会在瞬间把所有点用画笔连接成一条完整的曲线,那么如何让这条曲线移动呢,这个就涉及到FPS图像刷新帧率的知识。我们擦除全部画笔画的图像,再把所有点x坐标增加1,继续画笔落笔,将克隆体移动他的上一个克隆体,紧接着在移回来,抬笔。再继续擦除全部画笔画的图像。然后再把所有点x坐标增加1,继续画笔落笔,将克隆体移动他的上一个克隆体,紧接着在移回来,抬笔。再继续擦除全部画笔画的图像... ...
成品运行效果:
思路过程写的比较混乱,故意让你们看不明白哈哈。代码资源有空再上传,感兴趣的朋友可以先自己尝试一下。
这个作品难度系数挺高的,没有一点扎实的scratch基础的铺垫很难完成哦。
少儿编程爱好者,技术交流可以加我微信:13831105925