0

私の Windows Phone 7 アプリケーションには、メインCanvasコントロールのあるページがあります。サイズが 640x480 の5 つImageのレイヤーが含まれており、ある程度の透明度があり、上下に積み重ねられています。

最初に、アプリケーションは加速度計からの情報を読み取り、X;Y;Z の更新ごとに画像を異なる位置に移動します。

Canvas.SetLeft(element, position)とメソッドを使用して、次のCanvas.SetTop(element, position)ように各レイヤーを個別に移動します。

void accelSensor_CurrentValueChanged(object sender, SensorReadingEventArgs<AccelerometerReading> e)
{
   accelReading.X = (float)e.SensorReading.Acceleration.X;
   accelReading.Y = (float)e.SensorReading.Acceleration.Y;
   accelReading.Z = (float)e.SensorReading.Acceleration.Z;

   /* do some math... */

   this.Dispatcher.BeginInvoke(delegate()
   {
      for (var i = 0; i < MainCanvas.Children.Count; i++)
      {
         Canvas.SetLeft(MainCanvas.Children[i], /* some value... */));
         Canvas.SetTop(MainCanvas.Children[i], /* some value... */));
      }
   });
}

問題は、GUI の更新が非常に遅いことです... オブジェクトは 1 秒に 1 回のように位置を変更します。間違った方法を実装しましたか? FPS を失わずに画像を頻繁に移動する正しい方法は何ですか? 本当に XNA に切り替える必要がありますか?

4

1 に答える 1