← 编程学习中心
📖

Preparation

8 个课程
1
如何学习编程
2
计算机基础
3
键盘初识与基准键位
4
字母与数字基础
5
Shift键魔法
6
编程符号专精
7
功能键与修饰键
8
键盘学习总结与进阶
📚

Basics

22 个课程
1
什么是编程?
2
Hello World - 你的第一个程序
3
变量基础概念 - 给信息贴标签
4
变量赋值和操作 - 变量的高级用法
5
数据类型基础 - 数字和字符串
6
基础运算符 - 数字运算王国
7
布尔类型与比较运算符 - 程序的判断基础
8
条件判断基础 - 让程序学会做决定
9
变量作用域 - 变量的生存范围
10
条件语句进阶 - 复杂判断与嵌套结构
11
逻辑运算符 - 简化复杂条件判断
12
循环语句 - 程序的重复机器
13
循环进阶 - break、continue与循环控制
14
嵌套循环与作用域
15
循环调试实战技巧
16
循环不变量 - 理解循环的数学规律
17
数组基础 - 数据的收纳盒
18
数组操作方法 - 添加、删除和管理
19
数组高级 - 探索数组的强大功能
20
引用概念 - 变量的不同行为
21
函数基础 - 解决重复代码的秘密武器
22
函数实践与应用 - 巩固基础,实战应用
🚀

Intermediate

11 个课程
1
从控制台到画布 - p5.js初体验
2
图形绘制工具箱 - 基础图形函数
3
让世界多彩 - 颜色系统详解
4
文字的艺术 - 文本绘制与样式
5
球体动起来 - 动画基础入门
6
球体的交互魔法 - 鼠标与条件判断
7
面向对象编程 - Class类与实例
8
球的家族 - 循环与数组应用
9
球的个性 - 函数封装与参数化
10
球的变身 - 形状模式与高级绘制
11
球的世界 - 综合创作项目
🎯

Advanced

6 个课程
1
对象类型
2
对象类型应用
3
自定义类型
4
函数进阶 - 箭头函数与高级编程技巧
5
内置方法 - 字符串与数组的魔法工具
6
Switch语句与字符串模板 - 更优雅的代码表达
← 编程学习中心
📖

Preparation

8 个课程
1
如何学习编程
2
计算机基础
3
键盘初识与基准键位
4
字母与数字基础
5
Shift键魔法
6
编程符号专精
7
功能键与修饰键
8
键盘学习总结与进阶
📚

Basics

22 个课程
1
什么是编程?
2
Hello World - 你的第一个程序
3
变量基础概念 - 给信息贴标签
4
变量赋值和操作 - 变量的高级用法
5
数据类型基础 - 数字和字符串
6
基础运算符 - 数字运算王国
7
布尔类型与比较运算符 - 程序的判断基础
8
条件判断基础 - 让程序学会做决定
9
变量作用域 - 变量的生存范围
10
条件语句进阶 - 复杂判断与嵌套结构
11
逻辑运算符 - 简化复杂条件判断
12
循环语句 - 程序的重复机器
13
循环进阶 - break、continue与循环控制
14
嵌套循环与作用域
15
循环调试实战技巧
16
循环不变量 - 理解循环的数学规律
17
数组基础 - 数据的收纳盒
18
数组操作方法 - 添加、删除和管理
19
数组高级 - 探索数组的强大功能
20
引用概念 - 变量的不同行为
21
函数基础 - 解决重复代码的秘密武器
22
函数实践与应用 - 巩固基础,实战应用
🚀

Intermediate

11 个课程
1
从控制台到画布 - p5.js初体验
2
图形绘制工具箱 - 基础图形函数
3
让世界多彩 - 颜色系统详解
4
文字的艺术 - 文本绘制与样式
5
球体动起来 - 动画基础入门
6
球体的交互魔法 - 鼠标与条件判断
7
面向对象编程 - Class类与实例
8
球的家族 - 循环与数组应用
9
球的个性 - 函数封装与参数化
10
球的变身 - 形状模式与高级绘制
11
球的世界 - 综合创作项目
🎯

Advanced

