summaryrefslogtreecommitdiffstats
path: root/examples/declarative/tvtennis
diff options
context:
space:
mode:
authorYann Bodson <yann.bodson@nokia.com>2009-11-06 05:33:07 (GMT)
committerYann Bodson <yann.bodson@nokia.com>2009-11-06 05:33:07 (GMT)
commit8d8315df292482d75148a435b9e2bcc4636c57a3 (patch)
tree6fe2b57a7d72218b02e5ec7451d98585db41205d /examples/declarative/tvtennis
parent6deb03553ca08857146b4cb4ecde396352fe36d7 (diff)
downloadQt-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.wavbin0 -> 3056 bytes
-rw-r--r--examples/declarative/tvtennis/paddle.wavbin0 -> 5320 bytes
-rw-r--r--examples/declarative/tvtennis/tvtennis.qml74
3 files changed, 74 insertions, 0 deletions
diff --git a/examples/declarative/tvtennis/click.wav b/examples/declarative/tvtennis/click.wav
new file mode 100644
index 0000000..26c46f8
--- /dev/null
+++ b/examples/declarative/tvtennis/click.wav
Binary files differ
diff --git a/examples/declarative/tvtennis/paddle.wav b/examples/declarative/tvtennis/paddle.wav
new file mode 100644
index 0000000..604e0e5
--- /dev/null
+++ b/examples/declarative/tvtennis/paddle.wav
Binary files differ
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 }
+ }
+}