背景:kanzi 的Prefab View2D在加载多资源控件时候,为了保持画面流畅,会选择异步加载。
官方说法
当您异步加载预设件资源时,Kanzi 使用单独线程来加载资源。当 Kanzi 完成资源的加载时,它会使用主要线程部署这些资源。通过这种方式,您的应用程序会在加载资源时保持自适应。
问题
在实际项目中,控件节点都会要求有入场动画,在结合异步加载后,往往看不到入场动画效果,这是因为异步加载条件和动画状态机条件一样,导致异步加载后,状态机状态没有发生跳变,无法完成动画过渡。
解决方案
借用本地属性Complete,完成状态机状态切换
kanzi demo
- 点击按钮
AysncLoad
,设置NewPropertyTypeAsync=1
- 点击按钮
AysncUnLoad
,设置NewPropertyTypeAsync=0
- 如果
NewPropertyTypeAsync=1
且NewPropertyTypeLoadComplete=0
,就进行异步加载,这里延迟1s是为了演示。
异步加载完成设置NewPropertyTypeLoadComplete=1
预设件内部状态机控制值绑定
a={#RootPage/PluginDataSourceGlobal.NewPropertyTypeAsync}
b= {#Prefab View 2D_2/PluginDataSourceGlobal.NewPropertyTypeLoadComplete}
a * b