web-dev-qa-db-ja.com

WinRTアプリで上にスワイプ、下にスワイプ、左にスワイプ、右にスワイプのジェスチャーを処理する

私は次のコードを持っています:

public MainPage()
{
    this.InitializeComponent();
    this.ManipulationStarting += MainPage_ManipulationStarting;
    this.ManipulationStarted += MainPage_ManipulationStarted;
    this.ManipulationInertiaStarting += MainPage_ManipulationInertiaStarting;
    this.ManipulationDelta += MainPage_ManipulationDelta;
    this.ManipulationCompleted += MainPage_ManipulationCompleted;
}
void MainPage_ManipulationStarting(object sender, ManipulationStartingRoutedEventArgs e)
{
    Debug.WriteLine("MainPage_ManipulationStarting");
}
void MainPage_ManipulationStarted(object sender, ManipulationStartedRoutedEventArgs e)
{
    Debug.WriteLine("MainPage_ManipulationStarted");
}
void MainPage_ManipulationInertiaStarting(object sender, ManipulationInertiaStartingRoutedEventArgs e)
{
    Debug.WriteLine("MainPage_ManipulationInertiaStarting");
}
void MainPage_ManipulationDelta(object sender, ManipulationDeltaRoutedEventArgs e)
{
    Debug.WriteLine("MainPage_ManipulationDelta");
}
void MainPage_ManipulationCompleted(object sender, ManipulationCompletedRoutedEventArgs e)
{
    Debug.WriteLine("MainPage_ManipulationCompleted");
}

しかし、操作イベントの使用方法についてはわかりません。誰かが上、下、左、右にスワイプするジェスチャーを処理する方法を説明できますか?

15
Elmo

操作イベントは、変換値を提供します。マニピュレーションデルタは、慣性とともに操作が完了するまで継続的に発砲します。このイベントでは、動きが慣性であるかどうかを確認し(通常の動きはスワイプと見なされるべきではありません)、初期位置と現在位置の違いを検出します。

しきい値に達したら、上/下/左/右にスワイプイベントを発生させます。同じ操作が何度も発生しないように、操作をすぐに停止してください。

次のコードはあなたを助けるでしょう、

    private Point initialpoint;

    private void Grid_ManipulationStarted_1(object sender, ManipulationStartedRoutedEventArgs e)
    {
        initialpoint = e.Position;
    }

    private void Grid_ManipulationDelta_1(object sender, ManipulationDeltaRoutedEventArgs e)
    {
        if (e.IsInertial)
        {
            Point currentpoint = e.Position;
            if (currentpoint.X - initialpoint.X >= 500)//500 is the threshold value, where you want to trigger the swipe right event
            {
                System.Diagnostics.Debug.WriteLine("Swipe Right");
                e.Complete();
            }
        }
    }
22
Jawahar

私はXAML愛好家の答えを試してみましたが、私にはそれほど正確ではありませんでした(IsIntertialは常に間違って戻ってきました)。私は別の何かを試したい人のために別の何かを実装しました(ここで関連トピックの以前の投稿に返信しました Windows 8グリッドでのスワイプゲスト操作の処理 )。

4
drcoderz

GestureRecognizer 。CrossSlidingイベントを見てください。 EdgeGesture クラスとサンプルもあります: EdgeGesture samplegestures sample

2
maxim pg