手势FreeDrag性能

问题描述:

我有一个简单的问题,我想为Windows Phone制作一个巨大的游戏,但我仍然有一个重要的瓶颈/问题/糟糕的表现。手势FreeDrag性能

我已经使用了芒果轮廓仪,但我没有看到任何问题,事实上,它只使用了我手机上10%的CPU。

让我告诉你这个问题。

这是我更新

protected override void Update(GameTime gameTime) 
    { 
     if (TouchPanel.IsGestureAvailable) 
     { 
      var gs = TouchPanel.ReadGesture(); 
      switch (gs.GestureType) 
      { 
       case GestureType.FreeDrag: 
        Position += gs.Delta; 
        break; 
      } 
     } 
     base.Update(gameTime); 
    } 

这是我的绘制,其中地图是一个20×15的Texture2D

protected override void Draw(GameTime gameTime) 
    { 
     GraphicsDevice.Clear(Color.CornflowerBlue); 

     spriteBatch.Begin();   
     spriteBatch.Draw(map, Position, null, Color.Red, 0f, Vector2.Zero, 1f, SpriteEffects.None, 1f); 
     spriteBatch.End(); 

     base.Draw(gameTime); 
    } 

的问题是,似乎平局是太慢了UPDATE或还挺的。

例如:

1)I在屏幕上拖动的权利,非常缓慢 - >的地图纹理被正确地移动在右侧

2)I在屏幕上拖动的权利,则上左侧,相当快 - >地图纹理在右侧正确移动,但在左侧移动时有点滞后,就像它仍然在右侧移动一样..

3)我拖动屏幕循环制作在1秒内循环 - >好了,地图需要3秒钟循环移动..

我做错了什么?

我应该向你展示一个YouTube视频吗?

非常感谢你! Luca

固定!

这真是太笨..

可能发生,我们在抽签前的同一时间的多点触摸,所以我们必须把时间,而不是如果

if (TouchPanel.IsGestureAvailable) 

则将

while (TouchPanel.IsGestureAvailable) 

现在它就像一个魅力!

我希望这会对可能有同样问题的人有帮助