2015-11-27 5 views
1

У меня есть флип, который я хочу привязать к определенным позициям (которые я вычисляю определенным образом). Я вижу два варианта:Как предсказать хорошую позицию для привязки движущихся объектов в QML

  1. в movementEnded я привязываюсь к ближайшей позиции к «contentX» с номером анимацией в flickEnded
  2. Я оснастка до ближайшей позиции к «contentX» с номером анимацией

Вариант 1 выглядит нехорошо, движение останавливается, и после этого движущееся движение снова начинает двигаться (позиции привязки на расстоянии половины экрана).

В Варианте 2 я затрудняюсь с выбором положения защелки. Если пользователь скользит с быстрым движением, я предпочел бы привязываться к позиции, близкой к позиции, где движение закончится, но это трудно предсказать.

Вот пример кода для варианта 1:

NumberAnimation on contentY { 
     id: yAnimation 
     to: 0 
     duration: 200 
    } 
onMovementEnded: { 
     var index = Math.round(contentY/(itemHeight)) 
     yAnimation.to = index * itemHeight 
     yAnimation.start() 
} 
+1

Что делает ваш код выглядит как? Похоже, вы знаете, что вам нужно делать (вариант 2), но у вас пока нет правильной формулы. Если вы покажете нам, как вы пытаетесь предсказать движение, мы можем вам помочь. Как всегда, минимальный, полный пример означает, что вы получите больше ответов. – Mitch

ответ

2

В варианте 2 я считаю выбор оснастки позиции трудно. Если пользователь слайдов с быстрым движением, я бы предпочел защелкнуться на позицию рядом с положением, где движение закончится, но это сложно для прогнозирования.

У вас есть свойства для горизонтальной и вертикальной скорости, так что из тех, кого вы можете рассчитать скорость соединения, есть еще один

property bool aboutToStop: horizontalVelocity + verticalVelocity < thresholdValue

и

onAboutToStopChanged: if (aboutToStop) playASnapAnimationToTheNearestItem()

 Смежные вопросы

  • Нет связанных вопросов^_^