2012-08-10 73 views
3

我有Silverlight/XNA应用程序,我在其中添加了GestureListener以进行图像控制。在XNA我有一个游戏。如何删除或配置GestureListener WP7

游戏工作正常,直到我去Silverlight部分并将GestureListener添加到图像。之后,当我回到游戏时,它落后了。

我检查过,只有在将Silverlight中的GestureListener添加到图像后,游戏才会启动滞后。

Image newTroll = new Image(); 
newTroll.Stretch = Stretch.None; 
newTroll.Source = image; 

newTroll.Margin = new Thickness(10,10,0,0); 
newTroll.RenderTransformOrigin = new Point(0.5, 0.5); 
newTroll.CacheMode = new BitmapCache(); 
newTroll.RenderTransform = new CompositeTransform(); 
newTroll.MouseEnter += new MouseEventHandler(newTroll_MouseEnter); 

var gestureListener = GestureService.GetGestureListener(newTroll); 

gestureListener.PinchStarted += new EventHandler<PinchStartedGestureEventArgs>(gestureListener_PinchStarted); 
gestureListener.PinchDelta += new EventHandler<PinchGestureEventArgs>(gestureListener_PinchDelta); 
gestureListener.PinchCompleted += new EventHandler<PinchGestureEventArgs>(gestureListener_PinchCompleted); 

gestureListener.DragStarted += new EventHandler<DragStartedGestureEventArgs>(gestureListener_DragStarted); 
gestureListener.DragDelta += new EventHandler<DragDeltaGestureEventArgs>(gestureListener_DragDelta); 
gestureListener.DragCompleted += new EventHandler<DragCompletedGestureEventArgs>(gestureListener_DragCompleted); 

我已经搜查,但没有找到这个问题的任何解决方案

更新

我刚才读这真的让我很困惑

“的内部开发人员报告说,显然GestureService有一个静态的订阅Touch.FrameReported事件,它在每个TouchPoint上都做了很多处理。

但是它似乎从不退订该活动,所以即使您不再主动使用该服务,您也总是为此付费。“

+0

同样的问题在这里。 – 2013-01-13 16:14:29

+0

链接到msdn上的线程:http://social.msdn.microsoft.com/forums/en-us/wpdevelop/thread/ba8bfef3-44a2-4e63-bded-97013e38772e/ – 2013-01-13 16:58:31

回答

2

您是否尝试在适当的时候使用“ - =”来取消事件?

+1

尝试将其放入以下方法: 保护覆盖无效OnNavigatedFrom(System.Windows.Navigation.NavigationEventArgs e) { base.OnNavigatedFrom(e); //删除监听器 } – Lelezeus 2013-06-18 15:40:35