搜索

Scratch 教程

基本介绍

使用 Scratch 3 注册与登录 操作界面 我的东西

图形与声音

绘制造型&背景 编辑音效

程序积木

积木种类 动作 外观 音效 事件 控制 侦测 运算 变数 清单 函数积木

扩充功能

音乐 画笔 视频侦测 文字转语音 翻译

技巧&观念

全域变数、区域变数 深入理解区域变数 控制指定分身 控制所有分身的方法 云端变数 云端变数记录文字 变数串接文字 判断英文字母大小写 中断与停止程序 广播消息并等待 键盘与鼠标 鼠标点击与长按 侦测所有键盘按键 点击隐藏的角色 突破角色尺寸限制 角色与舞台边界 重复积木的等待时间 音乐暂停与继续播放 使用造型名称建立清单 使用造型代替变数 文字转清单 清单合并为文字 判断两个清单是否相同 复制清单、反转清单 清单数字排序 清单最大值最小值

入门范例

键盘控制猫咪 指向中间的箭头 水果音乐钢琴 猫咪的影分身之术 猫咪的细胞分裂 螃蟹跑来跑去 吃水果 摸蝴蝶 小狗追棒球 鱼儿水中游 小鸟往前飞 舞棍阿伯 小时钟 摇骰子 转动的眼球 抽奖轮盘 大乐透电脑选号 卡牌抽签 ( 20 中 1 ) 移动到边缘切换场景 人物依序跳舞 ( 广播 ) 按钮控制猫咪 ( 广播 )

进阶范例

猫咪跑步 ( 连续背景 ) 猫咪跑步 ( 超长背景 ) 大型数字 ( 图形数字 ) 拖拉怪兽碰撞墙壁 键盘钢琴 ( 记录音符 ) 中文字逐字稿 英文字逐字稿 计算机 1 ( 显示数字 ) 计算机 2 ( 加减乘除 ) 云端聊天室 音乐播放器 推猫咪 ( 视频侦测 ) 围捕小鱼 ( 视频侦测 ) 戳泡泡 ( 视频侦测 )

视觉特效范例

视差效果 水中吐泡泡 雪花随风飘 键盘钢琴 ( 音符动画 ) 无限循环画中画 水底探照灯 狙击望远镜 ( 两倍变焦 ) 猫咪万花筒 仙女棒 ( 光迹效果 ) 骇客任务背景特效 放烟火 1 ( 往上发射 ) 放烟火 2 ( 爆炸效果 )

绘图范例

镜射画图 ( 对称图形 ) 小画家 ( 舞台上画图 ) 记录画图轨迹 绘制圆形 绘制椭圆形 绘制立方体 ( 会动 ) 绘制正多边形 绘制正多角星形 ( 单纯 ) 绘制正多角星形 ( 多线 ) 绘制抛物线 绘制折线图 绘制圆饼图 绘制圆饼图 ( 指示线 ) 蜘蛛结网 ( 八边形网 ) 绘制舞台方格 绘制正弦波形 ( sin ) 正弦波毛毛虫动画 显示声波图形

物理&模拟范例

钟摆运动 简单磁铁效果 两个磁铁的磁力线 立体空间 ( 三度空间 ) 循迹移动 抛物线发射炮弹 地球绕着太阳转 弹跳的篮球 电风扇 ( 控制强度 ) 拉不走的弹力球 惯性移动 ( 鼠标 ) 惯性移动 ( 键盘 )

入门游戏范例

猴子接香蕉 打地鼠 打地鼠 ( 体感视频侦测 ) 刮刮乐 吹风机吹头发 太空狗闪躲陨石 九九乘法测验 英文单字测验 钓鱼游戏 拍西瓜 ( 储存最高分 ) 宝可梦猜猜我是谁 ( 基本 ) 形状配对拼图 台湾地图拼图 英文打字机 英文打字机 ( 判断大小写 ) 射击外星人 猜数字 ( 猜大小 ) 猜数字 ( 几 A 几 B ) 连连看 ( 产生器 ) 连连看

进阶游戏范例

青蛙过河 青蛙过马路 反弹球 ( 乒乓球 ) 打砖块 狙击气球 ( 两倍变焦 ) Flappy Bird Flappy Bird ( 声控版 ) 走迷宫 ( 基本 ) 大型迷宫 ( 键盘控制 ) 大型迷宫 ( 鼠标控制 ) 翻卡记忆游戏 翻卡记忆游戏 ( 改良版 ) 井字棋 ( 圈圈叉叉 ) 九宫格拼图 九宫格拼图 ( 改良版 ) 音阶记忆 贪吃蛇 ( 分身版 ) 贪吃蛇 ( 画笔版 ) 小鸡下楼梯 拉霸机

团康游戏范例

摇骰子 ( 1~3 个 ) 比手画脚 ( 猜动物 ) 音乐传球游戏 大声公 ( 比赛谁的气长 ) 抽签 ( 可调整中签数量 ) 转盘指针 ( 指到谁就当鬼 ) 倒数计时器 ( 基本版 ) 倒数计时器 ( 大数字版 )

