Qt快速移动框随机移动

时间:2015-05-10 11:21:14

标签: qt qtquick2

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

交互部分可以工作,并在下面缩短以调整下面的高度。

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;
        }
    }
}

感谢您的建议!

1 个答案:

答案 0 :(得分:2)

在您呼叫它时,

randomNumber()不可用。要么将其向上移动以便在使用之前声明,要么将id提供给内部Rectangle以明确调用它。

缓和错误是因为您尝试将缓动曲线样式分配给完整的QEasingCurve - 这样做不起作用。因此,具体设置曲线样式:

easing.type: Easing.OutInQuint