Warning, /education/gcompris/external/qml-box2d/examples/demolition/demolition.qml is written in an unsupported language. File is not indexed.
0001 import QtQuick 2.0
0002 import Box2D 2.0
0003 import "../shared"
0004
0005 Image {
0006 id: screen;
0007 width: 640; height: 360
0008 source: "images/background.png"
0009 Image {
0010 id: skyline
0011 anchors {
0012 bottom: parent.bottom
0013 left: parent.left
0014 right: parent.right
0015 }
0016
0017 source: "images/skyline.png"
0018 }
0019
0020 // A wheel that will be created dynamically
0021 Component {
0022 id: wheelComponent
0023 Image {
0024 id: wheel
0025
0026 smooth: true
0027 source: "images/wheel.png"
0028
0029 CircleBody {
0030 id: wheelBody
0031
0032 world: physicsWorld
0033 target: wheel
0034 bodyType: Body.Dynamic
0035
0036 density: 6
0037 friction: 1.0
0038 restitution: 0.6
0039
0040 radius: wheel.width / 2
0041 }
0042
0043 MouseArea {
0044 anchors.fill: parent
0045 onReleased: timer.running = false
0046 onPressed: {
0047 if(wheel.x < (physicsRoot.width / 2)) {
0048 timer.clockwise = true
0049 }
0050 else {
0051 timer.clockwise = false
0052 }
0053
0054 timer.running = true
0055 }
0056
0057 Timer {
0058 id: timer
0059 property bool clockwise
0060 interval: 100
0061 repeat: true
0062 onTriggered: {
0063 if(clockwise) {
0064 wheelBody.applyTorque(-3000)
0065 }
0066 else {
0067 wheelBody.applyTorque(3000)
0068 }
0069 }
0070 }
0071 }
0072 }
0073 }
0074
0075 Text {
0076 anchors {
0077 top: parent.top; topMargin: 20
0078 left: parent.left; leftMargin: 25
0079 }
0080
0081 text: "Press and hold to create a wheel.\nPress and hold on top of the wheel to apply torque."
0082 color: "white"
0083 font.pixelSize: 12
0084 }
0085
0086 Flickable {
0087 anchors.fill: parent
0088
0089 // Try to double the contentWidth..
0090 contentWidth: physicsRoot.width // * 2
0091 contentHeight: physicsRoot.height
0092
0093 World { id: physicsWorld }
0094
0095 Item {
0096 id: physicsRoot
0097 width: screen.width
0098 height: screen.height
0099
0100 MouseArea {
0101 anchors.fill: parent
0102 onPressAndHold: {
0103 var wheel = wheelComponent.createObject(physicsRoot)
0104 wheel.x = mouse.x - wheel.width / 2
0105 wheel.y = mouse.y - wheel.height / 2
0106 }
0107 }
0108
0109 Building {
0110 id: victim
0111 anchors {
0112 bottom: ground.top
0113 }
0114 x: 100
0115 floors: 6
0116 stairways: 3
0117 }
0118
0119 Building {
0120 anchors {
0121 bottom: ground.top
0122 }
0123 x: 400
0124 floors: 6
0125 stairways: 3
0126 }
0127
0128 Wall {
0129 id: ceiling
0130 height: 20
0131 anchors {
0132 top: parent.top
0133 left: parent.left
0134 right: parent.right
0135 }
0136 }
0137
0138 Wall {
0139 id: leftWall
0140 width: 20
0141 anchors {
0142 top: parent.top
0143 bottom: parent.bottom
0144 left: parent.left
0145 }
0146 }
0147
0148 Wall {
0149 id: rightWall
0150 width: 20
0151 anchors {
0152 top: parent.top
0153 bottom: parent.bottom
0154 right: parent.right
0155 }
0156 }
0157
0158 Wall {
0159 id: ground
0160 height: 20
0161 anchors {
0162 left: parent.left
0163 right: parent.right
0164 bottom: parent.bottom
0165 }
0166 }
0167
0168 Wall {
0169 id: exitWall
0170 width: 85
0171 height: 20
0172 anchors {
0173 top: ceiling.bottom
0174 right: rightWall.left
0175 }
0176 }
0177 }
0178
0179 DebugDraw {
0180 id: debugDraw
0181 anchors.fill: physicsRoot
0182 world: world
0183 opacity: 0.75
0184 visible: false
0185 }
0186 }
0187
0188
0189 Image {
0190 anchors {
0191 top: parent.top; topMargin: 10
0192 right: parent.right; rightMargin: 20
0193 }
0194
0195 fillMode: Image.PreserveAspectFit
0196 source: "images/plate.png"
0197 smooth: true
0198 Behavior on scale {
0199 PropertyAnimation { easing.type: Easing.OutCubic; duration: 100; }
0200 }
0201 MouseArea {
0202 anchors.fill: parent
0203 scale: 1.4
0204 onClicked: Qt.quit()
0205 onPressed: parent.scale = 0.9
0206 onReleased: parent.scale = 1.0
0207 }
0208 }
0209 }