Русскоязычный портал о QML и QtQuick, QmlPortal What the duck

Каталог статей

Главная » Статьи » QML для профессионалов

QML Particle system
Система частиц доступна в модуле Qt.labs.particles 1.0. Совместимость элементов из модуля Qt.labs с последующими версиями Не гарантируется.
Этот элемент предоставляет предварительную поддержку частиц в QML и может быть серъезно изменен или удален в последующих версиях.

С частицами, созданными с помощью этого модуля, нельзя иметь дело непосредственно, ими можно управлять только через параметры объекта Particles. Все частицы являются одной и той же картинкой, определенной пользователем. Частицы рисуются относительно их родительского объекта Particles. Перемещение объекта Particles не будет влиять на перемещение частицы, уже испущенной. В этом примере создается два объекта Particles, которые ведут себя по разному. У верхнего объекта частицы падают от вершины как снег, у нижнего частицы бъют снизу, как фонтан.


QML Partical system

import QtQuick 1.0
import Qt.labs.particles 1.0

Rectangle {
      width: 240
      height: 320
      color: "black"
   
     Particles {
           y: 0
           width: parent.width
           height: 30
           source: "star.png"
           lifeSpan: 5000
           count: 50
           angle: 70
           angleDeviation: 36
           velocity: 30
           velocityDeviation: 10
         
           ParticleMotionWander {
                 xvariance: 30
                 pace: 100
           }

       }

       Particles {
            y: 300
            x: 120
            width: 1
            height: 1
            source: "star.png"
            lifeSpan: 5000
            count: 200
            angle: 270
            angleDeviation: 45
            velocity: 50
            velocityDeviation: 30
           
            ParticleMotionGravity {
                  yattractor: 1000
                  xattractor: 0
                  acceleration: 25
            }

      }
}

Свойства объектов.

angle : real
angleDeviation : real

Эти свойства контролируют направление движения частиц. AngleDeviation рандомно изменяет направление в пределах указанного значения. Например, в этом примере создаются частицы, начальное направление которых может принимать значения от 15 градусов до 105:
 Particles {
     source: "star.png"
     angle: 60
     angleDeviation: 90
 }

  
count : int

Это свойство определяет максимально допустимое количество активных частиц. Элемент  Particles будет испускать частицы, пока не будет достигнуто это значение. Когда это число будет достигнуто, новые частицы испускаются не будут до тех пор, пока некоторые из активных частиц не  достигнут конца продолжительности их жизни. Если в качестве count указать "-1", тогда частицы будут испускаться бесконечно. Значение по умолчанию: 1. Если и count и emissionRate будут одновременно установлены в "-1", то частицы испускаться не будут.



emissionRate : int

Это свойство определяет, сколько частиц будет испускаться каждую секунду. Если emissionRate установлен в "-1", то частицы будут с такой скоростью, с которой позволяет оборудование. Значение по умолчанию для emissionRate: "-1". Если и count и emissionRate будут одновременно установлены в "-1", то частицы испускаться не будут.



emissionVariance : real

Это свойство устанавлиет, насколько случайной будет частота эмиссии частицы. Это - число между 0 (частота постояна) и 1 (максимальное колебание частоты). средняя частота задается emissionRate. Если emissionVariance будет 0, тогда частицы будут последовательно испускаться через равные промежутки времени. Если emissionVariance будет больше чем 0, то частицы будут испускаться беспорядочно. Обратите внимание, что даже с emissionVariance 0 может быть некоторое различие в частоте из-за ограничений аппаратных средств. Значение по умолчанию emissionVariance: 0.5



fadeInDuration : int
fadeOutDuration : int

Эти свойства устанавливают время возникновения частицы (fadeInDuration) и время её затухания (fadeOutDuration).
Значения по умолчанию: fadeInDuration - 200 миллисекунд, fadeOutDuration - 300 миллисекунд.



lifeSpan : int
lifeSpanDeviation : int

Эти свойства задают продолжительность жизни каждой частицы. Продолжительность жизни (lifeSpan) по умолчанию для частицы составляет 1000 миллисекунд. lifeSpanDeviation беспорядочно изменяет продолжительность жизни в пределах указанного значения. Например, следующий пример создает частицы, чья продолжительность жизни изменяется от 150 миллисекунд до 250 миллисекунд:
 Particles {
     source: "star.png"
     lifeSpan: 200
     lifeSpanDeviation: 100
 }

 
 
motion : ParticleMotion

Это свойсво устанавливает тип движения частиц. 
Тип движения по умолчанию - ParticleMotionLinear.



source : string

Это свойство задает путь до картинки, которая будет использована для создания частицы.



velocity : real
velocityDeviation : real

Это свойство контролирует ускорение частиц. velocityDeviation беспорядочно изменяет ускорение в пределах указанного изменения. Например, следующий код создает частицы, чьи начальные ускорения колеблются от 40 до 60:
 Particles {
     source: "star.png"
     velocity: 50
     velocityDeviation: 20
 }

 
Описание методов.

Particles::burst ( int count, int emissionRate )

Вызов метода инициирует взрыв частиц. Метод имеет два аргумента. Первый аргумент (count) - число частиц, которое будет создано при взрыве. Второй аргумент (emissionRate) - скорость взрыва. Если второй аргумент опущен, то его значение принимается равным "-1". 


Несколько идей применения Particle System на ваших формах:
- возгорание кнопки при наведении на нее мыши
- сгорание закладок при перемещении между ними
- на неактивных (затемненных) формах идет дождь, или снег

Есть еще идеи? Пишите в комменты, поделитесь с коллегами!


Источник: http://doc.qt.nokia.com/4.7/qml-particles.html
Категория: QML для профессионалов | Добавил: CYAN (21.07.2011) | Автор: C_Y_A_N E W
Просмотров: 3677 | Теги: QML Particle System, QtQuick.Particles, QtQuick, QML | Рейтинг: 5.0/1
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]

Категории раздела

Все статьи [0]
Обучение QML [8]
Статьи с базовой информацией о языке QML
Статьи по QML [6]
Статьи по QML
QML для профессионалов [4]
Статьи по QML-темам повышенной сложности
Ссылки на видео [5]
Ссылки на видео с демонстрацией возможностей QML
Ссылки на материалы по QML в интернете [2]
Ссылки на полезные материалы по QML в интернете
Обо всём [1]
Статьи на разные темы, не имеющие отношение к QML и QtQuick

Поиск на сайте

Облако тэгов

kinetic scroll анимация интерфейса кинетик скролл создание интерфейса path view qml видео демонстрация qml QML Component QML Grid Demo QML browser plugin просмотр QML форм QML signal QML Transition базовые типы QML QML Text пример QML экспорт qml из GIMP QML Rectangle color picker QML MouseArea qml export QML State экспорт QML из Photoshop QML QtQuick Web-browser Набор виджетов для QML статьи о QML на русском языке MeegoHarmattan N9/N950 game Sprite Animation GLSL fragment shader Qt Quick 2 Анимация Easing Easing curves Сглаживающие кривые C++ QGraphicsView Q_INVOKABLE Интеграция QML и C++ QML Particle System QtQuick.Particles QML Scene Graph javascript глобальные переменные Qt Mobility QtMultimediaKit map QtMobility.location Debian package Harmattan QtCreator D.U.C.K. H.U.N.T. QML пример

Статистика сайта

Статей: 26
Новостей: 6
Файлов: 10
Форум: 19/46
Коментариев: 6

Посетители

Полезные ресурсы

сайт Российского Qt сообщества The FRUCT program Российская сеть MeeGo пользователей и разработчиков