2

作成時に要素がアニメーション化されるリピーターがあります。

Repeater {
    model : 0

    Image {
       ...

       Animation {
           ...
       }
    }
}

前の要素のアニメーションが終了した後に要素をモデルに追加すると、すべてが機能します。しかし、前に要素を追加するとうまくいきません。たとえば、弾丸を発射する銃を持っていた場合、弾丸のアニメーションが終了するまで待っていれば、すべてが機能します。しかし、最初の弾丸が終わる前に別の弾丸を撃ちたい場合、最初の弾丸が消えて、2 番目のアニメーションだけが表示されます。

すべてのアニメーションを表示するにはどうすればよいですか?

4

1 に答える 1

7

モデルやデリゲート、またはレイアウト (項目が重複している...) に問題がある可能性があります。これは問題なく動作します:

import QtQuick 2.0;

Rectangle {
    width: 400;
    height: 300;

    Timer {
        running: true;
        repeat: true;
        interval: 1000;
        onTriggered: { modelTest.append ({ "bg" : Qt.hsla (Math.random (), 0.85, 0.45, 1.0).toString () }); }
    }
    Flow {
        anchors.fill: parent;

        Repeater {
            model: ListModel {
                id: modelTest;
            }
            delegate: Rectangle {
                id: rect;
                color: model.bg;
                width: 50;
                height: width;
                scale: 0.0;

                PropertyAnimation {
                    target: rect;
                    property: "scale";
                    from: 0.0;
                    to: 1.0;
                    duration: 450;
                    running: true;
                    loops: 1;
                }
            }
        }
    }
}

ListModel と QAbstractListModel のみが、デリゲート全体をリセットせずに動的に新しいアイテムを追加できることに注意してください。その他 (バリアント リスト、JS 配列、数値) では、モデルの変更ごとにすべてのデリゲートが再インスタンス化されます...

于 2013-08-08T09:39:42.860 に答える