import QtQuick 1.0
Rectangle
{
width: 100; height: 100
color: "red"
MouseArea
{
anchors.fill: parent
onPressed:
{
NumberAnimation
{
target: parent.x
to: 50;
duration: 1000
}
}
}
}
我希望这段代码能够在按钮按下事件中移动矩形的x
位置,但这没有任何作用。
我哪里错了?
答案 0 :(得分:5)
您正在信号处理程序中定义NumberAnimation,它无法正常工作。此外,NumberAnimation目标应该是一个项目,在这里您要定位项目的属性。以下是您的代码更正:
import QtQuick 1.0
Rectangle
{
id: rect
width: 100; height: 100
color: "red"
MouseArea
{
anchors.fill: parent
onPressed:
{
animation.start()
}
NumberAnimation
{
id: animation
target: rect
property: "x"
to: 50;
duration: 1000
}
}
}
如果您的矩形动画在鼠标释放时应该还原,您可以利用正确的状态定义,并为动画属性设置" x"在每个州的变化(默认和"按下"状态之间。这是一个自包含的例子:
import QtQuick 1.0
Rectangle {
id: root
width: 360
height: 200
Rectangle
{
id: rect
width: 100; height: 100
color: "red"
MouseArea
{
id: mouse
anchors.fill: parent
}
states: [
State {
name: "pressed"
when: mouse.pressed
PropertyChanges {
target: rect
x: 50
}
}
]
Behavior on x {
NumberAnimation { duration: 1000 }
}
}
}
如果您需要更复杂的动画,请定义正确的Transition
。这里的简单Behavior
更具可读性。
答案 1 :(得分:1)
试试这段代码:
import QtQuick 1.0
Rectangle
{
width: 100; height: 100
color: "red"
MouseArea {
anchors.fill: parent
onPressed: {
animation.start();
}
}
NumberAnimation on x {
id: animation
running: false
to: 50
duration: 1000
}
}
来自docs:
NumberAnimation是一个专门的PropertyAnimation,用于定义在数值变化时应用的动画。
因此,您不希望在点击上制作动画,但是您想要将动画分配给矩形的x属性并在点击时启动它。