Как мне контролировать значение импульса в скрипте Spark AR? - PullRequest
1 голос
/ 16 мая 2019

В рамках проекта Spark AR Studio есть скрипт, который используется в патче.

Этот скрипт имеет два входа (один bool, один триггер) и два выхода (оба триггера).

Мониторинг входа 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.Выходы подключаются к входам play и reset узла Animation.

Раньше у меня были разные функции в мониторе, и все работало, но теперь, даже если я убрал весь код ивведите в журнал сообщение, что оно все еще не работает.

Разве невозможно контролировать сигналы запуска?Является ли Spark AR чем-то похожим на Xcode, в котором иногда требуется очистить папку сборки?Если это так, что является эквивалентом Spark AR?Или, может быть, я как-то облажался с синтаксисом и слеп к нему?

Я могу заставить эффект работать только с помощью Patch, но сценарии создают лучший пользовательский опыт.

1 Ответ

1 голос
/ 16 мая 2019

После отскоков в документах (им действительно нужны перекрестные ссылки, такие как документы Apple), я наконец нашел ответ…

Для значений, полученных с Patches.getPulseValue(), вы пропускаете вызов monitor(), переходящий прямо к subscribe().

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