1homebackfirstprevnextlast本节目标•这节课我们即将学习–模拟钢琴–乐谱播放2homebackfirstprevnextlast模拟钢琴•该程序可以模拟钢琴,并实现乐曲自动弹奏•右边是程序界面3homebackfirstprevnextlast模拟钢琴•程序功能–用鼠标点击琴键,或按下键盘上的QWERUIOP等按键,可以弹奏钢琴–点击舞台左侧的歌曲名称,程序就会播放选中的乐曲注意,这里播放乐曲的方式和以前游戏中播放音乐的方式是不同的。以前是播放事先录制好的音乐文件,这里是直接播放音符,一个音符接一个音符,就完成了音乐的播放,你可以认为是计算机在自动弹奏乐曲4homebackfirstprevnextlast模拟钢琴•程序的舞台比较简单,就是一个绿色的背景。•程序的角色比较多,但是可以分成几大类:–琴键类角色(Sprite2-Sprite13,Sprite27),非常类似,我们只看其中一个,如Sprite2的代码–信息提示类角色(Sprite14-Sprite26、Sprite28、Sprite29、Sprite31),只负责在屏幕上显示一定的信息,没有代码,是静态不动的–歌曲名按钮角色(HappyBirthday、RowRowRow、Sprite30、WhentheSaints)5homebackfirstprevnextlast模拟钢琴•琴键类角色Sprite2的代码–第一个脚本监测按键“2”如果被按下,则广播事件C#–第二个脚本是C#的事件处理程序,负责切换琴键的造型,实现琴键被按下的效果并且弹奏对应的音符。乐器被设定为1-钢琴。弹奏长度被设定为0.5拍。如果设定乐器为指定变量,则可以实现统一改变乐器的功能–第三个脚本实际上也可以简化为“当Sprite2被点击,广播C#”,这样更简单6homebackfirstprevnextlast模拟钢琴•歌曲名按钮角色代码–右边是播放HappyBirthday乐曲的代码片段。只是当用户点击歌曲名称时,按照曲谱的要求,顺序播放每个音符指定的时间罢了。播放的方式是通过广播事件来完成的,因此播放音符时,对应钢琴按键会显示被按下的效果,就像钢琴在自动弹奏一样了7homebackfirstprevnextlast模拟钢琴•思考:–怎样可以改变乐曲播放的速度?8homebackfirstprevnextlast9homebackfirstprevnextlast10homebackfirstprevnextlast总结•这节课我们学习了–模拟钢琴–乐谱播放