After Effects SDK(C++)参数实际值变更后如何同步更新至UI显示
解决方法
你在paramChanged回调中直接修改params数组内的参数值只会修改当前上下文的临时数值,不会主动触发After Effects宿主的UI同步刷新,需要调用AE SDK提供的专用接口触发UI更新。
具体操作步骤
- 在修改完
AUDIOSLIDER2的数值后,调用PF_UpdateParamUI函数通知AE刷新对应参数的UI显示 - 可以自行添加错误处理逻辑捕获接口调用异常
修改后的完整代码如下:
static PF_Err paramChanged( PF_InData* in_data, PF_OutData* out_data, PF_ParamDef* params[], PF_SmartRenderExtra* extra) { PF_Err err = PF_Err_NONE; int test = 100; if (params[SKELETON_AUDIOSLIDER1]->u.fs_d.value > 5.0f) { // 设置滑块2的实际数值 params[SKELETON_AUDIOSLIDER2]->u.fs_d.value = 45.2f; // 新增:通知AE同步刷新滑块2的UI显示 err = PF_UpdateParamUI(in_data, SKELETON_AUDIOSLIDER2, params[SKELETON_AUDIOSLIDER2]); if (err != PF_Err_NONE) { // 可自行添加错误处理逻辑 return err; } } return err; }
异常排查
如果调用后UI仍未更新,可检查两个配置项:
- 确认参数索引
SKELETON_AUDIOSLIDER2和你注册参数时填写的索引完全一致 - 确认
AUDIOSLIDER2注册时没有添加PF_ParamFlag_READ_ONLY等禁止运行时修改的标志位 - 该方案仅对当前时间点无关键帧的参数生效,如果你的参数启用了关键帧,需要调用参数关键帧操作接口修改对应时间点的关键帧数值,再触发UI刷新
内容的提问来源于stack exchange,提问作者Cal Pong
相关产品推荐
相关产品推荐

