有时需要制作一种可以整体移动, 其中的部件又可以单独控制的 “超级精灵”。 典型的例子是人的身体: 由躯干、四肢和头部组成。 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!

如何获得更多反射能力?

参考