Qt Quick move 方块随机移动

Qt Quick move box with random movements

我正在尝试创建一个具有某种布朗运动(即它以随机方式不断移动)的盒子,同时用户可以与之交互。

交互部分有效,并在下方缩短以调整下方高度。

browian 部分不起作用 - 我在运行时收到两个警告:

[W] unknown:29 - file:.../EvasiveButton.qml:29:76: Unable to assign int to QEasingCurve
[W] unknown:29 - file:.../EvasiveButton.qml:29: ReferenceError: randomNumber is not defined
[W] unknown:24 - file:.../EvasiveButton.qml:24:54: Unable to assign int to QEasingCurve

看来我至少遇到了无法识别我的函数 randomNumber 的问题。但是把它移到别处似乎没有帮助。

其次,QEasingCurve 的整数警告从何而来?

代码:

import QtQuick 2.0
import QtQuick.Window 2.0

Rectangle {

    width: Screen.width
    height: Screen.height
    color: "black"
    focus: true

    Rectangle {
        x: 60
        y: 60
        width: 100
        height: 100
        color: "red"

        MouseArea {
            anchors.fill: parent
            onClicked: parent.height += 50
        }
        Behavior on height {
            NumberAnimation { duration: 200; easing: Easing.OutInQuint}
        }
        SequentialAnimation on x {
            id: brownianMotionX
            loops: Animation.Infinite
            NumberAnimation {to: 40+randomNumber(); duration: 200; easing: Easing.OutInQuint}

        }
        function randomNumber() {
            return Math.random() * 10 - 5;
        }
    }
}

感谢您的建议!

randomNumber() 在您调用的地方不可用。要么将它向上移动以便在使用之前声明它,要么给你的内部 Rectangle 一个 id 以显式调用它。

缓动错误是因为您试图将缓动曲线 style 分配给完整的 QEasingCurve - 这是行不通的。所以具体设置曲线样式:

easing.type: Easing.OutInQuint