Snap! 中的嵌套精灵
文章目录
有时需要制作一种可以整体移动, 其中的部件又可以单独控制的 “超级精灵”。 典型的例子是人的身体: 由躯干、四肢和头部组成。 Snap! 允许将一个精灵指定为锚点(Anchors),而将其他精灵作为它的部件。 – SnapManual/B. Nesting Sprites: Anchors and Parts
前言
之前分享的两个项目都与嵌套精灵有关:
机械原理的动画
我对机械原理的动画一直很感兴趣, 这个 youtube 频道 里有大量展示机械原理的动画:
从播放量看得出,爱好者还不少。
使用嵌套精灵, 可以在 Snap! 中制作这类动画。
摩天轮
一共只用了 3 个积木!
摩天轮的例子受到 GP Blocks 同名项目的启发: Ferris Wheel(点击体验)
以下是 Snap 中的版本: 摩天轮
Snap! 嵌套精灵功能似乎受到 GP Blocks 的启发, 都是从 morphic submorph 移植而来, 因此也拥有 morphic 的具体性(Concreteness)和直接性(Directness): 用户通过直接操作图形, 指定他们之间的关系(建立约束)。 直接操作图形的想法受到The Alternate Reality Kit的启发。
曲柄滑块
像曲柄滑块这样看起来很复杂的项目, 一共只用了 10 个积木!
Snap! 最令人满意的地方在于它的简洁和可理解性.
Snap! 的反射(reflection)能力
反射(reflection), 是指计算机程序在运行时(runtime)可以访问、检测和修改它本身状态或行为的一种能力。用比喻来说,反射就是程序在运行的时候能够“观察”并且修改自己的行为。 – 维基百科: 反射式编程
Snap! 是 Smalltalk 和 Scheme 的私生子, 继承了 Smalltalk 强大的反射能力, 这些能力使得我们可以获取和操作精灵的大量状态, 在曲柄滑块的例子中, 我们将滑块固定在曲柄的"右端", 便利用到这种能力。
Snap! 的"sensing" 类型积木中, 提供了许多反射能力。
FAQ
如何通过积木设置旋转中心点?
绘制的矢量造型有问题
绘制的矢量造型可能出现以下问题:
- 图案扭曲变形
- 旋转中心偏移不见
Snap! 的矢量编辑器似乎不够稳定, 建议:
- 切换到像素模式
- 使用外部的矢量编辑器, 如 SVG-edit. 绘制完成后将 svg 到 Snap!
如何获得更多反射能力?
参考
文章作者 种瓜
上次更新 2024-04-22