与其编写繁琐的代码来处理每个独特拖拽交互的几何形状、反馈和动画,开发者现在可以使用“声明式拖拽”来指定元素应该变成什么样。这种在 Dragology 库中实现的转变,允许系统通过推测性地渲染应用程序的未来状态,自动合成流畅且响应迅速的交互。

这张图片提供了该库主要目标的宏观总结:简化复杂 UI 交互的创建。
反转拖放问题
传统的拖放设计通常要求开发者直接编写特定的视觉行为,这对于复杂的几何形状来说可能非常耗费人力。这种障碍往往阻碍了教育工作者、数学家和游戏设计师创建丰富的触觉交互。
声明式拖拽反转了这一过程。界面作者不再编写移动逻辑,而是指定通过拖拽特定元素可以访问哪些未来的模型状态。系统随后负责处理视觉合成的繁重工作。
“与其直接编写所有这些视觉行为,你只需说明,对于每个你想让其可拖拽的元素,拖拽它应该导致应用程序进入哪些未来状态。”
— Declarative Dragging
推测性渲染的机制
Dragology 引擎通过获取模型状态并将其渲染到视图中来运行。当用户开始拖拽时,引擎会推测性地渲染拖拽可能导致的不同未来状态。
通过分析这些推测性渲染结果,系统提取拖拽元素在每个视图中的位置,以确定有效的投放区域。然后,它将这些“可能世界”组合成单一的流畅交互,而无需作者手动定义路径。

此图表说明了推测性渲染的核心机制,即系统分析多个“可能世界”来合成流畅的交互。
可组合性与实际应用
Dragology 旨在具备可组合性,这意味着简单的模型驱动行为可以被组合。开发者可以叠加修饰符,以添加诸如吸附到网格、悬浮元素或特定的过渡动画等功能。
该系统已被用于创建交互式的数学“探索模型”,例如扭曲的树和辫子图。它也正在集成到 Hazel 中,这是一个学术编程环境,它允许通过物理交互使重构变得切实的且可被发现的。

此视觉效果支持了对数学“探索模型”以及该技术可以辅助生成的特定类型图表的提及。
局限性与技术权衡
虽然该系统简化了高质量交互的创建,但源材料并未提供关于帧率或推测性渲染计算开销的具体性能基准。
目前的实现专门为 Web 端的 SVG 界面构建,其在极高频率状态变化下的可扩展性仍是一个需要进一步探索的领域。
Hacker News 读者的反应
以上为 Hacker News 讨论中观点的摘要,并非经过核实的事实。 阅读完整讨论 ↗