Qt Quick 开发案例(三):粒子系统构建

用Qt编写GUI的另一种方法是使用QtQuick模块。使用QtQuick的GUI是用QML编写的。QML是一种声明性的对象描述语言,它集成了Javascript进行程序化编程。QtQuick为使用QML开发GUI提供了必要的模块。可以只用QML编写整个应用程序,但通常只有GUI是用QML编写的,应用程序的后台是用C++实现的(参见整合QML和C++)。

点击下载Qt最新试用版

往期推荐:

如何为游戏添画面以及构造背景

如何构造动画背景对象

发射粒子

除了动画之外,我们还使用粒子在游戏画面上产生运动。我们使用maroon.qml中的ParticleSystem QML类型,使气泡出现在新的游戏画面和游戏画布的底部,并以不同的轨迹慢慢向顶部浮动。

要使用ParticleSystem类型,我们必须导入Qt Quick Particles QML类型。

import QtQuick.Particles 2.0

为了让粒子出现在游戏背景上,我们将ParticleSystem类型放在显示游戏背景的Image类型中。

 Image {
        source:"content/gfx/background.png"
        anchors.bottom: view.bottom

        ParticleSystem {
            id: particles
            anchors.fill: parent

在ParticleSystem中,我们使用一个Emitter类型,以每秒2个的速度从发射器的位置发射粒子,寿命为15秒。

 Emitter {
                width: parent.width
                height: 150
                anchors.bottom: parent.bottom
                anchors.bottomMargin: 3
                startTime: 15000

                emitRate: 2
                lifeSpan: 15000

                acceleration: PointDirection{ y: -6; xVariation: 2; yVariation: 2 }

                size: 24
                sizeVariation: 16
            }

加速度属性使用PointDirection类型来指定x和y坐标的随机变化,这样气泡就会出现在发射器周围的一个矩形区域内,这个区域被固定在图像的底部。

size属性将粒子开始时的基本尺寸设置为24像素,sizeVariation属性随机增加或减少粒子的尺寸,最多增加或减少16个像素,这样我们就可以得到不同大小的气泡。

由于发射器没有可视化,我们使用ImageParticle类型来渲染粒子位置的catch.png图像。

ImageParticle {
                id: bubble
                anchors.fill: parent
                source: "content/gfx/catch.png"
                opacity: 0.25
            }

Wander类型将随机轨迹应用于粒子,使气泡遵循从底部到顶部的随机路线。

 Wander {
                xVariance: 25;
                pace: 25;
            }

关于使用ParticleSystem类型的另一个例子,请参见GameOverScreen.qml文件,在该文件中,ImageParticle类型被用来使云在天空中移动。

Qt常用组件

  • QtitanRibbon| 下载试用: 遵循Microsoft Ribbon UI Paradigm for Qt技术的Ribbon UI组件,致力于为Windows、Linux和Mac OS X提供功能完整的Ribbon组件。
  • QtitanChart | 下载试用 :是一个C ++库,代表一组控件,这些控件使您可以快速地为应用程序提供漂亮而丰富的图表。并且支持所有主要的桌面操作系统。
  • QtitanDataGrid | 下载试用 :这个Qt数据网格组件使用纯C++创建,运行速度极快,处理大数据和超大数据集的效果突出。QtitanDataGrid完全集成了QtDesigner,因而极易适应其他相似的开发环境,保证100%兼容Qt GUI。

你可能感兴趣的:(C++界面开发框架Qt最新资讯,Qt,C++)