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
我正在尝试创建一个具有某种布朗运动(即它以随机方式不断移动)的盒子,同时用户可以与之交互。
交互部分有效,并在下方缩短以调整下方高度。
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