Flutter中如何访问Rive嵌套画板‘mouth’的输入?
解决Rive嵌套画板输入项访问问题
嵌套画板的状态机独立于主画板,无法通过主画板的StateMachineController直接获取其输入项,需单独获取嵌套画板的控制器来访问:
- 从主画板中定位目标嵌套画板
mouth - 为嵌套画板创建对应的
StateMachineController - 从嵌套画板的控制器中获取输入项
sad
修改后的代码示例:
RiveAnimation.asset( RiveAsset.RG, artboard: 'Artboard', fit: BoxFit.contain, onInit: onRiveInit, ); SMIInput<bool>? hearInput; SMIInput<bool>? sadInput; void onRiveInit(Artboard artboard) { // 处理主画板的状态机 final mainController = StateMachineController.fromArtboard( artboard, 'main', ); if (mainController != null) { artboard.addController(mainController); hearInput = mainController.findInput<bool>('hear'); } // 处理嵌套画板"mouth"的状态机 final mouthArtboard = artboard.findChildArtboard('mouth'); if (mouthArtboard != null) { // 替换为嵌套画板实际的状态机名称,例如'mouth_state_machine' final mouthController = StateMachineController.fromArtboard( mouthArtboard, 'mouth_state_machine', ); if (mouthController != null) { mouthArtboard.addController(mouthController); sadInput = mouthController.findInput<bool>('sad'); } } }
注意事项:
- 需将代码中的
'mouth_state_machine'替换为你在Rive编辑器中给嵌套画板设置的实际状态机名称 - 确保嵌套画板的状态机、输入项名称与代码中完全一致(区分大小写)
内容的提问来源于stack exchange,提问作者mzahin01
相关产品推荐
相关产品推荐

