Инерция манипулирования всегда нулевой в Windows Phone 8.1
-
26-12-2019 - |
Вопрос
Я пишу универсальное приложение и нужно правильно обрабатывать инерцию манипулирования в манипукциидельте.Я получаю нормальные значения при манипулировании, но инерционная часть, а затем всегда ноль (как вращение, так и перевод).Он шворует, что это происходит только в Windows Phone, так как в Windows 8.1 он швы хорошо. Чтобы предотвратить вопросы, я устанавливаю ManipultulsModes.all.
Решение
Я проверил это.Inertia, безусловно, присутствует в Windows Phone 8.1
<Grid>
<Ellipse Width="100"
Height="100"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Fill="White"
ManipulationDelta="Ellipse_ManipulationDelta"
ManipulationMode="All">
<Ellipse.RenderTransform>
<CompositeTransform />
</Ellipse.RenderTransform>
</Ellipse>
</Grid>
.
с этим:
private void Ellipse_ManipulationDelta(object sender, ManipulationDeltaRoutedEventArgs e)
{
var trasnform = (sender as FrameworkElement).RenderTransform as CompositeTransform;
trasnform.TranslateX += e.Delta.Translation.X;
trasnform.TranslateY += e.Delta.Translation.Y;
}
.
Не уверена проблема.Надеюсь, мой код поможет.
удачи!
Другие советы
Не используйте Delta.translation при инерции.Это вычисляемое значение, зависящее от количества времени, прошедшего, поскольку предыдущее событие было запущено.Так часто первый - это (0,0).
вместо этого сделать что-то вроде этого
if (e.IsInertial) {
ComputeMyOwnInertia(e.Velocities)
e.Complete(); // no more inertial events
}
.
Скорость находится в LPX / MSEC (логические пиксели от милисекунды) Умножьте его на ~ 400, чтобы получить оценку, когда инерция принесет вас.
Следующие элементы не поддерживаются на платформе Windows Phone:
- .
- Свойство ISMANIPULTULSELADED не поддерживается.Мероприятия манипуляции включены по умолчанию на Windows Phone.
- Поворотные преобразования не поддерживаются.
- Инерционные события не поддерживаются.
http://technet.microsoft.com/EN-US / Windows / FF426933 (v= vs.96)