blob: 9ad70d6ccf4fc2697e8041fca350492fa3e9523c (
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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
|
// Copyright (C) 2019 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
import QtQuick
Rectangle {
id: page
width: 640
height: 500
Image {
id: userIcon
x: topLeftRect.x
y: topLeftRect.y
source: "../../images/declarative-qtlogo.png"
}
Rectangle {
id: topLeftRect
anchors { left: parent.left; top: parent.top; leftMargin: 10; topMargin: 20 }
width: 46; height: 54
color: "Transparent"; border.color: "Gray"; radius: 6
// Clicking here sets state to default state, returning image to initial position
TapHandler { onTapped: page.state = 'start' }
}
Rectangle {
id: middleRightRect
anchors { right: parent.right; verticalCenter: parent.verticalCenter; rightMargin: 20 }
width: 46; height: 54
color: "Transparent"; border.color: "Gray"; radius: 6
// Clicking in here sets the state to 'middleRight'
TapHandler { onTapped: page.state = 'middleRight' }
}
Rectangle {
id: bottomLeftRect
anchors { left: parent.left; bottom: parent.bottom; leftMargin: 10; bottomMargin: 20 }
width: 46; height: 54
color: "Transparent"; border.color: "Gray"; radius: 6
// Clicking in here sets the state to 'bottomLeft'
TapHandler { onTapped: page.state = 'bottomLeft' }
}
states: [
State {
name: "start"
PropertyChanges {
target: userIcon
explicit: true
x: topLeftRect.x
y: topLeftRect.y
}
},
State {
name: "middleRight"
PropertyChanges {
target: userIcon
explicit: true
x: middleRightRect.x
y: middleRightRect.y
}
},
State {
name: "bottomLeft"
PropertyChanges {
target: userIcon
explicit: true
x: bottomLeftRect.x
y: bottomLeftRect.y
}
}
]
//! [list of transitions]
transitions: [
Transition {
from: "*"; to: "middleRight"
NumberAnimation {
properties: "x,y";
easing.type: Easing.InOutQuad;
duration: 2000;
}
},
Transition {
from: "*"; to: "bottomLeft";
NumberAnimation {
properties: "x,y";
easing.type: Easing.InOutQuad;
duration: 200;
}
},
//If any other rectangle is clicked, the icon will return
//to the start position at a slow speed and bounce.
Transition {
from: "*"; to: "*";
NumberAnimation {
easing.type: Easing.OutBounce;
properties: "x,y";
duration: 4000;
}
}
]
//! [list of transitions]
}
|