Skip to content

表达式函数

什么是表达式函数 ?

表达式函数是预先创建好的函数,可以在项目中的多个地方调用。执行表达式函数时,您可以通过传递参数来获取函数执行结果,从而避免重复编写逻辑代码。

表达式函数位于2D编辑器的“项目”>“函数”下。

alt text

创建表达式函数

在“函数”的“表达式函数”节点上单击鼠标右键,选择“新增”,可以创建表达式函数。

alt text

alt text

注意:表达式函数在使用过程中,是通过 名称引用 的,因此重命名时需对所有引用该函数的地方进行更新。

属性

名称 描述
描述 表达式函数的描述。
脚本 说明:
1. 表达式函数有且仅有一个export function,export function的名称即表达式函数的名称。
2. 对于表达式函数,函数间的名称必须唯一。
3. 如有需要也可以定义非export函数,但是其无法被外部脚本调用。
4. 列表中显示的名称为 export 函数的名称。
5. 表达式函数仅支持tag和property这两个系统函数,不支持 System命名空间下的所有函数。
6. 表达式函数和页面函数相互独立,不可以 相互调用。

在哪里使用表达式函数?

在任意支持 表达式 的属性绑定界面,都可以通过ExpressionFunction的命名空间获取创建好的表达式函数。

alt text

场景举例:判定储罐的报警等级

  1. 创建名为getTankAlarmLevel的表达式函数,脚本如下:

    // @param {number} level - 当前液位
    // @param {number} maxLevel - 最大液位
    // @returns {number} 报警等级:0-正常, 1-预警, 2-报警
    export function getTankAlarmLevel(level: number, maxLevel: number) {
        if (level >= maxLevel * 0.9 || level <= maxLevel * 0.1) {
            return 2; // 报警
        } else if (level >= maxLevel * 0.8 || level <= maxLevel * 0.2) {
            return 1; // 预警
        }
        return 0; // 正常
    }
    
  2. 在画面上添加一个矩形控件,点击背景色的绑定按钮,绑定表达式属性。脚本如下:

    const currentLevel = tag('@Default:currentLevel');
    const alarmLevel = ExpressionFunction.getTankAlarmLevel(currentLevel, 10);
    if(alarmLevel === 2){
    return "#FF0000";// 红色-报警
    }
    if(alarmLevel === 1){
    return "#FFFF00";// 黄色-预警
    }
    return "#00FF00";// 绿色-正常