当前位置: 首页
前端开发
Twine/Harlowe中实现可重复点击且不消失的链接

Twine/Harlowe中实现可重复点击且不消失的链接

热心网友 时间:2026-07-24
转载

在Twine Harlowe中,(link:)宏点击后链接消失,仅支持一次性交互。若需可重复点击的链接,应改用(link-rerun:)宏,它保留链接并重新执行内部内容,适合反复触发同一交互的场景,但需注意避免在其中执行破坏性操作。

在 Twine 的 Harlowe 叙事引擎中,使用 `(link:)` 宏创建的链接会在点击后自动从页面消失;若希望实现多次触发同一交互(例如反复弹出提示信息),则应改用 `(link-rerun:)` 宏——该宏会保留链接并重新执行其内部内容。

这个问题在 Twine/Harlowe 的交互式叙事创作中其实相当常见。你可能会发现,Harlowe 默认的 `(link:)` 宏本质上是一个“一次性”交互:用户一旦点击,链接所在的文本节点就会被替换,通常直接消失得无影无踪。很多新手的第一反应是“这算不算 Bug”?其实并非如此,这恰恰是它的设计初衷——`(link:)` 的语义就是“跳转或触发一次动作后退出当前上下文”,用完即撤,干净利落。

但问题也随之而来:许多实际场景需要的是“持久可点击的按钮式链接”。比如玩家反复检查某件物品,或者重复触发某段对话,再或者你在调试测试时希望某个交互始终可用。这时如果继续使用 `(link:)`,链接点一次就没了,体验会非常不流畅。该怎么办?别担心,Harlowe 其实早已内置了另一个宏——`(link-rerun:)`,它的语义正好与这类需求匹配:点击后链接保留,内容重新执行。

✅ 正确写法(链接常驻,可无限次点击):

Thing (link-rerun: "Look at")[(alert: ["It's a thing"], "Sure.")]

⚠️ 注意事项:

  • `(link-rerun:)` 不会刷新整个 passage,它只重新运行内部的糖语法,比如 `(alert:)`、`(set:)`、`(if:)` 等。因此它特别适合轻量级、无副作用的交互,不要指望它承担复杂任务。
  • 如果链接内部涉及状态变更,比如一个计数器,逻辑需要写清楚。举个例子:
(set: $clicks to it + 1)You've clicked this $(clicks) time(s). (link-rerun: "Click again")[...]
  • 注意,避免在 `(link-rerun:)` 中执行破坏性操作,例如 `(goto:)` 或清空变量。这个宏虽然方便,但不像看起来那么皮实,不当使用可能引发意外行为。
  • 千万不要把 `(link-goto:)`(跳转到另一 passage,原链接保留)和 `(link-rerun:)`(留在当前 passage,重执行内容)搞混。虽然名字相似,但用途截然不同。

总结一下:当你需要实现“点击后响应,响应后还能再点”的交互时,`(link-rerun:)` 就是 Harlowe 给出的标准解决方案。理解这几个链接宏的语义差异——`link` 是一次性触发,`link-rerun` 是可重入的持久链接,`link-goto` 是导航保留——这才是构建稳定、可维护的 Twine 故事的核心基础。

来源:https://www.php.cn/faq/2805652.html

游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。

同类文章
更多
JavaScript数组字面量与构造函数创建稀疏数组的差异

JavaScript数组字面量与构造函数创建稀疏数组的差异

数组字面量创建稠密数组,空位默认为undefined;Array()构造函数传入单个数字参数会生成稀疏数组,索引不存在且遍历方法跳过,多参数或非数字参数则行为与字面量一致。初始化稠密数组应使用Array from或fill。

时间:2026-07-25 22:10
如何优化Bootstrap按钮的焦点状态环CSS样式方法详解

如何优化Bootstrap按钮的焦点状态环CSS样式方法详解

Bootstrap按钮焦点样式优化需将内阴影改为外发光,覆盖所有焦点选择器避免原生蓝边闪烁。使用:focus-visible区分键盘与鼠标交互,同时处理按钮组圆角、父容器溢出及浏览器兼容性,确保焦点反馈清晰且符合无障碍标准。

时间:2026-07-25 22:09
Less中强制转换CSS单位适配不同移动端方案详解

Less中强制转换CSS单位适配不同移动端方案详解

Less单位转换需手动完成:用unit()剥离单位,通过变量控制基准值,再拼接目标单位。px2rem函数须区分输入类型(纯数字、带px单位等),基准值@base-font-size需全局定义且不可在媒体查询中重定义。所有运算发生在编译期,适配需提前编译多套CSS文件。

时间:2026-07-25 22:09
Vue 插件开发与使用完整指南

Vue 插件开发与使用完整指南

Vue插件通过install方法为应用注入全局属性、组件、指令、混入和provide等扩展能力,注册时机须在createApp之后、mount之前。插件支持对象或函数形式,使用app use()注册。开发时需注意命名冲突、配置默认值及错误处理,确保工程健壮性。

时间:2026-07-25 22:09
CSS响应式视频全屏黑边排版问题解决方案

CSS响应式视频全屏黑边排版问题解决方案

CSS响应式视频全屏黑边源于盒子模型、定位与加载策略缺失。需重置body边距及溢出,父容器用position:fixed与100dvh,video设为block+object-fit:cover。autoplay需加muted、playsinline。移动端用100dvh防地址栏抖动,低端机分辨率不超1倍。

时间:2026-07-25 22:09
热门专题
更多
刀塔传奇破解版无限钻石下载大全 刀塔传奇破解版无限钻石下载大全
洛克王国正式正版手游下载安装大全 洛克王国正式正版手游下载安装大全
思美人手游下载专区 思美人手游下载专区
好玩的阿拉德之怒游戏下载合集 好玩的阿拉德之怒游戏下载合集
不思议迷宫手游下载合集 不思议迷宫手游下载合集
百宝袋汉化组游戏最新合集 百宝袋汉化组游戏最新合集
jsk游戏合集30款游戏大全 jsk游戏合集30款游戏大全
宾果消消消原版下载大全 宾果消消消原版下载大全
  • 热门数据榜