Inércia de manipulação sempre zero no Windows Phone 8.1
-
26-12-2019 - |
Pergunta
Estou escrevendo um aplicativo universal e preciso processar a inércia de manipulação em ManipualtionDelta corretamente.Obtenho valores normais durante a manipulação, MAS a parte inercial é sempre zero (rotação e translação).Parece que isso acontece apenas no Windows Phone, já que no Windows 8.1 parece bom.Para evitar perguntas, defino ManipulationModes.All.
Solução
Eu testei.A inércia certamente está presente no 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>
Com isso:
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;
}
Não tenho certeza do problema.Espero que meu código ajude.
Boa sorte!
Outras dicas
Não use Delta.Translation sob inércia.É um valor calculado, dependente do tempo decorrido desde a execução do evento anterior.Freqüentemente, o primeiro é (0,0).
Em vez disso, faça algo assim
if (e.IsInertial) {
ComputeMyOwnInertia(e.Velocities)
e.Complete(); // no more inertial events
}
As velocidades estão em LPX/ms (pixels lógicos por milissegundo) multiplique -o por ~ 400 para obter uma estimativa em que a inércia o traria.
Os seguintes itens não são suportados na plataforma Windows Phone:
- A propriedade ISManipulaçãoLabled não é suportada.Eventos de manipulação são ativados por padrão no Windows Phone.
- rotacionam transformações não são suportadas.
- eventos de inércia não são suportados.
http://technet.microsoft.com/pt-us / windows / ff426933 (v= vs.96)