Spark AR 为什么 if-else if 构造不起作用?

Spark AR Why if-else if construction doesn't work?

我不明白为什么 if-else 构造不起作用。

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


var num = 5;
var firstCondition= false;
var secondCondition = false;

function func(){
    firstCondition = Reactive.ge(num, 10);
    secondCondition = Reactive.lt(num, 10);
    if(firstCondition){             //false
      num = 0;
    } else if(secondCondition){     //true
      num = 1;
    }
}
func();

Diagnostics.watch("num - ", num);
Diagnostics.watch("firstCondition ", firstCondition);
Diagnostics.watch("secondCondition ", secondCondition);

num 显示 0:( 我做错了什么?它是否特定于反应式编程?

您的示例中存在两个问题:

  • 信号可能会令人困惑,而 return 只是因为变量存在,所以您需要检查:if (firstCondition.pinLastValue()) 以获取布尔信号的值。
  • 其次,我猜你的功能没有更新,你需要这样的东西:

    const Time = require('Time'); const interval = Time.setInterval(func(), 500);
    

Spark AR Studio 使用反应式编程,这是一种使用异步数据流的声明式编程模型。本指南将介绍反应式编程在 Spark AR Studio 中的优势和用途。

https://sparkar.facebook.com/ar-studio/learn/documentation/scripting/reactive/

你需要在这里使用不同的思维方式:

const conditionedSignal = inputSignal.ge(10).ifThenElse(0, 1);

这是一个标量信号 class,不是 JS 数字!