diff options
Diffstat (limited to 'examples')
13 files changed, 342 insertions, 43 deletions
diff --git a/examples/declarative/particles/custom/delegates.qml b/examples/declarative/particles/custom/delegates.qml new file mode 100644 index 0000000000..4b01c66396 --- /dev/null +++ b/examples/declarative/particles/custom/delegates.qml @@ -0,0 +1,89 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** 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 QtQuick.Particles 2.0 + +Rectangle{ + id: root; + width: 360 + height: 600 + function newPithySaying(){ + switch (Math.floor(Math.random()*16)){ + case 0: return "Hello World"; + case 1: return "G'day Mate"; + case 2: return "Code Less"; + case 3: return "Create More"; + case 4: return "Deploy Everywhere"; + case 5: return "Qt Meta-object Language"; + case 6: return "Qt Magic Language"; + case 7: return "Fluid UIs"; + case 8: return "Touchable"; + case 9: return "How's it going?"; + case 10: return "Do you like text?"; + case 11: return "Enjoy!"; + case 12: return "ERROR: Out of pith"; + case 13: return "Punctuation Failure"; + case 14: return "I can go faster"; + case 15: return "I can go slower"; + default: return "OMGWTFBBQ"; + } + } + color: "black" + ParticleSystem{ + anchors.fill: parent + id: syssy + Emitter{ + anchors.centerIn: parent + emitRate: 1 + lifeSpan: 4800 + lifeSpanVariation: 1600 + speed: AngledDirection{angleVariation: 360; magnitude: 40; magnitudeVariation: 20} + } + ItemParticle{ + delegate: Text{ + text: root.newPithySaying(); + color: "white" + font.pixelSize: 18 + font.bold: true + } + } + } +} diff --git a/examples/declarative/particles/exampleslauncher.qml b/examples/declarative/particles/exampleslauncher.qml index 354bcdf65a..54f57654c3 100644 --- a/examples/declarative/particles/exampleslauncher.qml +++ b/examples/declarative/particles/exampleslauncher.qml @@ -52,7 +52,7 @@ Rectangle{ id: shell anchors.fill: parent } - VisualDataModel{//TODO: Transitions between modes + VisualDataModel{//TODO: Transitions id: vdm model: [ "../spaceexplorer/spaceexplorer.qml", @@ -60,6 +60,8 @@ Rectangle{ "../asteroid/asteroid.qml", "../asteroid/blackhole.qml", "../custom/blurparticles.qml", + "../custom/shader.qml", + "../custom/delegates.qml", "../modelparticles/bubbles.qml", "../modelparticles/gridsplosion.qml", "../modelparticles/package.qml", @@ -81,6 +83,8 @@ Rectangle{ "../trails/layered.qml", "../trails/shimmer.qml", "../trails/turbulence.qml", + "../trails/combustion.qml", + "../trails/fireworks.qml", "../../../../demos/declarative/samegame/samegame.qml", "../../../../demos/declarative/plasmapatrol/plasmapatrol.qml", "../../../../demos/declarative/flickr/flickr.qml" diff --git a/examples/declarative/particles/launcherContent/icons/combustion.png b/examples/declarative/particles/launcherContent/icons/combustion.png Binary files differnew file mode 100644 index 0000000000..69c6f64e54 --- /dev/null +++ b/examples/declarative/particles/launcherContent/icons/combustion.png diff --git a/examples/declarative/particles/launcherContent/icons/delegates.png b/examples/declarative/particles/launcherContent/icons/delegates.png Binary files differnew file mode 100644 index 0000000000..929414cd0e --- /dev/null +++ b/examples/declarative/particles/launcherContent/icons/delegates.png diff --git a/examples/declarative/particles/launcherContent/icons/fireworks.png b/examples/declarative/particles/launcherContent/icons/fireworks.png Binary files differnew file mode 100644 index 0000000000..ec9f826495 --- /dev/null +++ b/examples/declarative/particles/launcherContent/icons/fireworks.png diff --git a/examples/declarative/particles/launcherContent/icons/shader.png b/examples/declarative/particles/launcherContent/icons/shader.png Binary files differnew file mode 100644 index 0000000000..7c6de498d5 --- /dev/null +++ b/examples/declarative/particles/launcherContent/icons/shader.png diff --git a/examples/declarative/particles/modelparticles/package.qml b/examples/declarative/particles/modelparticles/package.qml index 0aa8903270..d374a93446 100644 --- a/examples/declarative/particles/modelparticles/package.qml +++ b/examples/declarative/particles/modelparticles/package.qml @@ -83,7 +83,7 @@ Rectangle { Emitter{ system: sys width: 100 - x: 50 + x: 250 speed: PointDirection{ y: 40 } lifeSpan: 5000 emitRate: 1.6 diff --git a/examples/declarative/particles/modelparticles/stream.qml b/examples/declarative/particles/modelparticles/stream.qml index 5c7a6f7fc4..15280f7f21 100644 --- a/examples/declarative/particles/modelparticles/stream.qml +++ b/examples/declarative/particles/modelparticles/stream.qml @@ -65,7 +65,6 @@ Item{ ParticleSystem{ id: sys; running: true - overwrite: false startTime: 12000//Doesn't actually work with the loading time though... } Emitter{ diff --git a/examples/declarative/particles/snow/snow.qml b/examples/declarative/particles/snow/snow.qml index ea2de17046..b988c53f4a 100644 --- a/examples/declarative/particles/snow/snow.qml +++ b/examples/declarative/particles/snow/snow.qml @@ -54,6 +54,7 @@ Rectangle{ source: "content/flake-01.png" frames: 51 duration: 40 + durationVariation: 8 } } Wander { diff --git a/examples/declarative/particles/trails/combustion.qml b/examples/declarative/particles/trails/combustion.qml new file mode 100644 index 0000000000..f244300524 --- /dev/null +++ b/examples/declarative/particles/trails/combustion.qml @@ -0,0 +1,199 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** 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 QtQuick.Particles 2.0 + + +Rectangle { + id: root + width: 360 + height: 600 + color: "black" + + property int score: 0 + Text{ + color: "white" + anchors.right: parent.right + text: score + } + ParticleSystem{ + id: particles + anchors.fill: parent + + + particleStates:[ + Sprite{ + name: "unlit" + duration: 1000 + to: {"lighting":1, "unlit":99} + ImageParticle{ + source: "content/particleA.png" + colorVariation: 0.1 + color: "#2060160f" + } + SpriteGoal{ + collisionParticles: ["lit"] + goalState: "lighting" + jump: true + systemStates: true + } + }, + Sprite{ + name: "lighting" + duration: 100 + to: {"lit":1} + }, + Sprite{ + name: "lit" + duration: 10000 + onEntered: score++; + FollowEmitter{ + id: fireballFlame + particle: "flame" + + emitRatePerParticle: 48 + lifeSpan: 200 + emitWidth: 8 + emitHeight: 8 + + size: 24 + sizeVariation: 8 + endSize: 4 + } + + FollowEmitter{ + id: fireballSmoke + particle: "smoke" + + emitRatePerParticle: 120 + lifeSpan: 2000 + emitWidth: 16 + emitHeight: 16 + + speed: PointDirection{yVariation: 16; xVariation: 16} + acceleration: PointDirection{y: -16} + + size: 24 + sizeVariation: 8 + endSize: 8 + } + } + ] + + ImageParticle{ + id: smoke + anchors.fill: parent + particles: ["smoke"] + source: "content/particle.png" + colorVariation: 0 + color: "#00111111" + } + ImageParticle{ + id: pilot + anchors.fill: parent + particles: ["pilot"] + source: "content/particle.png" + redVariation: 0.01 + blueVariation: 0.4 + color: "#0010004f" + } + ImageParticle{ + id: flame + anchors.fill: parent + particles: ["flame", "lit", "lighting"] + source: "content/particleA.png" + colorVariation: 0.1 + color: "#00ff400f" + } + + Emitter{ + height: parent.height/2 + emitRate: 4 + lifeSpan: 4000//TODO: Infinite & kill zone + size: 24 + sizeVariation: 4 + speed: PointDirection{x:120; xVariation: 80; yVariation: 50} + acceleration: PointDirection{y:120} + particle: "unlit" + } + + Emitter{ + id: flamer + x: 100 + y: 300 + particle: "pilot" + emitRate: 80 + lifeSpan: 600 + size: 24 + sizeVariation: 2 + endSize: 0 + speed: PointDirection{ y:-100; yVariation: 4; xVariation: 4 } + SpriteGoal{ + particles: ["unlit"] + goalState: "lit" + jump: true + systemStates: true + system: particles + x: -15 + y: -55 + height: 75 + width: 30 + shape: MaskShape{source: "content/matchmask.png"} + } + } + //Click to enflame + SpriteGoal{//TODO: Aux emiiters in the state definition (which allows the occasional ball to spontaneously combust) + particles: ["unlit"] + goalState: "lighting" + jump: true + systemStates: true + active: ma.pressed + width: 18 + height: 18 + x: ma.mouseX - width/2 + y: ma.mouseY - height/2 + } + MouseArea{ + id: ma + anchors.fill: parent + } + } +} diff --git a/examples/declarative/particles/trails/content/matchmask.png b/examples/declarative/particles/trails/content/matchmask.png Binary files differnew file mode 100644 index 0000000000..e575875c55 --- /dev/null +++ b/examples/declarative/particles/trails/content/matchmask.png diff --git a/examples/declarative/particles/trails/dynamicemitters.qml b/examples/declarative/particles/trails/dynamicemitters.qml index f338c204db..dbf3f8fa82 100644 --- a/examples/declarative/particles/trails/dynamicemitters.qml +++ b/examples/declarative/particles/trails/dynamicemitters.qml @@ -114,6 +114,7 @@ Rectangle{ obj.targetX = Math.random() * 240 - 120 + obj.x obj.targetY = Math.random() * 240 - 120 + obj.y obj.life = Math.round(Math.random() * 2400) + 200 + obj.emitRate = Math.round(Math.random() * 32) + 32 obj.go(); } } diff --git a/examples/declarative/particles/custom/fireworks.qml b/examples/declarative/particles/trails/fireworks.qml index b73a5e234f..59627f8dce 100644 --- a/examples/declarative/particles/custom/fireworks.qml +++ b/examples/declarative/particles/trails/fireworks.qml @@ -45,58 +45,64 @@ Rectangle{ width: 360 height: 600 color: "black" - Component{ - id: firework - Item{ - id: container - width: 48 - height: 48 - Image{ - width: 48 - height: 48 - id: img - source: "content/particle.png" - } - Timer{ - interval: 1000 + 4000*Math.random() - running: true - repeat: false - onTriggered: { - img.visible = false; - emitter.burst(100); - } - } - Emitter{ - anchors.centerIn: parent - id: emitter - system: syssy - particle: "works" - emitting: false - emitRate: 100 - lifeSpan: 1000 - //speed: AngledDirection{angle: 270; angleVariation:60; magnitudeVariation: 60; magnitude: 20} - speed: PointDirection{y:-60; yVariation: 80; xVariation: 80} - acceleration: PointDirection{y:100; yVariation: 20} - } - } - } ParticleSystem{ anchors.fill: parent id: syssy + particleStates:[ + Sprite{ + name: "fire" + duration: 2000 + to: {"splode":1} + }, + Sprite{ + name: "splode" + duration: 400 + to: {"dead":1} + FollowEmitter{ + particle: "works" + emitRatePerParticle: 100 + lifeSpan: 1000 + emitCap: 1200 + size: 8 + speed: AngledDirection{angle: 270; angleVariation: 45; magnitude: 20; magnitudeVariation: 20;} + acceleration: PointDirection{y:100; yVariation: 20} + } + }, + Sprite{ + name: "dead" + duration: 1000 + Affector{ + onceOff: true + signal: true + onAffected: worksEmitter.burst(400,x,y) + } + } + ] Emitter{ particle: "fire" width: parent.width y: parent.height emitRate: 2 lifeSpan: 6000 - speed: PointDirection{y:-100} + speed: PointDirection{y:-100; yVariation: 40} + size: 32 } - ItemParticle{ - particles: ["fire"] - delegate: firework + Emitter{ + id: worksEmitter + particle: "works" + emitting: false + emitRate: 100 + lifeSpan: 1600 + emitCap: 6400 + size: 8 + speed: CumulativeDirection{ + PointDirection{y:-100} + AngledDirection{angleVariation: 360; magnitudeVariation: 80;} + } + acceleration: PointDirection{y:100; yVariation: 20} } ImageParticle{ - particles: ["works"] + particles: ["works", "fire", "splode"] source: "content/particle.png" } } |