如何在 Spark AR 脚本中监控脉冲值?

How do I monitor a pulse value in a Spark AR script?

作为 Spark AR Studio 项目的一部分,Patch 中使用了一个脚本。

这个脚本有两个输入(一个布尔值,一个触发器)和两个输出(两个触发器)。

监控 bool 输入按预期工作,但监控触发器输入突然开始抛出错误:

JavaScript error: TypeError: triggerIn.monitor is not a function. (In 'triggerIn.monitor()', 'triggerIn.monitor' is undefined)

以下是文件中的所有代码:

const Diagnostics = require('Diagnostics');
var Patches = require('Patches');
var Reactive = require('Reactive');

var input1 = Patches.getBooleanValue('input1');
var triggerIn = Patches.getPulseValue('triggerIn');
var onHead = true;

triggerIn.monitor().subscribe( function(e) {
    if (input1) {
        if (onHead) {
            Diagnostics.log('Play-Trigger');
            Patches.setPulseValue("play", Reactive.once());
        } else {
            Diagnostics.log('Reset-Trigger');
            Patches.setPulseValue("reset", Reactive.once());
        }
        onHead = !onHead;
    }
});

input1.monitor().subscribe( function(e) {
  if (e.newValue == true && !onHead) {
    Diagnostics.log('Reset-1');
    Patches.setPulseValue("reset", Reactive.once());
    onHead = true;
  }
});

triggerIn 连接到 Head Nod 节点的输出,而 input1 连接到 Exactly Equals 节点的输出。输出连接到 Animation 节点的 playreset 输入。

以前我在监控功能上有不同的胆量并且一切正常,但现在即使我删除所有代码并输入日志消息它仍然不起作用。

难道不能监听触发信号? Spark AR 是否有点像 Xcode 有时需要清理构建文件夹?如果是这样,Spark AR 的等价物是什么?或者,也许我以某种方式搞砸了语法并且对它视而不见?

我可以只使用 Patch 来制作效果,但脚本可以创造更好的用户体验。

在文档中翻来覆去(他们确实需要像苹果文档那样的交叉链接)我终于找到了答案…

对于使用 Patches.getPulseValue() 获得的值,您省略了 monitor() 直接转到 subscribe() 的调用。

triggerIn.subscribe( function(e) {
    …
});