游戏设计技巧

角色 ( 地上移动 ) 角色 ( 蹲下、左右转 ) 角色 ( 跳耀、两段跳 ) 角色 ( 墙壁、爬墙 ) 地图 ( 清单转换 ) 地图 ( 二维数组 ) 地图 ( 控制移动 ) 地图 ( 墙壁碰撞侦测 ) 地图 ( 吃东西侦测 ) 俄罗斯方块 ( 角色与背景 ) 俄罗斯方块 ( 移动与碰撞 ) 俄罗斯方块 ( 放置方块 ) 俄罗斯方块 ( 消除完成方块 ) 俄罗斯方块 ( 下个形状 )

音乐播放器

这个范例会使用 Scratch 实作一个“音乐播放器”,音乐播放器的功能包含:播放、暂停、停止、上一首、下一首、循环播放、单首循环和显示播放进度等功能。

快速导览:

绘制角色造型

使用绘画方式建立第一个角色“play”,负责控制音乐的播放、暂停和继续播放,替角色绘制三组造型,造型名称分别是 stop ( 黑色三角 )、play ( 绿色三角 ) 和 pause ( 两条红色直线 )。

Scratch 教学 - 音乐播放器 ( 播放、暂停、停止、上下首、循环播放 ) - 绘制角色造型

使用绘画方式建立第二个角色“stop”,负责将音乐停止,造型使用一个黑色正方形。

Scratch 教学 - 音乐播放器 ( 播放、暂停、停止、上下首、循环播放 ) - 绘制角色造型

使用绘画方式建立第三个角色“next”,负责播放下一首,造型使用一个两个较薄的“向右”黑色三角形。

Scratch 教学 - 音乐播放器 ( 播放、暂停、停止、上下首、循环播放 ) - 绘制角色造型

使用绘画方式建立第四个角色“pre”,负责播放上一首,造型使用一个两个较薄的“向左”黑色三角形。

Scratch 教学 - 音乐播放器 ( 播放、暂停、停止、上下首、循环播放 ) - 绘制角色造型

使用绘画方式建立第五个角色“repeat”,负责控制音乐的不循环、单首循环和全部循环,替角色绘制三组造型,造型名称分别是 no ( 灰色停止循环标志 )、one ( 黑色循环一次标志 ) 和 all ( 黑色循环标志 )。

Scratch 教学 - 音乐播放器 ( 播放、暂停、停止、上下首、循环播放 ) - 绘制角色造型

使用绘画方式建立第六个角色“line”,负责进度条的底色,造型绘制一个 382x15 的灰色长条形,对齐画布中心。

Scratch 教学 - 音乐播放器 ( 播放、暂停、停止、上下首、循环播放 ) - 绘制角色造型

使用绘画方式建立第七个角色“line_color”,负责进度条的进度颜色,造型绘制一个 14x14 的橘色圆形,对齐画布中心。

Scratch 教学 - 音乐播放器 ( 播放、暂停、停止、上下首、循环播放 ) - 绘制角色造型

建立音乐角色并上传音乐

使用绘画方式建立第八个角色“music”,建立角色后,切换到“音效”页签,上传自己要播放的音乐。

Scratch 教学 - 音乐播放器 ( 播放、暂停、停止、上下首、循环播放 ) - 建立音乐角色并上传音乐

接着切换到“造型”页签,上传几首音乐就建立几个造型,造型的顺序必须对应音乐的顺序,并使用“音乐长度”作为造型名称。

Scratch 教学 - 音乐播放器 ( 播放、暂停、停止、上下首、循环播放 ) - 建立音乐角色并上传音乐

在舞台上排列角色

八个角色都绘制完成后,按照下图,在舞台上排列这八个角色。

Scratch 教学 - 音乐播放器 ( 播放、暂停、停止、上下首、循环播放 ) - 在舞台上排列角色

程序原理 ( music )

编辑“music”角色的程序,从左侧积木选单里,建立一个名为“音乐时间清单”的函数,并勾选“执行完毕再更新画面”,再来将会透过这个函数,“自动”快速纪录目前的歌曲数量。

Scratch 教学 - 音乐播放器 ( 播放、暂停、停止、上下首、循环播放 ) - “音乐时间清单”的函数

点击绿旗时,新增一个变数 music_num 为 1,表示目前要播放的音乐为第一首,并根据 music_num 更换造型,同时使用函数纪录所有造型名称,纪录完成后,清单的长度就是音乐的数量。

Scratch 教学 - 音乐播放器 ( 播放、暂停、停止、上下首、循环播放 ) - 纪录完成后,清单的长度就是音乐的数量

函数执行后,发送 stop 广播信号,并在接收到 stop 广播信号时,设定变数 state 为 stop ( 从左侧积木里新增一个变数 state ),且停止所有音效。

Scratch 教学 - 音乐播放器 ( 播放、暂停、停止、上下首、循环播放 ) - 函数执行后,发送 stop 广播信号

