咖啡机
说明如何使用时间线和状态动画化UI中的转换。
咖啡机允许用户选择要冲泡的咖啡类型。他们可以使用滑块确定咖啡、热牛奶和奶泡的比例。冲泡过程的进度以动画的形式显示。当咖啡准备好时,启动屏幕再次出现。
“ApplicationFlowForm.ui.qml”文件包含UI中的所有屏幕。我们使用状态显示视图中适当的屏幕,并使用时间线动画化屏幕之间和在屏幕上的转换。
应用程序流
在启动屏幕AnimationFlowForm.ui.qml上,用户可以从几种咖啡类型中选择填充空杯子。选择触发CoffeeButton.qml中的animation1
和animation2
。
PropertyAnimation { target: glow id: animation1 duration: root.duration loops: 1 from: 1.05 to: 1.2 property: "scale" } ParallelAnimation { id: animation2 SequentialAnimation { PropertyAnimation { target: glow duration: root.duration loops: 1 from: 0.2 to: 1.0 property: "opacity" } ...
选择咖啡类型会触发SideBar.qml中的相应信号处理器,该处理器设置所选咖啡类型的默认混合物。以下代码片段显示《cappuccinoButton.onClicked()`》信号处理器。
cappuccinoButton.onClicked: { sideBar.currentCoffee = qsTr("Cappuccino") sideBar.currentFoam = 1 sideBar.currentMilk = 7 sideBar.currentCoffeeAmount = 3.5 sideBar.coffeeSelected() }
sideBar.coffeeSelected()
信号将ApplicationFlow.qml中的《applicationFlow.state》设置为《"selection"》。我们稍后将指定这些状态。
choosingCoffee.sideBar.onCoffeeSelected: { applicationFlow.state = "selection" }
单击“煮一杯”会触发《choosingCoffee.brewButtonSelection.onClicked》信号处理器,该处理器将应用程序流状态更改为《"to settings"》。
choosingCoffee.brewButtonSelection.onClicked: { applicationFlow.state = "to settings" applicationFlow.choosingCoffee.milkSlider.value = applicationFlow.choosingCoffee.sideBar.currentMilk applicationFlow.choosingCoffee.sugarSlider.value = 2 }
用户可以使用牛奶和糖的数量滑块来更改默认值。
单击“煮”会触发《choosingCoffee.brewButton.onClicked()`》信号处理器,该处理器将应用程序流状态设置为《"to empty cup"》。
choosingCoffee.brewButton.onClicked: { applicationFlow.state = "to empty cup" }
单击“继续”会触发《emptyCup.continueButton.onClicked》信号处理器,该处理器将应用程序流状态设置为《"to brewing"》。
emptyCup.continueButton.onClicked: { applicationFlow.state = "to brewing" brewing.coffeeName = choosingCoffee.sideBar.currentCoffee brewing.foamAmount = choosingCoffee.sideBar.currentFoam brewing.milkAmount = applicationFlow.choosingCoffee.milkSlider.value brewing.coffeeAmount = choosingCoffee.sideBar.currentCoffeeAmount brewing.start() }
当咖啡准备好时,将触发 brewing.onFinished
信号处理程序。它将应用程序流程状态设置为 "reset"
,以便应用程序返回到启动屏幕。
使用时间线动画过渡
咖啡机应用程序的屏幕,用于选择咖啡、空杯和煮制每样东西,都使用在单独的 UI 文件 (ui.qml) 中指定的自定义组件。
我们在 ApplicationFlowForm.ui.qml 中使用 时间线 视图来动画化应用程序流程过程中的屏幕之间的转换。
我们的视口包含 200 帧,所以我们选择 "加号按钮" 来向根组件添加一个 1200 帧的时间线。我们为所有其他字段使用默认值。
要开始记录从启动屏幕到咖啡选择屏幕的过渡时间线,我们在 导航器 中选择 choosingCoffee。我们确认播放头位于第 0 帧,然后选择 (自动键 (K)) 按钮(或按 k)。
在第 0 帧,我们在 属性 > 几何形状 - 2D > 位置 中将 X 坐标设置为 0。然后,我们将播放头移动到 400 帧,并将 X 坐标设置为负值。
当我们取消选择记录按钮停止录制时间线时,新时间线将出现在视图中。
有关使用时间线的更多信息,请参阅 创建时间线动画。
使用状态在屏幕间移动
我们使用 状态 视图来确定视口的内容。当从一个状态移动到另一个状态时运行动画。
我们在 ApplicationFlowForm.ui.qml 中从视口移动到视口并选择 创建新状态 来创建状态。
我们还为在切换到 "settings"
和 "selection"
状态时要运行的动画创建状态。
然后我们返回到 时间线 视图,选择 "时间线设置按钮" 打开 时间线设置 对话框。我们选择 添加 按钮为时间线的一部分创建动画。因此,每个动画的开始和结束帧很重要,而它们的持续时间则不是。
我们将 "selection"
状态的起始帧设置为 400,结束帧设置为 200,因为我们正在回到时间线来显示选择侧边栏。
在 转换到状态 字段中,我们选择动画结束后要切换到的状态。在对话框的下半部分,我们将没有动画的状态绑定到固定帧。
文件
在某些 Qt 许可证下可用。
了解更多。