Kanzi 3.8 发行说明¶
新增功能¶
Property Target Easing Interpolator
当您想要动态设置属性的目标值,并希望使用缓动函数将当前值随时间插值到目标值时,使用 Property Target Easing Interpolator。缓动函数使您能够创建逼真的动画,从而提供更愉悦的用户体验。
请参阅 使用缓动函数插值属性值。
用于绑定表达式的新功能
在绑定表达式中,您现在可以使用:
三角函数
关系运算符
逻辑运算符
访问器函数
向量函数
向量和四元数的乘法
Asset Packages
使用资产包,您可以创建一个包含内容的资产库,例如 UI 组件、材质、画刷、样式和纹理。使用资产包可以使这些内容在不同的 Kanzi Studio 项目中随时可用,或者在公司内部共享这些内容以用于所有的 Kanzi 应用程序。
请参阅 资产包。
Cubemap Render Pass
使用 Cubemap Render Pass 在 3D 节点的表面上创建环境的动态反射。
请参阅 创建立方体贴图反射。
功能改进¶
Kanzi 现在将字体文件作为字体系列资源处理,该资源可以包含任意数量的字体文件:
引入了
FontStyleDefinition类以包含在 Kanzi 内传递的一组字体样式属性值。将字体样式设置器和获取器函数从
TextFormat和TextLayouter类移动到FontStyleDefinition类。引入了
FontRuntime类以在运行时将FontStyleDefinition映射到字体文件 (FontFile)。FontRuntime是不可变的。当字体样式更改时,从FontManager请求一个新的FontRuntime对象。引入了
FontStyleConcept类,其中包括用于FontRuntime的辅助函数。TextFormat、TextLayouter和TextShaper现在使用FontRuntime而不是Font。您现在可以使用 Font Weight 和 Font Style 属性设置字体的外观,这些属性设置 Text Block 节点使用字体系列中的哪个字体文件来渲染文本。
Font 属性 (
Node::FontProperty) 被 Font Family 属性 (Node::FontFamilyProperty) 替换。
要了解如何将您的 Kanzi 应用程序迁移以使用更改后的 API,请参阅 字体更改。
改进了绑定表达式的功能:
添加了矩阵和变换函数 INVERSE 和 TRANSFORM。
添加了对矩阵的支持以及矩阵与 SRT 转换之间的转换。
您现在可以使用资源 ID 访问文本资源。
在资源加载方面的改进:
ResourceManager::LoadTask现在具有LoadAndFinish和FinishOnly加载任务类型。FinishOnly加载任务跳过加载器线程,Kanzi 将它们直接排队到主线程FinishingQueue。加载任务现在可以触发依赖项的后台加载。这改善了加载线程的使用,提高了加载时间,并使后台加载更加流畅。
新增了这些资源类型以使用加载任务和加载任务依赖关系。
Brush
Material
Mesh
Render Pass Prefab
State Manager
改进了在 kzb 文件中存储资源字典的方式。这使得具有大型未使用资源字典(例如本地化表)的 kzb 文件加载速度更快。
引入了针对
setProperty、addPropertyModifier、removePropertyModifier、copyLocalValue的速度优化。引入了 Kanzi Engine API,以便通知应用程序 UI 已挂起:
添加了重写函数
onSuspend,该函数从suspendOverride调用 Kanzi。添加了取消 UI 挂起的功能。
在 Kanzi Engine API 中引入了
PropertyTypeRegistry,它保留了应用程序中所有已注册属性类型的列表。请参阅kanzi::beginPropertyTypes和kanzi::endPropertyTypes。改进了
ResourceManager析构函数以打印引用资源的完整列表。添加了这些渲染目标格式:
ARGB 8位 (A8R8G8B8_UNORM)
Alpha 8位 (A8_UNORM)
灰度 8 位 (L8_UNORM)
灰度 alpha 8 位 (L8A8_UNORM)
Alpha Luminance 8-bit (A8_L8_UNORM)
改进了预设依赖项的收集。对于在预设中使用的 State Managers 和资源 ID,Prefab View 异步预设更改现在可以在后台加载资源依赖项。
将字体引擎后端转换为插件,使您能够同时为 Kanzi Studio Preview 安装 FreeType 和 iType 字体引擎。在支持动态库的平台上,这使您能够在应用程序启动时选择字体引擎。请参阅 FontEngine。
在 Kanzi Studio 中,触发器现在是项目项,这使您能够:
通过拖动重新排序触发器。
复制和粘贴触发器、动作和触发条件。
在项目的上下文中修改属性。
对 Performance HUD 的改进:
您现在可以配置 Performance HUD 的位置。请参阅 性能信息位置。
在 Performance HUD 中,您现在可以看到计时器订阅、重复任务和动画的数量。请参阅 PerformanceInfoLevel。
恢复了 Overdraw 可视化。
Overdraw 可视化表示 Kanzi 多次渲染到同一像素的区域。较浅的绿色表示较高的过度绘制量。
请参阅 排除应用程序性能问题。
对 Kanzi 处理硬件按键的方式进行了以下改进:
引入了
KeyManipulator类。KeyManipulator在用户按下和释放键时分派KeyPressedMessage、KeyReleasedMessage消息,并在取消时分派KeyCanceledMessage消息。Keyboard.KeyDown和Keyboard.KeyUp消息现已弃用。使用KeyManipulator消息,并为每个您想处理的键使用专用的键操控器。NavigationManipulator类现在处理导航键,例如 ↑ (向上箭头)、↓ (向下箭头)、→ (向右箭头)和 ← (向左箭头)、Home、End、Page Up、Page Down 键盘键。FocusNavigationManipulator类现在处理用于焦点链和方向焦点导航的键。使用此操控器在焦点范围节点上。要在焦点范围上设置操控器,请使用FocusScope。
要了解如何将您的 Kanzi 应用程序迁移以使用更改后的 API,请参阅 硬件键处理更改。
重构的
MessageType:将
kzuMessageType替换为AbstractMessageTypeDescriptor。MessageType现在自动附加其参数metaclass。这使得使用宏KZ_METACLASS_MESSAGE_TYPE将消息类型附加到拥有类变得可选。对于 kzb 注册消息,消息参数类固定为
MessageArguments。将以
AbstractMessageType作为参数的MessageArguments构造函数替换为Node::dispatchAbstractMessage。
引入了输入操控器节点组件,以维护附加到节点的操控器。您可以在 Node Components > Input Manipulators 中找到这些组件:Click Manipulator、Multi-Click Manipulator、Long-Press Manipulator、Pan Manipulator、Key Manipulator。请参阅 使用输入操纵器。
PanManipulator现在在这些消息中报告速度:PanManipulator::MovedMessagePanManipulator::EnteredMessagePanManipulator::LeftMessagePanManipulator::FinishedMessage
添加了功能和 Depth Compare Function 属性,用于在 Composition Target Render Pass 中设置深度渲染目标的深度比较模式。
改善了 Kanzi Studio 的可用性:
在 Kanzi Studio 中,Node Components 中的项目现在使用树控件。此改进为您提供了更多的灵活性,并减少了在 Node Components 窗口中工作时弹出窗口的数量。
您现在可以直接从 Kanzi Studio 在默认的 Windows 应用程序中打开文件。在 Library > Resource Files 中,右键单击一个文件,然后选择 Open With Default Windows App 或 Open With… 命令。
更新了 State Manager、State Tools 和 Styles 的 Kanzi Studio 图标。
更改¶
将 PVRTexTool 更新到了 4.20.0 版本。
引入了具有主要和次要修订的 kzb 格式版本控制。在 Kanzi 3.8 中,kzb 格式版本为 11.0。
将 Kanzi Engine 插件元数据属性的语法从
SortingIndex更改为metadata.sortingIndex。请参阅 SortingIndex。移除的遗留功能:
旧版 kzb 格式支持
kzs_threadkzc_file和kzc_input_streamkzc_output_streamkzs_mmap
在 Kanzi Studio 中,自定义 Message Types 现在与 Property Types 分开。在 Kanzi Studio 中,您可以在 Library > Message Types 中找到它们。
在 Kanzi Studio 中统一了绑定操作的名称和大小写。
平台包 qnx700_screen_aarch64 对于 Kanzi 3.8 不支持 ES2。
Kanzi Studio 现在更定期地向 Rightware 发送使用报告,这使我们能够不断改进 Kanzi Studio。
要了解如何迁移您的 Kanzi 应用程序以使用更改后的 API,请参阅 Kanzi 3.8 迁移指南。
文档 (Documentation)¶
在 使用 … 部分中添加了一个专门用于开发 Android Kanzi 应用程序的主题。请参阅 为 Android 开发 Kanzi 应用程序。
添加了有关如何在 Kanzi Studio 中创建后期处理效果的说明。请参阅 创建后期处理效果。
添加了有关如何制作自己的节点组件的说明。请参阅 创建自定义节点组件。
修复¶
ID |
描述 (Description) |
区域 |
|---|---|---|
102522 |
修复了蒙皮网格导入和骨骼矩阵计算的问题。 请参阅 蒙皮网格的更改内容。 |
Kanzi Engine |
10852, 10731, 10651 |
改进了对损坏的 PNG 和 JPEG 图像的处理。现在,Kanzi 在尝试加载损坏的 PNG 或 JPEG 图像时会抛出异常。 |
Kanzi Engine |
10678 |
修复了渲染某些无法打印的字符的问题。在此修复之前:
|
|
10688 |
修复了一个问题,该问题导致在资源加载器线程处于活动状态时,加载具有自定义过渡动画或某些触发器和操作的 State Manager 时出现断言。 |
Kanzi Engine |
10624 |
修复了对已损坏或不完整的 UTF-8 字符串输入的处理方式。 |
Kanzi Engine |
10539 |
使用 iType 字体引擎时,Kanzi 现在将字距调整委托给 WTShaper。WTShaper 从字体的 GPOS 表中读取字距调整数据,对于未在 GPOS 表中定义字距调整的字体,使用 kern 表作为后备。 |
Kanzi Engine |
10487 |
当使用从 State Manager 中的属性值读取的 SetPropertyAction 修补节点时,Preview 不再终止。 |
Kanzi Engine |
10320 |
修复了无法显示所有启动性能剖析程序的问题。 |
Kanzi Engine |
10193 |
当您不使用动画在状态之间进行过渡时,状态管理器现在会发送 Transition Started 和 Transition Finished 消息。请参阅 在状态间进行动画迁移。 |
Kanzi Engine |
10178 |
修复了导致缩放节点的内容显示在另一个节点中的问题。 |
Kanzi Engine |
10172 |
修复了静态寿命的 MessageArguments 实例导致内存泄露的问题。 |
Kanzi Engine |
10125 |
当 State Manager 在状态转换期间分派 Left State 和 Entered State 消息时,它现在在这些消息上设置 StateGroup 参数。 |
Kanzi Engine |
10107 |
修复了将不可见 Model3D 替换为 nullptr 后,无法释放其纹理资源的问题。 |
Kanzi Engine |
9955 |
修复了 FromToAnimation,以便在所有情况下的持续时间内返回 To 值,尤其是在持续时间为零的时间点。 |
Kanzi Engine |
10647 |
修复了导致 Preview 错误显示 State Tools 处于 Edit 模式的问题。 |
Kanzi Studio |