如何在Scratch中实现可点击切换颜色的动态点阵网格?
Scratch 动态生成可点击切换颜色的点阵网格实现方法
核心思路
不用制作多套背景或精灵组,靠克隆功能动态生成点阵,一套脚本就能适配任意完全平方数的网格(比如49对应7×7、36对应6×6)。
具体步骤
1. 准备基础点阵精灵
- 新建一个小圆形/方形精灵,命名为「点阵单元」
- 给它做两个造型:一个红色填充、一个蓝色填充(用造型切换比颜色特效更直观)
- 将原精灵设为隐藏状态(只通过克隆生成可见的点阵)
2. 处理用户输入与网格计算
- 用「询问并等待」积木让用户输入总点数,询问内容设为「请输入完全平方数(如49=7×7):」
- 计算行列数:用
sqrt(回答)积木取平方根,比如输入49就得到7。加个判断逻辑:如果取整(sqrt(回答)) * 取整(sqrt(回答)) ≠ 回答,就说「请输入有效的完全平方数!」并停止当前脚本,重新询问 - 计算点阵间距:为了让网格居中且不超出舞台,留左右各50、上下各50的边距,间距公式设为
(480 - 100) / 行列数(舞台默认宽度480),y轴间距同理用(360 - 100) / 行列数(舞台默认高度360)
3. 克隆生成网格
在原精灵的脚本里编写如下逻辑:
当绿旗被点击 删除所有克隆体 询问「请输入完全平方数(如49=7×7):」并等待 设 行列数 为 取整(sqrt(回答)) 如果 行列数 * 行列数 ≠ 回答 那么 说「请输入有效的完全平方数!」2秒 停止当前脚本 设 x间距 为 (480 - 100) / 行列数 设 y间距 为 (360 - 100) / 行列数 设 当前行数 为 1 重复执行 行列数 次 设 当前列数 为 1 设 y坐标 为 (180 - 50) - (y间距 * (当前行数 - 1)) // 180是舞台半高,减50为上边距 重复执行 行列数 次 设 x坐标 为 (-240 + 50) + (x间距 * (当前列数 - 1)) // -240是舞台半宽,加50为左边距 移动到 x: x坐标 y: y坐标 克隆自己 将 当前列数 增加 1 将 当前行数 增加 1
4. 实现点击切换颜色
在「点阵单元」的脚本里添加克隆体交互逻辑:
当作为克隆体启动时 显示 当此克隆体被点击 下一个造型 // 依赖提前做好的红、蓝两个造型,实现循环切换
如果不想做造型,也可以用颜色特效替代:
当此克隆体被点击 如果 颜色特效 = 0 那么 // 假设初始红色对应特效0 将颜色特效设定为 100 // 切换为蓝色(数值可自行调整) 否则 将颜色特效设定为 0
5. 重置功能(可选)
添加一个触发(比如按下空格键),快速清空网格并重新生成:
当按下 空格 键 删除所有克隆体
内容的提问来源于stack exchange,提问作者Jeffery Lou
相关产品推荐
相关产品推荐

