2012-09-28 28 views
15

में मैं निम्नलिखित कोड है:स्वाइप अप, स्वाइप नीचे, बाएं स्वाइप और दाईं ओर स्वाइप जेस्चर संभाल एक 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"); 
} 

लेकिन मैं कैसे हेरफेर घटनाओं का उपयोग करने पर पता नहीं है। क्या आप किसी का वर्णन कर सकते हैं कि इशारा कैसे करें, नीचे, बाएं और दाएं स्वाइप करें?

+1

मैंने विनरेट जेस्चर के साथ काम नहीं किया है, लेकिन एमएसडीएन में एक त्वरित झलक मैं डरता हूं कि आप 'डेल्टा' (या अन्य) घटनाओं के दौरान तर्कों के विभिन्न गुणों तक पहुंच सकते हैं। उदाहरण के लिए 'मैनिपुलेशन डेलटा रूटेडएवेंट आर्ट्स। वेलोसिटीज' में उपयोगकर्ता से दिशा/कोणीय/स्केलिंग इनपुट से संबंधित डेटा का एक सेट है। मैं यह नहीं कह सकता कि वह "वह" है जिसे आप देखना चाहते हैं, लेकिन शायद यह आपको एक शुरुआत देगा। –

उत्तर

21

मैनिपुलेशन ईवेंट आपको अनुवाद मान प्रदान करते हैं। मैनिपुलेशन डेल्टा लगातार तब तक आग लग जाएगा जब तक आपके हेरफेर जड़त्व के साथ पूरा न हो जाए। इस घटना में जांच करें कि क्या चाल जड़ है, (एक सामान्य चाल को स्वाइप के रूप में नहीं माना जाना चाहिए) और प्रारंभिक और वर्तमान स्थिति के बीच अंतर का पता लगाएं।

एक बार यह सीमा तक पहुंचने के बाद, ऊपर/नीचे/बाएं/दाएं ईवेंट को स्वाइप करें। और बार-बार एक ही घटना को फायरिंग से बचने के लिए तुरंत हेरफेर को रोकें।

के बाद कोड आपकी मदद करेगा,

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(); 
      } 
     } 
    } 
+3

कई घटनाओं की कोई आवश्यकता नहीं है। बस 'e.Cumulative.Translation.X' का उपयोग करें। –

4

मैं XAML प्रेमी द्वारा जवाब करने की कोशिश की है, लेकिन यह मेरे लिए सही नहीं था (IsIntertial मुझे हमेशा के लिए झूठी वापस आ गया)। मैंने कुछ अलग करने की कोशिश की थी (मैंने किसी भी विषय के लिए Handling Swipe Guesture in Windows 8 Grid) से संबंधित विषय की पिछली पोस्ट को उत्तर दिया।

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^