diff options
author | Yann Bodson <yann.bodson@nokia.com> | 2009-11-06 05:33:07 (GMT) |
---|---|---|
committer | Yann Bodson <yann.bodson@nokia.com> | 2009-11-06 05:33:07 (GMT) |
commit | 8d8315df292482d75148a435b9e2bcc4636c57a3 (patch) | |
tree | 6fe2b57a7d72218b02e5ec7451d98585db41205d /examples/declarative/tvtennis | |
parent | 6deb03553ca08857146b4cb4ecde396352fe36d7 (diff) | |
download | Qt-8d8315df292482d75148a435b9e2bcc4636c57a3.zip Qt-8d8315df292482d75148a435b9e2bcc4636c57a3.tar.gz Qt-8d8315df292482d75148a435b9e2bcc4636c57a3.tar.bz2 |
move examples/follow.qml to visuals/qmlspringfollow.qml
Diffstat (limited to 'examples/declarative/tvtennis')
-rw-r--r-- | examples/declarative/tvtennis/click.wav | bin | 0 -> 3056 bytes | |||
-rw-r--r-- | examples/declarative/tvtennis/paddle.wav | bin | 0 -> 5320 bytes | |||
-rw-r--r-- | examples/declarative/tvtennis/tvtennis.qml | 74 |
3 files changed, 74 insertions, 0 deletions
diff --git a/examples/declarative/tvtennis/click.wav b/examples/declarative/tvtennis/click.wav Binary files differnew file mode 100644 index 0000000..26c46f8 --- /dev/null +++ b/examples/declarative/tvtennis/click.wav diff --git a/examples/declarative/tvtennis/paddle.wav b/examples/declarative/tvtennis/paddle.wav Binary files differnew file mode 100644 index 0000000..604e0e5 --- /dev/null +++ b/examples/declarative/tvtennis/paddle.wav diff --git a/examples/declarative/tvtennis/tvtennis.qml b/examples/declarative/tvtennis/tvtennis.qml new file mode 100644 index 0000000..d39e913 --- /dev/null +++ b/examples/declarative/tvtennis/tvtennis.qml @@ -0,0 +1,74 @@ +import Qt 4.6 + +Rectangle { + id: page + width: 640; height: 480 + color: "Black" + + // Make a ball to bounce + Rectangle { + // Add a property for the target y coordinate + property var targetY : page.height - 10 + property var direction : "right" + + id: ball + color: "Lime" + x: 20; width: 20; height: 20; z: 1 + + // Move the ball to the right and back to the left repeatedly + x: SequentialAnimation { + running: true; repeat: true + NumberAnimation { to: page.width - 40; duration: 2000 } + ScriptAction { script: Qt.playSound('paddle.wav') } + PropertyAction { target: ball; property: "direction"; value: "left" } + NumberAnimation { to: 20; duration: 2000 } + ScriptAction { script: Qt.playSound('paddle.wav') } + PropertyAction { target: ball; property: "direction"; value: "right" } + } + + // Make y follow the target y coordinate, with a velocity of 200 + y: SpringFollow { source: ball.targetY; velocity: 200 } + + // Detect the ball hitting the top or bottom of the view and bounce it + onYChanged: { + if (y <= 0) { + Qt.playSound('click.wav'); + targetY = page.height - 20; + } else if (y >= page.height - 20) { + Qt.playSound('click.wav'); + targetY = 0; + } + } + } + + // Place bats to the left and right of the view, following the y + // coordinates of the ball. + Rectangle { + id: leftBat + color: "Lime" + x: 2; width: 20; height: 90 + y: SpringFollow { + source: ball.y - 45; velocity: 300 + enabled: ball.direction == 'left' + } + } + Rectangle { + id: rightBat + color: "Lime" + x: page.width - 22; width: 20; height: 90 + y: SpringFollow { + source: ball.y-45; velocity: 300 + enabled: ball.direction == 'right' + } + } + + // The rest, to make it look realistic, if neither ever scores... + Rectangle { color: "Lime"; x: page.width/2-80; y: 0; width: 40; height: 60 } + Rectangle { color: "Black"; x: page.width/2-70; y: 10; width: 20; height: 40 } + Rectangle { color: "Lime"; x: page.width/2+40; y: 0; width: 40; height: 60 } + Rectangle { color: "Black"; x: page.width/2+50; y: 10; width: 20; height: 40 } + Repeater { + model: page.height / 20 + Rectangle { color: "Lime"; x: page.width/2-5; y: index * 20; width: 10; height: 10 } + } +} |