aboutsummaryrefslogtreecommitdiffstats
path: root/examples/quick3d/xr_shared/ValueFader.qml
blob: e33cda16bf011af66e8de62caac811c6cdf9a9f7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
// Copyright (C) 2024 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
import QtQuick

Item {
    id: fader
    property real value: 1

    function blink(fadedOutLambda, fadedInLambda, duration) {
        blinkAnimation.stop()
        blinkAnimation.fadedOutLambda = fadedOutLambda
        blinkAnimation.fadedInLambda = fadedInLambda
        blinkAnimation.duration = duration
        blinkAnimation.start()
    }

    SequentialAnimation {
        id: blinkAnimation
        property var fadedOutLambda
        property var fadedInLambda
        property int duration
        NumberAnimation {
            target: fader; property: "value";
            easing.type: Easing.OutCubic
            duration: blinkAnimation.duration
            to: 0
        }
        ScriptAction {
            script: {
                if (blinkAnimation.fadedOutLambda &&
                        typeof blinkAnimation.fadedOutLambda === "function") {
                    let lambda = ()=>{} //to suppress the linter warning
                    lambda = blinkAnimation.fadedOutLambda
                    lambda();
                    blinkAnimation.fadedOutLambda = null;
                }
            }
        }
        NumberAnimation {
            target: fader; property: "value";
            to: 1
            duration: blinkAnimation.duration
            easing.type: Easing.InCubic

        }
        ScriptAction {
            script: {
                if (blinkAnimation.fadedInLambda &&
                        typeof blinkAnimation.fadedInLambda === "function") {
                    let lambda = ()=>{} //to suppress the linter warning
                    lambda = blinkAnimation.fadedInLambda
                    lambda();
                    blinkAnimation.fadedInLambda = null;
                }
            }
        }
        running: false
    }
}