2014-04-01 23 views
1

我有以下方法,当我的应用程序中的手势匹配时被调用,但计数器只在该方法内增加一次,因此每次追加匹配后,初始匹配不会增加计数器和标签。有人可以看到,如果这是我的反逻辑逻辑中的缺陷,或者我应该以不同的方式实施计数器?递增一个手势匹配的分数计数器

这是我目前的解决方案只增加在第一场比赛:

void matcher_GestureMatch(Gesture gesture) 
     { 
      int scoreCntr = 0; 
      lblGestureMatch.Content = gesture.Name; 
      scoreCntr++; 

      var soundEffects = Properties.Resources.punchSound; 
      var player = new SoundPlayer(soundEffects); 
      player.Load(); 
      player.Play(); 

      lblScoreCntr.Content = scoreCntr; 

     } 
+0

它不仅在第一次匹配时增量,它总是将'scoreCntr'设置为零,增加它,然后将该值(总是一个)赋值给'lblScoreCntr.Content'。 – 48klocs

回答

2

您重置每次运行方法时,你的计数为0。最快的修复方法是在方法之外声明变量:

int scoreCntr = 0; 
void matcher_GestureMatch(Gesture gesture) 
{ 
    lblGestureMatch.Content = gesture.Name; 
    scoreCntr++; 

    var soundEffects = Properties.Resources.punchSound; 
    var player = new SoundPlayer(soundEffects); 
    player.Load(); 
    player.Play(); 

    lblScoreCntr.Content = scoreCntr; 
} 
1

您需要将scoreCntr移出方法的范围。这种方法运行时,它只是“活着”的,所以你想在它所处的类的生命周期中保持活跃。下面是一个例子:

private int scoreCntr = 0; 

    void matcher_GestureMatch(Gesture gesture) 
    { 
     lblGestureMatch.Content = gesture.Name; 
     Interlocked.Increment(ref scoreCntr); 

     var soundEffects = Properties.Resources.punchSound; 
     var player = new SoundPlayer(soundEffects); 
     player.Load(); 
     player.Play(); 

     lblScoreCntr.Content = scoreCntr; 
    }