scratch模拟动态声波图/steam教育/输入输出/声音物理学

用scratch模拟动态声波图是很早就有的一个想法,但是尝试了几次没有做出来。

首先想到的是克隆点,再把点排列成线,整体向前推进制造动态效果。但是单一角色的克隆体最多300个,连成的线长度有限,波形图的波峰波谷起伏很大的话,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


 

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

scratch_jiang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值