1

Snap! 中的嵌套精灵

 1 month ago
source link: http://wwj718.github.io/post/%E7%BC%96%E7%A8%8B/snap-nesting-sprites/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

有时需要制作一种可以整体移动, 其中的部件又可以单独控制的 “超级精灵”。 典型的例子是人的身体: 由躯干、四肢和头部组成。 Snap! 允许将一个精灵指定为锚点(Anchors),而将其他精灵作为它的部件。 – SnapManual/B. Nesting Sprites: Anchors and Parts

之前分享的两个项目都与嵌套精灵有关:

机械原理的动画

我对机械原理的动画一直很感兴趣, 这个 youtube 频道 里有大量展示机械原理的动画:

Snap-Nesting-Sprites.png

从播放量看得出,爱好者还不少。

使用嵌套精灵, 可以在 Snap! 中制作这类动画。

一共只用了 3 个积木!

摩天轮的例子受到 GP Blocks 同名项目的启发: Ferris Wheel(点击体验)

FerrisWheel-gpblocks.png

以下是 Snap 中的版本: 摩天轮

Snap! 嵌套精灵功能似乎受到 GP Blocks 的启发, 都是从 morphic submorph 移植而来, 因此也拥有 morphic 的具体性(Concreteness)和直接性(Directness): 用户通过直接操作图形, 指定他们之间的关系(建立约束)。 直接操作图形的想法受到The Alternate Reality Kit的启发。

曲柄滑块

像曲柄滑块这样看起来很复杂的项目, 一共只用了 10 个积木!

Snap! 最令人满意的地方在于它的简洁和可理解性.

Snap! 的反射(reflection)能力

反射(reflection), 是指计算机程序在运行时(runtime)可以访问、检测和修改它本身状态或行为的一种能力。用比喻来说,反射就是程序在运行的时候能够“观察”并且修改自己的行为。 – 维基百科: 反射式编程

Snap! 是 Smalltalk 和 Scheme 的私生子, 继承了 Smalltalk 强大的反射能力, 这些能力使得我们可以获取和操作精灵的大量状态, 在曲柄滑块的例子中, 我们将滑块固定在曲柄的"右端", 便利用到这种能力。

Snap-Nesting-Sprites-02.png

Snap! 的"sensing" 类型积木中, 提供了许多反射能力。

如何通过积木设置旋转中心点?

Snap-Nesting-Sprites-03.jpg

绘制的矢量造型有问题

绘制的矢量造型可能出现以下问题:

  • 图案扭曲变形
  • 旋转中心偏移不见

Snap! 的矢量编辑器似乎不够稳定, 建议:

  • 切换到像素模式
  • 使用外部的矢量编辑器, 如 SVG-edit. 绘制完成后将 svg 到 Snap!

如何获得更多反射能力?

Snap-Nesting-Sprites-04.png

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK