0

こんにちは、私はwp7のシルバーライトで簡単なドラムマシンアプリケーションを作成しようとしています。私は、2つの異なる場所で画面を同時にタップしたとき(またはほぼ同じ時刻)に、その場所の1つが検出されていない時間の約60%を見ています。一部のマルチタッチ位置がwp7シルバーライトで検出されていません

私は、以下のように開始された操作上のイベントを発生させるためにLayoutrootグリッドを配線しました。この問題は、ハイハットに割り当てられた画面のセクションとキックドラムに割り当てられた画面のセクション、またはスネアの両方を同時に押したときの約60%の時間ですタッチパネルに取り込まれます。

私はLG optimus実行マンゴーでテストしています。どのようにこの問題を回避するためのアイデア?イベントを起こす代わりにポーリングを行うと良い結果が得られるでしょうか? Silverlightアプリケーションではなく、XNAゲームとしてこのアプリケーションを作成する方がいいですか?どんな助けやアイデアも高く評価されます。

<Grid x:Name="LayoutRoot" Background="Transparent" ManipulationStarted="LayoutRoot_ManipulationStarted"> 
+0

それは、この問題を修正する代わりに引き上げイベントのポーリングが判明します。 – Chris

答えて

1

リストボックスアイテムとコンテキストメニューで同様の問題が発生しました。 私はこのようにそれを修正:

このイベントは、常に上げ100%であるのMouseLeftButtonDown = "LayoutRoot_MouseLeftButtonDown" に

をごrootframteを取り付けます。

イベントのポイントclickPoint = e.GetPosition(null);

これらのスクリーン座標に配置されているオブジェクトがある場合は、そのオブジェクトを特定します。

以下は、リストボックス項目を識別するコードです。あなたがあなた自身のUIオブジェクトとそれを使用することができます。

 ListBoxItem listBoxItem = null; 
     List<UIElement> listControls = (List<UIElement>)VisualTreeHelper.FindElementsInHostCoordinates(clickPoint , this); 
     foreach (UIElement ctrl in listControls) 
     { 
      if (ctrl is ListBoxItem) 
      { 
       listBoxItem = (ListBoxItem)ctrl; 
       break; 
      } 
     } 
     //get the index of the selected listboxitem. 
     ListBox view = ItemsControl.ItemsControlFromItemContainer(listBoxItem) as ListBox; 

乾杯を、 ヴラド

関連する問題