对象获胜'如果qml中的其他地方定义了数字动画属性,则t设置动画

object won't animate if number animation properties are defined elsewhere in qml

本文关键字:动画 数字 定义 属性 设置 方定义 获胜 如果 qml 其他 对象      更新时间:2023-09-26

我不知道我试图做的事情是否可行,尽管在我看来应该是……我试图使用顺序或并行动画制作对象的动画。如果数字动画属性在其本身内正常设置(如文档所示),这很好,但我不想将数字动画对象硬编码为单个设置/对象,我更希望顺序动画是顶级的,从而从其他地方访问数字动画对象(在顺序动画内)。。。有趣的是,当我进行了所需的设置时,数字动画对象的控制台输出显示一切都已设置,但仍然没有动画。到目前为止,我得到的是:

   Component.onCompleted: {
    anim.accessToNum.target = rect
    anim.accessToNum.property = "x"
    anim.accessToNum.to = 100
    anim.accessToNum.duration = 1000
}
Rectangle {
    id: rect
    width: 50; height: 50
    color: "red"
}
SequentialAnimation {
    id: anim
    running: true
    property var accessToNum: num
    NumberAnimation { id: num}
}

谢谢。

您有

    running: true

在动画上设置,因此它立即开始动画,而不使用targetproperty等。

改为:

import QtQuick 2.0
import QtQuick.Window 2.0
Window {
    width: 600
    height: 400
    visible: true
    Component.onCompleted: {
        anim.accessToNum.target = rect
        anim.accessToNum.property = "x"
        anim.accessToNum.to = 100
        anim.accessToNum.duration = 1000
        anim.start() // or: anim.running = true
    }
    Rectangle {
        id: rect
        width: 50
        height: 50
        color: "red"
    }
    SequentialAnimation {
        id: anim
        property var accessToNum: num
        NumberAnimation {
            id: num
        }
    }
}

不相关提示:尽可能使用alias而不是var;稍微便宜一点:

property alias accessToNum: num