From: Alan Alpert Date: Wed, 6 Jun 2012 10:28:17 +0000 (+1000) Subject: Update Affector folder of examples to guidelines X-Git-Url: http://git.silmor.de/gitweb/?a=commitdiff_plain;h=8be9f08b8d1db93d5d7e17a4348a7d3cb2fe6c95;p=konrad%2Fqtdeclarative.git Update Affector folder of examples to guidelines Change-Id: I1fa0e8424f94cf954098b7734ba25feab0790828 Reviewed-by: Bea Lam --- diff --git a/doc/src/images/qml-affectors-example.png b/doc/src/images/qml-affectors-example.png new file mode 100644 index 0000000..748afa6 Binary files /dev/null and b/doc/src/images/qml-affectors-example.png differ diff --git a/examples/particles/affectors/affectors.pro b/examples/particles/affectors/affectors.pro new file mode 100644 index 0000000..52eb0dd --- /dev/null +++ b/examples/particles/affectors/affectors.pro @@ -0,0 +1,10 @@ +TEMPLATE = app + +QT += quick qml +SOURCES += main.cpp + +target.path = $$[QT_INSTALL_EXAMPLES]/qtdeclarative/particles/affectors +qml.files = affectors.qml content +qml.path = $$[QT_INSTALL_EXAMPLES]/qtdeclarative/particles/affectors +INSTALLS += target qml + diff --git a/examples/particles/affectors/affectors.qml b/examples/particles/affectors/affectors.qml new file mode 100644 index 0000000..08f1dfe --- /dev/null +++ b/examples/particles/affectors/affectors.qml @@ -0,0 +1,149 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/ +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.0 +import "../../shared" as Examples + +/*! + \title QtQuick.Particles Examples - Affectors + \example particles/affectors + \brief This is a collection of examples using Affectors in the QML particle system. + \image qml-affectors-example.png + + This is a collection of small QML examples relating to using Affectors in the particle system. + Each example is a small QML file emphasizing a particular element or feature. + + Age demonstrates using an Age affector to prematurely end the lives of particles. + \snippet examples/particles/affectors/content/age.qml 0 + + As you move the affector around the screen, the particles inside it + (which haven't already been affected) jump to a period near the end + of their life. This gives them a short period to finish fading out, + but changing lifeLeft to 0 (the default), would cause them to reach + the end of their life instantly. + + Attractor demonstrates using an Attractor affector to simulate a black hole + \snippet examples/particles/affectors/content/attractor.qml 0 + + All particles in the scene, including the rocket ship's exhaust and pellets, are pulled + towards the black hole. This effect is stronger closer to the black hole, so the + asteroids near the top of the screen are barely affected at all, while the ones + towards the middle sometimes curve drastically. To complete the effect, an Age + affector covers the black hole to destroy particles which come in contact with it. + + Custom Affector manipulates the properties of the particles directly in javascript. + One Affector is used to make the leaves rock back and forth as they fall, looking more + leaf-like than just spinning in circles: + \snippet examples/particles/affectors/content/customaffector.qml 0 + Another is used to provide a slightly varying friction to the leaves as they 'land', + to look more natural: + \snippet examples/particles/affectors/content/customaffector.qml 1 + + Friction is similar to the falling leaves in the custom affector, except that it uses a + flat friction the whole way down instead of custom affectors. + \snippet examples/particles/affectors/content/friction.qml 0 + + Gravity is a convenience affector for applying a constant acceleration to particles inside it + \snippet examples/particles/affectors/content/gravity.qml 0 + + GroupGoal sets up two particle groups for flaming and non-flaming balls, and gives you various + ways to transition between them. + \snippet examples/particles/affectors/content/groupgoal.qml unlit + The non-flaming balls have a one in a hundred chance of lighting on their own each second, but they also + have a GroupGoal set on the whole group. This affector affects all particles of the unlit group, when colliding + with particles in the lit group, and cause them to move to the lighting group. + \snippet examples/particles/affectors/content/groupgoal.qml lighting + lighting is an intermediate group so that the glow builds up and the transition is less jarring. So it automatically + moves into the lit group after 100ms. + \snippet examples/particles/affectors/content/groupgoal.qml lit + The lit group also has TrailEmitters on it for additional fire and smoke, but does not transition anywhere. + There are two more GroupGoal elements that allow particles in the unlit group to transition to the lighting group + (and then to the lit group). + \snippet examples/particles/affectors/content/groupgoal.qml groupgoal-pilot + The first is just an area bound to the location of an image of a pilot flame. When unlit balls pass through the flame, + they go straight to lit because the pilot flame is so hot. + \snippet examples/particles/affectors/content/groupgoal.qml groupgoal-ma + The second is bound to the location of the last pointer interaction, so that touching or clicking on unlit balls (which + is hard due to their constant movement) causes them to move to the lighting group. + + Move shows some simple effects you can get by altering trajectory midway. + The red particles have an affector that affects their position, jumping them forwards by 120px. + \snippet examples/particles/affectors/content/move.qml A + The green particles have an affector that affects their velocity, but with some angle variation. By adding some random direction + velocity to their existing forwards velocity, they begin to spray off in a cone. + \snippet examples/particles/affectors/content/move.qml B + The blue particles have an affector that affects their acceleration, and because it sets relative to false this resets the acceleration instead of + adding to it. Once the blue particles reach the affector, their horizontal velocity stops increasing as their vertical velocity decreases. + \snippet examples/particles/affectors/content/move.qml C + + SpriteGoal has an affector which interacts with the sprite engine of particles, if they are being drawn as sprites by ImageParticle. + \snippet examples/particles/affectors/content/spritegoal.qml 0 + The SpriteGoal follows the image of the rocket ship on screen, and when it interacts with particles drawn by ImageParticle as sprites, + it instructs them to move immediately to the "explode" state, which in this case is the animation of the asteroid breaking into many pieces. + + Turbulence has a flame with smoke, and both sets of particles being affected by a Turbulence affector. This gives a faint wind effect. + \snippet examples/particles/affectors/content/turbulence.qml 0 + To make the wind change direction, subsitute a black and white noise image in the noiseSource parameter (it currently uses a default noise source). + + Wander uses a Wander affector to add some horizontal drift to snowflakes as they fall down. + \snippet examples/particles/affectors/content/wander.qml 0 + There are different movements given by applying the Wander to different attributes of the trajectory, so the example makes it easy to play around and see the difference. +*/ + +Item { + height: 480 + width: 320 + Examples.LauncherList { + id: ll + anchors.fill: parent + Component.onCompleted: { + addExample("Age", "Kills off particles that enter the affector", Qt.resolvedUrl("content/age.qml")); + addExample("Attractor", "Simulates a small black hole", Qt.resolvedUrl("content/attractor.qml")); + addExample("Custom Affector", "Custom falling leaves", Qt.resolvedUrl("content/customaffector.qml")); + addExample("Friction", "Leaves that slow down as they fall", Qt.resolvedUrl("content/friction.qml")); + addExample("Gravity", "Leaves that fall towards the earth as you move it", Qt.resolvedUrl("content/gravity.qml")); + addExample("GroupGoal", "Balls that can be set on fire various ways", Qt.resolvedUrl("content/groupgoal.qml")); + addExample("Move", "Some effects you can get by altering trajectory midway", Qt.resolvedUrl("content/move.qml")); + addExample("SpriteGoal", "A ship that makes asteroids explode", Qt.resolvedUrl("content/spritegoal.qml")); + addExample("Turbulence", "A candle with faint wind", Qt.resolvedUrl("content/turbulence.qml")); + addExample("Wander", "Drifting snow flakes", Qt.resolvedUrl("content/wander.qml")); + } + } +} diff --git a/examples/particles/affectors/affectors.qmlproject b/examples/particles/affectors/affectors.qmlproject new file mode 100644 index 0000000..2bf3387 --- /dev/null +++ b/examples/particles/affectors/affectors.qmlproject @@ -0,0 +1,16 @@ +import QmlProject 1.1 + +Project { + mainFile: "affectors.qml" + + /* Include .qml, .js, and image files from current directory and subdirectories */ + QmlFiles { + directory: "." + } + JavaScriptFiles { + directory: "." + } + ImageFiles { + directory: "." + } +} diff --git a/examples/particles/affectors/age.qml b/examples/particles/affectors/content/age.qml similarity index 97% rename from examples/particles/affectors/age.qml rename to examples/particles/affectors/content/age.qml index ea1b302..ba52ce2 100644 --- a/examples/particles/affectors/age.qml +++ b/examples/particles/affectors/content/age.qml @@ -53,7 +53,7 @@ Rectangle { system: particles sprites: Sprite { name: "snow" - source: "../images/snowflake.png" + source: "../../images/snowflake.png" frameCount: 51 frameDuration: 40 frameDurationVariation: 8 @@ -86,6 +86,7 @@ Rectangle { y: ma.mouseY - 36 width: 72 height: 72 + //! [0] Age { anchors.fill: parent system: particles @@ -93,5 +94,6 @@ Rectangle { lifeLeft: 1200 advancePosition: false } + //! [0] } } diff --git a/examples/particles/affectors/attractor.qml b/examples/particles/affectors/content/attractor.qml similarity index 84% rename from examples/particles/affectors/attractor.qml rename to examples/particles/affectors/content/attractor.qml index 0d50937..16a553f 100644 --- a/examples/particles/affectors/attractor.qml +++ b/examples/particles/affectors/content/attractor.qml @@ -46,25 +46,10 @@ Rectangle { width: 360 height: 540 color: "black" - property bool spacePressed: false - focus: true Image { - source: "../images/finalfrontier.png" + source: "../../images/finalfrontier.png" anchors.centerIn:parent } - Keys.onPressed: { - if (event.key == Qt.Key_Space) { - spacePressed = true; - event.accepted = true; - } - } - Keys.onReleased: { - if (event.key == Qt.Key_Space) { - spacePressed = false; - event.accepted = true; - } - } - Emitter { group: "stars" system: particles @@ -95,7 +80,7 @@ Rectangle { id: stars groups: ["stars"] system: particles - source: "../images/star.png" + source: "../../images/star.png" color: "white" colorVariation: 0.1 alpha: 0 @@ -107,7 +92,7 @@ Rectangle { sprites: Sprite { id: spinState name: "spinning" - source: "../images/meteor.png" + source: "../../images/meteor.png" frameCount: 35 frameDuration: 60 } @@ -116,7 +101,7 @@ Rectangle { id: shot groups: ["shot"] system: particles - source: "../images/star.png" + source: "../../images/star.png" color: "#0FF06600" colorVariation: 0.3 @@ -125,7 +110,7 @@ Rectangle { id: engine groups: ["engine"] system: particles - source: "../images/particle4.png" + source: "../../images/particle4.png" color: "orange" SequentialAnimation on color { @@ -144,12 +129,14 @@ Rectangle { colorVariation: 0.2 } + //! [0] Attractor { id: gs; pointX: root.width/2; pointY: root.height/2; strength: 4000000; system: particles affectedParameter: Attractor.Acceleration proportionalToDistance: Attractor.InverseQuadratic } + //! [0] Age { system: particles x: gs.pointX - 8; @@ -167,15 +154,20 @@ Rectangle { } Image { - source:"../images/rocket2.png" + source:"../../images/rocket2.png" id: ship width: 45 height: 22 - MouseArea { - id: ma - anchors.fill: parent; - drag.axis: Drag.XandYAxis - drag.target: ship + //Automatic movement + SequentialAnimation on x { + loops: -1 + NumberAnimation{to: root.width-45; easing.type: Easing.InOutQuad; duration: 2000} + NumberAnimation{to: 0; easing.type: Easing.OutInQuad; duration: 6000} + } + SequentialAnimation on y { + loops: -1 + NumberAnimation{to: root.height-22; easing.type: Easing.OutInQuad; duration: 6000} + NumberAnimation{to: 0; easing.type: Easing.InOutQuad; duration: 2000} } } Emitter { @@ -196,18 +188,12 @@ Rectangle { group: "shot" system: particles emitRate: 32 - lifeSpan: 2000 - enabled: spacePressed + lifeSpan: 1000 + enabled: true size: 40 speed: PointDirection { x: 256; } x: ship.x + ship.width y: ship.y + ship.height/2 } - - Text { - color: "white" - anchors.bottom: parent.bottom - text:"Drag the ship, Spacebar to fire." - } } diff --git a/examples/particles/affectors/customaffector.qml b/examples/particles/affectors/content/customaffector.qml similarity index 93% rename from examples/particles/affectors/customaffector.qml rename to examples/particles/affectors/content/customaffector.qml index 9ccf45d..2abb72d 100644 --- a/examples/particles/affectors/customaffector.qml +++ b/examples/particles/affectors/content/customaffector.qml @@ -46,7 +46,7 @@ Item { height: 600 Image { - source: "../images/backgroundLeaves.jpg" + source: "../../images/backgroundLeaves.jpg" anchors.fill: parent } ParticleSystem { @@ -68,6 +68,7 @@ Item { pace: 60 } + //! [0] Affector { system: sys property real coefficient: 0.1 @@ -102,10 +103,11 @@ Item { } } } + //! [0] + //! [1] Affector {//Custom Friction, adds some 'randomness' system: sys - //onceOff: true x: -60 width: parent.width + 120 height: 100 @@ -128,37 +130,38 @@ Item { } } } + //! [1] ImageParticle { anchors.fill: parent id: particles system: sys sprites: [Sprite { - source: "../images/realLeaf1.png" + source: "../../images/realLeaf1.png" frameCount: 1 frameDuration: 1 to: {"a":1, "b":1, "c":1, "d":1} }, Sprite { name: "a" - source: "../images/realLeaf1.png" + source: "../../images/realLeaf1.png" frameCount: 1 frameDuration: 10000 }, Sprite { name: "b" - source: "../images/realLeaf2.png" + source: "../../images/realLeaf2.png" frameCount: 1 frameDuration: 10000 }, Sprite { name: "c" - source: "../images/realLeaf3.png" + source: "../../images/realLeaf3.png" frameCount: 1 frameDuration: 10000 }, Sprite { name: "d" - source: "../images/realLeaf4.png" + source: "../../images/realLeaf4.png" frameCount: 1 frameDuration: 10000 } diff --git a/examples/particles/affectors/friction.qml b/examples/particles/affectors/content/friction.qml similarity index 90% rename from examples/particles/affectors/friction.qml rename to examples/particles/affectors/content/friction.qml index b93ead1..951ffae 100644 --- a/examples/particles/affectors/friction.qml +++ b/examples/particles/affectors/content/friction.qml @@ -46,7 +46,7 @@ Item { height: 600 Image { - source: "../images/backgroundLeaves.jpg" + source: "../../images/backgroundLeaves.jpg" anchors.fill: parent } ParticleSystem { id: sys } @@ -64,31 +64,31 @@ Item { id: particles system: sys sprites: [Sprite { - source: "../images/realLeaf1.png" + source: "../../images/realLeaf1.png" frameCount: 1 frameDuration: 1 to: {"a":1, "b":1, "c":1, "d":1} }, Sprite { name: "a" - source: "../images/realLeaf1.png" + source: "../../images/realLeaf1.png" frameCount: 1 frameDuration: 10000 }, Sprite { name: "b" - source: "../images/realLeaf2.png" + source: "../../images/realLeaf2.png" frameCount: 1 frameDuration: 10000 }, Sprite { name: "c" - source: "../images/realLeaf3.png" + source: "../../images/realLeaf3.png" frameCount: 1 frameDuration: 10000 }, Sprite { name: "d" - source: "../images/realLeaf4.png" + source: "../../images/realLeaf4.png" frameCount: 1 frameDuration: 10000 } @@ -100,10 +100,13 @@ Item { y: 20 z:4 } + + //! [0] Friction { anchors.fill: parent anchors.margins: -40 system: sys factor: 0.4 } + //! [0] } diff --git a/examples/particles/affectors/gravity.qml b/examples/particles/affectors/content/gravity.qml similarity index 94% rename from examples/particles/affectors/gravity.qml rename to examples/particles/affectors/content/gravity.qml index b90d83e..79debf7 100644 --- a/examples/particles/affectors/gravity.qml +++ b/examples/particles/affectors/content/gravity.qml @@ -1,5 +1,5 @@ /**************************************************************************** -** +* ** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/ ** @@ -43,7 +43,7 @@ import QtQuick.Particles 2.0 Item { id: window - width: 480; height: 480 + width: 320; height: 480 Rectangle { id: sky anchors.fill: parent @@ -61,10 +61,10 @@ Item { Rectangle { id: ground - width: parent.width * 2 + width: parent.height * 2 height: parent.height y: parent.height/2 - x: -parent.height/2 + x: parent.width/2 - parent.height transformOrigin: Item.Top rotation: 0 gradient: Gradient { @@ -82,11 +82,13 @@ Item { } ParticleSystem { id: sys } + //! [0] Gravity { system: sys magnitude: 32 angle: ground.rotation + 90 } + //! [0] Emitter { system: sys anchors.centerIn: parent @@ -97,7 +99,7 @@ Item { ImageParticle { anchors.fill: parent system: sys - source: "../images/realLeaf1.png" + source: "../../images/realLeaf1.png" } } diff --git a/examples/particles/affectors/groupgoal.qml b/examples/particles/affectors/content/groupgoal.qml similarity index 91% rename from examples/particles/affectors/groupgoal.qml rename to examples/particles/affectors/content/groupgoal.qml index 273ec1a..e874c78 100644 --- a/examples/particles/affectors/groupgoal.qml +++ b/examples/particles/affectors/content/groupgoal.qml @@ -58,12 +58,13 @@ Rectangle { ParticleSystem { id: particles anchors.fill: parent + // ![unlit] ParticleGroup { name: "unlit" duration: 1000 to: {"lighting":1, "unlit":99} ImageParticle { - source: "../images/particleA.png" + source: "../../images/particleA.png" colorVariation: 0.1 color: "#2060160f" } @@ -73,11 +74,15 @@ Rectangle { jump: true } } + // ![unlit] + // ![lighting] ParticleGroup { name: "lighting" duration: 100 to: {"lit":1} } + // ![lighting] + // ![lit] ParticleGroup { name: "lit" duration: 10000 @@ -99,6 +104,7 @@ Rectangle { TrailEmitter { id: fireballSmoke group: "smoke" + // ![lit] emitRatePerParticle: 120 lifeSpan: 2000 @@ -118,7 +124,7 @@ Rectangle { id: smoke anchors.fill: parent groups: ["smoke"] - source: "../images/particle.png" + source: "../../images/particle.png" colorVariation: 0 color: "#00111111" } @@ -126,7 +132,7 @@ Rectangle { id: pilot anchors.fill: parent groups: ["pilot"] - source: "../images/particle.png" + source: "../../images/particle.png" redVariation: 0.01 blueVariation: 0.4 color: "#0010004f" @@ -135,7 +141,7 @@ Rectangle { id: flame anchors.fill: parent groups: ["flame", "lit", "lighting"] - source: "../images/particleA.png" + source: "../../images/particleA.png" colorVariation: 0.1 color: "#00ff400f" } @@ -162,6 +168,7 @@ Rectangle { sizeVariation: 2 endSize: 0 speed: PointDirection { y:-100; yVariation: 4; xVariation: 4 } + // ![groupgoal-pilot] GroupGoal { groups: ["unlit"] goalState: "lit" @@ -171,9 +178,11 @@ Rectangle { y: -55 height: 75 width: 30 - shape: MaskShape {source: "../images/matchmask.png"} + shape: MaskShape {source: "../../images/matchmask.png"} } + // ![groupgoal-pilot] } + // ![groupgoal-ma] //Click to enflame GroupGoal { groups: ["unlit"] @@ -185,6 +194,7 @@ Rectangle { x: ma.mouseX - width/2 y: ma.mouseY - height/2 } + // ![groupgoal-ma] MouseArea { id: ma anchors.fill: parent diff --git a/examples/particles/affectors/move.qml b/examples/particles/affectors/content/move.qml similarity index 94% rename from examples/particles/affectors/move.qml rename to examples/particles/affectors/content/move.qml index f290173..8ffe8e2 100644 --- a/examples/particles/affectors/move.qml +++ b/examples/particles/affectors/content/move.qml @@ -50,7 +50,7 @@ Rectangle { ImageParticle { groups: ["A"] anchors.fill: parent - source: "../images/star.png" + source: "../../images/star.png" color:"#FF1010" redVariation: 0.8 } @@ -66,6 +66,7 @@ Rectangle { height: 80 } + //! [A] Affector { groups: ["A"] x: 120 @@ -74,11 +75,12 @@ Rectangle { once: true position: PointDirection { x: 120; } } + //! [A] ImageParticle { groups: ["B"] anchors.fill: parent - source: "../images/star.png" + source: "../../images/star.png" color:"#10FF10" greenVariation: 0.8 } @@ -95,6 +97,7 @@ Rectangle { height: 10 } + //! [B] Affector { groups: ["B"] x: 120 @@ -104,11 +107,12 @@ Rectangle { once: true speed: AngleDirection { angleVariation:360; magnitude: 72 } } + //! [B] ImageParticle { groups: ["C"] anchors.fill: parent - source: "../images/star.png" + source: "../../images/star.png" color:"#1010FF" blueVariation: 0.8 } @@ -126,6 +130,7 @@ Rectangle { height: 80 } + //! [C] Affector { groups: ["C"] x: 120 @@ -136,6 +141,7 @@ Rectangle { relative: false acceleration: PointDirection { y: -80; } } + //! [C] } } diff --git a/examples/particles/affectors/spritegoal.qml b/examples/particles/affectors/content/spritegoal.qml similarity index 92% rename from examples/particles/affectors/spritegoal.qml rename to examples/particles/affectors/content/spritegoal.qml index 7102d09..21aa859 100644 --- a/examples/particles/affectors/spritegoal.qml +++ b/examples/particles/affectors/content/spritegoal.qml @@ -52,7 +52,7 @@ Item { ParticleSystem { id: sys } Image { - source: "../images/finalfrontier.png" + source: "../../images/finalfrontier.png" transformOrigin: Item.Center anchors.centerIn: parent smooth: true @@ -67,7 +67,7 @@ Item { ImageParticle { system: sys groups: ["starfield"] - source: "../images/star.png" + source: "../../images/star.png" colorVariation: 0.3 color: "white" } @@ -104,37 +104,39 @@ Item { sprites:[Sprite { id: spinState name: "spinning" - source: "../images/meteor.png" + source: "../../images/meteor.png" frameCount: 35 frameDuration: 40 randomStart: true to: {"explode":0, "spinning":1} },Sprite { name: "explode" - source: "../images/_explo.png" + source: "../../images/_explo.png" frameCount: 22 frameDuration: 40 to: {"nullFrame":1} },Sprite {//Not sure if this is needed, but seemed easiest name: "nullFrame" - source: "../images/nullRock.png" + source: "../../images/nullRock.png" frameCount: 1 frameDuration: 1000 } ] } + //! [0] SpriteGoal { groups: ["meteor"] system: sys goalState: "explode" jump: true - anchors.centerIn: holder//A bug in affectors currently isn't compensating for relative x,y. when that's fixed this can just anchors.fill: rocketShip + anchors.fill: rocketShip width: 60 height: 60 } + //! [0] Image { id: rocketShip - source: "../images/rocket.png" + source: "../../images/rocket.png" smooth: true anchors.centerIn: holder rotation: (circle.percent+0.25) * 360 @@ -170,7 +172,7 @@ Item { z:0 system: sys groups: ["exhaust"] - source: "../images/particle4.png" + source: "../../images/particle4.png" color: "orange" SequentialAnimation on color { diff --git a/examples/particles/affectors/turbulence.qml b/examples/particles/affectors/content/turbulence.qml similarity index 90% rename from examples/particles/affectors/turbulence.qml rename to examples/particles/affectors/content/turbulence.qml index f3ad134..823a37e 100644 --- a/examples/particles/affectors/turbulence.qml +++ b/examples/particles/affectors/content/turbulence.qml @@ -42,15 +42,15 @@ import QtQuick 2.0 import QtQuick.Particles 2.0 Rectangle { - width: 360 - height: 600 + width: 320 + height: 480 color: "#222222" id: root Image { - source: "../images/candle.png" + source: "../../images/candle.png" anchors.bottom: parent.bottom anchors.horizontalCenter: parent.horizontalCenter - anchors.bottomMargin: -8 + anchors.bottomMargin: -60 anchors.horizontalCenterOffset: 2 } ParticleSystem { @@ -61,28 +61,31 @@ Rectangle { onClicked: turb.enabled = !turb.enabled } + //! [0] Turbulence { id: turb system: ps enabled: true - height: (parent.height / 2) - width: parent.width / 2 + height: (parent.height / 2) - 4 + width: parent.width x: parent. width / 4 anchors.fill: parent strength: 32 + NumberAnimation on strength{from: 16; to: 64; easing.type: Easing.InOutBounce; duration: 1800; loops: -1} } + //! [0] ImageParticle { groups: ["smoke"] system: ps - source: "../images/particle.png" + source: "../../images/particle.png" color: "#11111111" colorVariation: 0 } ImageParticle { groups: ["flame"] system: ps - source: "../images/particle.png" + source: "../../images/particle.png" color: "#11ff400f" colorVariation: 0.1 } @@ -102,7 +105,7 @@ Rectangle { TrailEmitter { id: smoke1 width: root.width - height: root.height/2 - 20 + height: root.height/2 system: ps group: "smoke" follow: "flame" @@ -119,7 +122,7 @@ Rectangle { TrailEmitter { id: smoke2 width: root.width - height: root.height/2 - 40 + height: root.height/2 - 20 system: ps group: "smoke" follow: "flame" diff --git a/examples/particles/affectors/wander.qml b/examples/particles/affectors/content/wander.qml similarity index 96% rename from examples/particles/affectors/wander.qml rename to examples/particles/affectors/content/wander.qml index ea00879..649bfc0 100644 --- a/examples/particles/affectors/wander.qml +++ b/examples/particles/affectors/content/wander.qml @@ -40,7 +40,7 @@ import QtQuick 2.0 import QtQuick.Particles 2.0 -import "../exampleslauncher/content" as UI +import "../../../shared" as UI //Has a shared UI element Rectangle { width: 360 @@ -50,13 +50,14 @@ Rectangle { system: particles sprites: Sprite { name: "snow" - source: "../images/snowflake.png" + source: "../../images/snowflake.png" frameCount: 51 frameDuration: 40 frameDurationVariation: 8 } } + //! [0] Wander { id: wanderer system: particles @@ -64,6 +65,7 @@ Rectangle { xVariance: 360/(wanderer.affectedParameter+1); pace: 100*(wanderer.affectedParameter+1); } + //! [0] Emitter { system: particles diff --git a/examples/particles/affectors/main.cpp b/examples/particles/affectors/main.cpp new file mode 100644 index 0000000..a78cb69 --- /dev/null +++ b/examples/particles/affectors/main.cpp @@ -0,0 +1,41 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/ +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** +** $QT_END_LICENSE$ +** +****************************************************************************/ +#include "../../shared/shared.h" +DECLARATIVE_EXAMPLE_MAIN(affectors) diff --git a/examples/shared/Button.qml b/examples/shared/Button.qml index a899a14..e31b155 100644 --- a/examples/shared/Button.qml +++ b/examples/shared/Button.qml @@ -44,7 +44,7 @@ Item { id: container property string text: "Button" - property string subText: "Just a button" + property string subText: "" signal clicked width: buttonLabel.width + 20; height: col.height + 12