Russian Qt Forum

Qt => Qt Quick => Тема начата: kuzulis от Февраль 18, 2015, 19:21



Название: PathView и "безрывковая" анимация при изменении индекса.
Отправлено: kuzulis от Февраль 18, 2015, 19:21
Всем доброго времени.

Нужно сделать такую анимацию чтобы PathView непрерывно "крутился" (шел перебор айтемов) в течении некоторого времени,
а потом останавливался. При этом, в начале оно должно крутиться быстро, а потом все медленнее и медленнее пока не остановится.

Бьюсь целую неделю, а результата не достиг, пробовал так:

1. Повесить вызов incrementCurrentIndex() на таймер. Но тут рывками оно перемещается, а надо плавно.
Параметр highlightMoveDuration особо ничего не дал.

2. Пробовал повесить NumberAnimation на currentIndex - тоже ничего не дает..

3. Пробовал повесить SmoothAnimation - то вообще не то что-то..

В общем, есть кто гуру QML-а? Может кто что подсказать? :)


Название: Re: PathView и "безрывковая" анимация при изменении индекса.
Отправлено: kambala от Февраль 18, 2015, 19:31
может проще в нативняк спрыгнуть и обертку написать? в иос такое поведение по умолчанию к примеру. или речь не о мобильных платформах?


Название: Re: PathView и "безрывковая" анимация при изменении индекса.
Отправлено: kuzulis от Февраль 18, 2015, 22:44
> может проще в нативняк спрыгнуть и обертку написать?

Не, нативняк не вариант.. долго буду ковыряться.

> или речь не о мобильных платформах?

Нет, используется Win8.

UPD: Вставлю код, о котором веду речь:

Код
Java
import QtQuick 2.4
 
PathView {
   id: view
 
   width: 320; height: 480
 
   pathItemCount: 3
   preferredHighlightBegin: 0.5
   preferredHighlightEnd: 0.5
 
   highlightMoveDuration: 0 /// <<< это не дает "мягкого эФФекта"
   offset: 1 /// <<< это вообще ни на что не влияет.
 
   model: 4
 
   delegate: Item {
       width: view.width; height: view.height / 3.0
 
       Text { anchors.centerIn: parent; text: index }
 
       Rectangle {
           anchors.left: parent.left; anchors.right: parent.right;
           height: 2; radius: 1; color: "darkblue"
       }
   }
 
   path: Path {
       id: path
       startX: view.width / 2
       PathLine { x: path.startX; y: view.height }
   }
 
   Timer {
       interval: 200; running: true; repeat: true
       onTriggered: view.incrementCurrentIndex()
   }
}