summaryrefslogtreecommitdiffstats
path: root/demos/declarative
diff options
context:
space:
mode:
authormae <qt-info@nokia.com>2010-09-09 12:57:54 (GMT)
committermae <qt-info@nokia.com>2010-09-09 12:59:00 (GMT)
commita51c4ec60618ba575cb20e94bb019306074f432e (patch)
treea2b645e9b1ea2efca37ccc2b406ffbd7d5276018 /demos/declarative
parent48b5fa29f5da3c241bc64520bd56ccd5713c4586 (diff)
downloadQt-a51c4ec60618ba575cb20e94bb019306074f432e.zip
Qt-a51c4ec60618ba575cb20e94bb019306074f432e.tar.gz
Qt-a51c4ec60618ba575cb20e94bb019306074f432e.tar.bz2
State handling cleanup
The game could end up in funky states when restarting while the startup animation was running. Also some smaller fixes for rotation.
Diffstat (limited to 'demos/declarative')
-rw-r--r--demos/declarative/snake/content/Link.qml7
-rw-r--r--demos/declarative/snake/content/snake.js16
-rw-r--r--demos/declarative/snake/snake.qml48
3 files changed, 50 insertions, 21 deletions
diff --git a/demos/declarative/snake/content/Link.qml b/demos/declarative/snake/content/Link.qml
index 9aa6006..d5c5773 100644
--- a/demos/declarative/snake/content/Link.qml
+++ b/demos/declarative/snake/content/Link.qml
@@ -77,7 +77,12 @@ Item { id:link
id: actualImageRotation
origin.x: width/2; origin.y: height/2;
angle: rotation * 90
- Behavior on angle { NumberAnimation { duration: spawned ? 200 : 0} }
+ Behavior on angle {
+ RotationAnimation{
+ direction: RotationAnimation.Shortest
+ duration: spawned ? 200 : 0
+ }
+ }
}
}
diff --git a/demos/declarative/snake/content/snake.js b/demos/declarative/snake/content/snake.js
index fab7834..2a99aa8 100644
--- a/demos/declarative/snake/content/snake.js
+++ b/demos/declarative/snake/content/snake.js
@@ -22,20 +22,26 @@ function rand(n)
function scheduleDirection(dir)
{
- direction = dir;
- if(scheduledDirections[scheduledDirections.length-1]!=direction)
- scheduledDirections.push(direction);
+ if (state == "starting") {
+ direction = dir;
+ headDirection = direction;
+ head.rotation = headDirection;
+ } else if (state == "running"){
+ direction = dir;
+ if(scheduledDirections[scheduledDirections.length-1]!=direction)
+ scheduledDirections.push(direction);
+ }
}
function startNewGame()
{
- if (state == "starting")
+ if (state == "starting") {
return;
+ }
if (heartbeat.running) {
endGame();
startNewGameTimer.running = true;
- state = "starting";
return;
}
diff --git a/demos/declarative/snake/snake.qml b/demos/declarative/snake/snake.qml
index 12ad71c..df6e3ab 100644
--- a/demos/declarative/snake/snake.qml
+++ b/demos/declarative/snake/snake.qml
@@ -86,7 +86,7 @@ Rectangle {
onTriggered: { Logic.moveSkull() }
}
Timer {
- id: startNewGameTimer;
+ id: startNewGameTimer;
interval: 700;
onTriggered: { Logic.startNewGame(); }
}
@@ -94,11 +94,11 @@ Rectangle {
Timer {
id: startHeartbeatTimer;
interval: 1000 ;
- onTriggered: { state = "running"; heartbeat.running = true; }
+ onTriggered: { state = "running"; heartbeat.running = true;}
}
-
Image {
+
Image {
id: title
source: "content/pics/snake.jpg"
@@ -106,16 +106,29 @@ Rectangle {
anchors.fill: parent
anchors.horizontalCenter: parent.horizontalCenter
anchors.verticalCenter: parent.verticalCenter
- Behavior on opacity { NumberAnimation { duration: 500 } }
-
- Text {
- color: "white"
- font.pointSize: 24
- horizontalAlignment: Text.AlignHCenter
- text: "Last Score:\t" + lastScore + "\nHighscore:\t" + highScores.topScore;
- anchors.horizontalCenter: parent.horizontalCenter
- anchors.bottom: parent.bottom
- anchors.bottomMargin: gridSize
+
+ Column {
+ spacing: 140
+ anchors.verticalCenter: parent.verticalCenter;
+ anchors.left: parent.left;
+ anchors.right: parent.right;
+
+ Text {
+ color: "white"
+ font.pointSize: 48
+ font.italic: true;
+ font.bold: true;
+ text: "Snake"
+ anchors.horizontalCenter: parent.horizontalCenter;
+ }
+
+ Text {
+ color: "white"
+ font.pointSize: 24
+ anchors.horizontalCenter: parent.horizontalCenter;
+ //horizontalAlignment: Text.AlignHCenter
+ text: "Last Score:\t" + lastScore + "\nHighscore:\t" + highScores.topScore;
+ }
}
}
@@ -145,7 +158,7 @@ Rectangle {
MouseArea {
anchors.fill: parent
onPressed: {
- if (!head || !heartbeat.running) {
+ if (screen.state == "") {
Logic.startNewGame();
return;
}
@@ -236,7 +249,12 @@ Rectangle {
from: "*"
to: "starting"
NumberAnimation { target: progressIndicator; property: "width"; duration: 1000 }
-
+ NumberAnimation { property: "opacity"; duration: 200 }
+ },
+ Transition {
+ to: "starting"
+ NumberAnimation { target: progressIndicator; property: "width"; duration: 1000 }
+ NumberAnimation { property: "opacity"; duration: 200 }
}
]