Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt 平滑运动过渡_Qt_Qml_Qt Quick_Qtquick2 - Fatal编程技术网

Qt 平滑运动过渡

Qt 平滑运动过渡,qt,qml,qt-quick,qtquick2,Qt,Qml,Qt Quick,Qtquick2,假设有一辆车辆以恒定速度向目标移动。在某一点上,它看到一个目标,应该减速以完全停止。Qt Quick中的动画如何实现这一点,记住它停止的时刻是未知的,并且将由某些AI系统发出 当运行下面的应用程序时(虽然简化了,但试图解决此问题),由于已知停止状态的条件,从移动状态到停止状态的转换并不平滑。如何通过以项目在移动状态下以相同的速度启动来轻松进入停止过渡 这可以通过使用单一国家(IMO as、 ApplicationWindow { id: window vis

假设有一辆车辆以恒定速度向目标移动。在某一点上,它看到一个目标,应该减速以完全停止。Qt Quick中的动画如何实现这一点,记住它停止的时刻是未知的,并且将由某些AI系统发出

当运行下面的应用程序时(虽然简化了,但试图解决此问题),由于已知停止状态的条件,从移动状态到停止状态的转换并不平滑。如何通过以项目在移动状态下以相同的速度启动来轻松进入停止过渡


这可以通过使用单一国家(IMO as、

   ApplicationWindow {
        id: window
        visible: true
        color: "black"
        width: 150
        height: 600

        Timer {
            running: true
            interval: 1000
            repeat: false
            onTriggered: {
                unit.state = "moving";
            }
        }

        Rectangle {
            id: unit
            width: 150
            height: 150
            radius: width
            color: "white"
            state: "stopped"

            states: [
                State {
                    name: "moving"
                    PropertyChanges { target: unit; y: window.height - unit.height }
                }
            ]

            transitions: [
                Transition {
                    to: "moving"

                    NumberAnimation {
                        property: "y"
                        duration: 2000
                        easing.type: Easing.OutQuad
                    }
                }
            ]
        }
    }

对原始代码进行了一点修改。您可以尝试更改持续时间和/或放松类型,以获得更流畅的体验。

您的目标是什么?是要使圆从上到下平稳移动吗?是的。如果运行该应用程序,您会注意到,当进入停止状态时,速度会发生瞬间变化。我希望“停止”状态以项目在移动状态下以相同的速度移动圆圈,然后使其停止。我已将问题更新为更具体。谢谢,这非常有效。然而,我的问题还不够清楚。请查看更新版本。@troyane,它解决了一个问题,但不是我感兴趣的问题。@Mitch,请更准确地说明您的问题
   ApplicationWindow {
        id: window
        visible: true
        color: "black"
        width: 150
        height: 600

        Timer {
            running: true
            interval: 1000
            repeat: false
            onTriggered: {
                unit.state = "moving";
            }
        }

        Rectangle {
            id: unit
            width: 150
            height: 150
            radius: width
            color: "white"
            state: "stopped"

            states: [
                State {
                    name: "moving"
                    PropertyChanges { target: unit; y: window.height - unit.height }
                }
            ]

            transitions: [
                Transition {
                    to: "moving"

                    NumberAnimation {
                        property: "y"
                        duration: 2000
                        easing.type: Easing.OutQuad
                    }
                }
            ]
        }
    }