编辑收到广播消息 pause 和 play 的程序,使用“降低播放速度和静音”模拟音乐暂停,并透过 state 的内容判断音乐是否从头开始播放。

Scratch 教学 - 音乐播放器 ( 播放、暂停、停止、上下首、循环播放 ) - 使用“降低播放速度和静音”模拟音乐暂停

新增一个名为“切换”的函数,“不用勾选”执行完毕再更新画面。

Scratch 教学 - 音乐播放器 ( 播放、暂停、停止、上下首、循环播放 ) - 新增一个名为“切换”的函数,

使用接收广播 next 和 pre 的做法,实作上一首和下一首的程序,不论是收到哪种信号,都会先透过 music_num 变数取得播放的音乐项目号码,接着根据号码播放音乐。

Scratch 教学 - 音乐播放器 ( 播放、暂停、停止、上下首、循环播放 ) - 新增一个名为“切换”的函数,

程序原理 ( play )

编辑“play”角色的程序,内容大多是点击角色后,改变造型并发送对应的广播消息,主要逻辑规则如下:

造型 目前状态 点击后的行为
stop 造型 ( 黑色三角 ) 停止状态 广播 play 后呈现 pause 造型 ( 红色双杠 )。
play 造型 ( 绿色三角 ) 暂停状态 广播 play 后并呈现 pause 造型 ( 红色双杠 )。
pause 造型 ( 红色双杠 ) 播放状态 发送 pause 开始播放,并呈现 play 造型 ( 色三角 )。

Scratch 教学 - 音乐播放器 ( 播放、暂停、停止、上下首、循环播放 ) - 程序原理 ( play )

程序原理 ( stop )

编辑“stop”角色的程序,点击角色后广播 stop。

Scratch 教学 - 音乐播放器 ( 播放、暂停、停止、上下首、循环播放 ) - 程序原理 ( stop )

程序原理 ( next )

编辑“next”角色的程序,点击角色后广播 next。

Scratch 教学 - 音乐播放器 ( 播放、暂停、停止、上下首、循环播放 ) - 程序原理 ( next )

程序原理 ( pre )

编辑“pre”角色的程序,点击角色后广播 pre。

Scratch 教学 - 音乐播放器 ( 播放、暂停、停止、上下首、循环播放 ) - 程序原理 ( pre )

程序原理 ( repeat )

编辑“repeat”角色的程序,点击绿旗时,默认使用 all 造型标示“全部循环”,并新增一个 repeat 变数,变数值为目前的造型名称 ( all ),点击角色后切换造型,再将 repeat 设定为目前的造型名称。

Scratch 教学 - 音乐播放器 ( 播放、暂停、停止、上下首、循环播放 ) - 程序原理 ( repeat )

程序原理 ( line )

编辑“line”角色的程序,点击绿旗时进行定位和移到最下层 ( 避免盖住进度颜色 ),接着加入画笔积木,在收到 stop 广播时,进行“盖章”的动作并隐藏角色,就能在每次停止时,重置进度条“底色”。

Scratch 教学 - 音乐播放器 ( 播放、暂停、停止、上下首、循环播放 ) - 程序原理 ( line )

程序原理 ( line_color )

编辑“line_color”角色的程序,首先是收到 stop 广播时,将进度点移动到进度条最前方,图层移动到最上层,并设定画笔的颜色和粗细与造型相同。

Scratch 教学 - 音乐播放器 ( 播放、暂停、停止、上下首、循环播放 ) - 程序原理 ( line )

当收到 play 广播时,使用 step 变数表示“每一秒移动的距离”,计算方式为“灰色进度底色的长度,除以目前的音乐长度”,利用清单 music_time 搭配目前第几首音乐的 music_num 就能读取音乐长度,读取每一秒移动的距离后,让 line_color 每隔 0.5 秒移动半步 ( step/2 ),搭配画笔的“下笔”,就能制作出音乐播放的进度条。

Scratch 教学 - 音乐播放器 ( 播放、暂停、停止、上下首、循环播放 ) - 程序原理 ( line )

当进度条完成后,根据目前 repeat 变数的内容,决定接下来要继续播放下一首、停止播放还是重复播放这一首。

Scratch 教学 - 音乐播放器 ( 播放、暂停、停止、上下首、循环播放 ) - 程序原理 ( line )

完成效果

程序完成后,点击绿旗,就可以透过音乐播放器的按钮,控制音乐播放、暂停、停止、上一首、下一首、循环播放、单首循环和显示播放进度。

Scratch 教学 - 音乐播放器 ( 播放、暂停、停止、上下首、循环播放 ) - 完成效果

范例解答

范例解答:https://scratch.mit.edu/projects/946213298/

小结

虽然这个音乐播放器可以做到基本的控制,但美中不足的是不能“真正暂停”音乐,也不能让音乐跳转到指定的位置,不过整篇范例使用了不少有趣的技巧,例如造型名称、广播沟通、画笔...等,是相当有意思的范例喔!

意见反馈

微信二维码 微信扫码关注 抖音二维码 抖音扫码关注