6 个课程
1
对象类型
2
对象类型应用
3
自定义类型
4
函数进阶 - 箭头函数与高级编程技巧
5
内置方法 - 字符串与数组的魔法工具
6
Switch语句与字符串模板 - 更优雅的代码表达

球体动起来 - 动画基础入门

概念介绍

欢迎进入动画的魔法世界!之前我们画的球都是静止的,现在我们要让球动起来!动画的秘密其实很简单:快速连续显示略有不同的画面。在p5.js中,draw()函数每秒钟会自动运行60次,这为动画创造了完美的条件!

学习目标

  • 理解动画原理:draw()函数的重复执行机制
  • 掌握用变量控制球的位置变化
  • 学会速度概念:位置增量就是速度
  • 理解边界检测和反弹效果
  • 学习使用mouseX, mouseY全局变量

🎬 动画原理揭秘

为什么会动?快速显示连续画面!

想象一下翻书动画:

  • 每一页:球的位置稍微不同
  • 快速翻页:看起来就像球在动
  • p5.js的draw()函数:每秒自动"翻页"60次
加载代码编辑器...

🔧 与基础课程的连接

还记得基础课程中的变量概念吗?

  • 基础课程:let score = 100; 变量存储分数
  • 动画课程:let x = 50; 变量存储位置,然后不断更新

现在变量不再是静态的值,而是会随着时间变化!


🏃 速度概念入门

什么是速度?

速度 = 每帧位置的变化量

加载代码编辑器...

速度可以是负数

加载代码编辑器...

🔄 边界反弹

球碰到边界会反弹!

加载代码编辑器...

边界检测原理

球心位置 + 半径 > 画布宽度  →  碰到右边界
球心位置 - 半径 < 0        →  碰到左边界

💻 实践练习

练习1:水平移动的球 🎯

创建一个在水平方向移动的球:

加载代码编辑器...

挑战:

  • 改变速度值,看看有什么不同?
  • 改变球的初始位置
  • 改变球的大小

练习2:垂直移动的球 ⬆️⬇️

让球在垂直方向移动:

加载代码编辑器...

练习3:对角线移动 ↗️

让球同时对x和y方向移动:

加载代码编辑器...

练习4:跟随鼠标的球 🐭

使用mouseX和mouseY全局变量:

加载代码编辑器...

练习5:缓动的球 🌊

球平滑地跟随鼠标:

加载代码编辑器...

练习6:大小变化的球 🔵

球的大小随时间变化:

加载代码编辑器...

练习7:加速的球 🚀

速度逐渐变化的球:

加载代码编辑器...

练习8:呼吸球 🫁

模拟呼吸效果:

加载代码编辑器...

🎯 本课重点总结

核心概念

  • ✅ 动画原理:draw()函数每秒运行60次
  • ✅ 速度概念:每帧位置的变化量
  • ✅ 边界检测:检查球是否碰到画布边缘
  • ✅ 反弹效果:通过改变速度正负实现反弹

重要变量

  • ✅ 位置变量:let x = 100;
  • ✅ 速度变量:let speed = 2;
  • ✅ 全局变量:mouseX, mouseY, width, height

与基础课程的连接

  • ✅ 变量应用:从存储数据到控制动画
  • ✅ 数学运算:+=操作符在动画中的重要性
  • ✅ 条件判断:if语句在边界检测中的应用

🚀 下一步

太棒了!你已经让球动起来了!你学会了:

  • ⚡ 动画基础:draw()函数的重复执行
  • 🎯 速度控制:用变量控制位置变化
  • 🔄 边界反弹:让球在画布内弹跳
  • 🐭 鼠标交互:跟随鼠标的球效果

下一课我们将学习:

  • 🖱️ 鼠标交互:点击、悬停、拖拽效果
  • 📏 距离计算:用dist()函数检测碰撞
  • 🎮 互动游戏:创建真正的交互体验
  • 🔄 状态管理:球的点击、悬停等状态

准备好让你的球不仅能动,还能和你互动了吗?

p5.js官方参考

  • Reference: mouseX
  • Reference: mouseY
  • Reference: width
  • Reference: height
  • Reference: frameCount
  • Reference: sin()
Previous lesson
Previous
文字的艺术 - 文本绘制与样式
Next
球体的交互魔法 - 鼠标与条件判断
Next lesson