You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter开发中Rive动画工具SMITrigger等类的作用咨询

Rive状态机输入类型详解

核心关系

SMIInput 是所有状态机输入类型的抽象基类,所有具体的输入类型(SMITrigger、SMIBool、SMINumber)都继承自它。controller.findInput() 方法返回的是基类实例,所以需要根据状态机里定义的输入类型,向下转型为对应的子类才能使用其专属功能。

各类型具体作用

  • SMITrigger:你代码里用到的触发型输入,对应状态机编辑器里的「触发式过渡条件」。调用 fire() 方法会发送一个一次性的触发信号,立刻触发对应的状态过渡,不需要维持任何持续状态。

  • SMIBool:布尔型输入,用于控制依赖持续布尔状态的过渡逻辑。你可以通过修改它的 value 属性(设为 true 或 false),让状态机根据当前布尔值判断是否满足过渡条件。比如实现开关类动画时,用它来控制状态在「开启」和「关闭」间切换。

    示例代码:

    final isActive = controller.findInput('IsActive') as SMIBool;
    isActive.value = true; // 激活布尔条件对应的状态过渡
    
  • SMINumber:数值型输入,用于向状态机传递数值,驱动基于数值的动画逻辑或状态过渡。比如设置0-100的数值来控制动画进度,或者让状态机根据数值范围触发不同的状态切换(比如数值≥50时进入「完成」状态)。

    示例代码:

    final progress = controller.findInput('Progress') as SMINumber;
    progress.value = 60.0; // 传递数值给状态机
    

内容的提问来源于stack exchange,提问作者Laurent

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 00:43:16